⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 relationship.h

📁 有计算机图形学、图像处理、dbms、sniffer、中游俄罗斯外挂、othello、遗传算法、舌苔分析等程序。
💻 H
字号:
// Relationship.h: interface for the Relationship class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_RELATIONSHIP_H__D4A30FA0_F036_481F_A58F_2E1A2EA4AD4A__INCLUDED_)
#define AFX_RELATIONSHIP_H__D4A30FA0_F036_481F_A58F_2E1A2EA4AD4A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Record.h"
#include "Attribute.h"
#include "SchemaFile.h"
#include "BTNODE.h"
#include "BplusTree.h"
#include "MultiIdx.h"
#include "Update.h"
#include "Buffer.h"
#include "Condition.h"
#include "HashTable.h"
#include "NormalForm.h"
#include "MergeTree.h"
class CResult;
class CUpdate;
class CAttribute;
class CBplusTree;
class CMultiIdx;
class CCondition; 
class CHashTable;
class CNormalForm;
class Relationship  
{
public:
	CString name;
	WORD length;
	BYTE name_length;
	int time;//时间戳
	UINT ID;
	BYTE wtag;
    CAttribute *at;
	
	WORD attr_num;
	UINT DataFileNo;
    
	WORD idx_num;
	PDB db_addr;
	UINT IndexMainFile;

    UINT rcd_len;//辅助
    CBplusTree *tree;
	
	BTNODE *CurNode;//当前读到的叶结点
	UINT CurNo;//当前读到的叶结点中的号或缓冲区的号
	BYTE enddb;//数据库是否已读完
	PDB CurDbPtr;//当前记录的数据库地址
	CBuffer *buffer;//当前正在读的缓冲
	
	WORD MultiNum;
	CMultiIdx *MultiIdx;
public:
	BOOL CheckUpdateData(CUpdate &update);
	void CreateIndex(WORD AttrNo);
	BOOL CreateMulIndex(CString AttrName1,CString AttrName2,BOOL Dup);
	BOOL CreateIndex(CString AttrName);
	void Display(CBuffer *buffer,CString *shd,WORD OrderAttrNo,bool bDistinct
		,CListCtrl &List);
	CBuffer * SelectRecord(CNormalForm &form);
		
	void DeleteRecord(CBuffer *buffer);
	BOOL InsertRecord(Record *rcd);
	void AutoIndex(WORD AttrNo);
	Record * NextUnion(CHashTable &HashTable,Relationship *R2,BYTE *mask1,BYTE *mask2
		              ,BOOL distinct,CBuffer *buf1,CBuffer *buf2);
	void SetCurBuffer(CBuffer *buffer);
	Record * Connect(Relationship *R2,WORD AttrNo1,WORD AttrNo2,BOOL cmp,Record *&rcd1);
	CBuffer * SelectByIndex(CNormalForm &ApForm);
	Record * SelectNext(CNormalForm &form,CBuffer *buf);
	BOOL UpdateRecord(CBuffer *buffer,CUpdate &update);//目前只能作到"buffer与"
	BOOL CheckRcdKey( Record *rcd,CUpdate *update=NULL);
	Record * NextFitDelete(CBuffer *buffer);
	void Reset();
	BOOL CheckUpdateKey(CResult *res,KEY *k,const CUpdate *up=NULL);
	WORD AttrNameToAttrNo(CString AttrName);
	BOOL CheckRcdKey(CResult *res,KEY *k,Record *rcd,CUpdate *update=NULL);
	void AddMultiIdx(CMultiIdx mul);
	CResult * SearchRecord(WORD AttrNo,CString AttrValue,KEY &k);//字段未建索引,返回NULL,此时k是错的
	Relationship(CString n,WORD an);
	Record * NextRecord(bool bAccordBuffer);
	void WriteBack();
	WORD GetHeadLength();

	Relationship();
	Relationship(CString n,UINT id,WORD an,UINT FN,int t);
//	Relationship(CMemFile cmf);
	
	void AddAttribute(USHORT index,CAttribute &a);
	virtual ~Relationship();

    UINT GetRecordLength();
private:
	void Split(CNormalForm &Form,CNormalForm &ApForm);
};

#endif // !defined(AFX_RELATIONSHIP_H__D4A30FA0_F036_481F_A58F_2E1A2EA4AD4A__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -