miniSQL的策划
一个小型access 问题点数:100、回复次数:4Top
1 楼_Freemanhu(阿人)回复于 2002-07-29 09:25:26 得分 100
User Interface
|
SQL Interpreter
|
Index Manager --- Table Manager
|
Strorage Manager -------Buffer Manager
|
File Manger
Top
2 楼_Freemanhu(阿人)回复于 2002-07-29 09:33:02 得分 0
typedef struct Result
{
unsigned int operation;
std::string tablename;
std::string condition;
std::string subcondition;
unsigned int addor;
std::vector <element> column;
std::vector <CAttribute> attribute;
std::string set;
}SQLResult;
class CInterpreter
{
char* m_szSQLString;
unsigned m_nStringLength;
SQLResult m_SQLResult;
bool m_bError;
public:
bool GetError()const;
CInterpreter(const char* SQLString);
const SQLResult GetSQLResult();
CInterpreter();
virtual ~CInterpreter();
private:
bool SetColumn();
bool SetValue();
bool SetSet();
bool SetAttribute();
bool SetCondition();
bool SetFunction();
bool SetOperation();
bool Standardization(const char *SQLString);
bool SetTable();
};Top
3 楼StarfishXu(猫猫)回复于 2002-07-29 09:33:03 得分 0
User Interface
|
SQL Interpreter
|
Index Manager --- Table Manager//这个干嘛的?
|
Strorage Manager -------Buffer Manager
|
File Manger
Top
4 楼_Freemanhu(阿人)回复于 2002-07-29 09:37:15 得分 0
功能: 负责表格的建立、查找、插入、删除、更新等操作
CTableMangager的结构:
class CTableManager //一个对象控制一张表
{
string TableName,FileName; //表名和文件名(表名+“.msql”)
CAttribute Attributes[256]; // 储存属性名字和数据类型
unsigned int TupleNum; //元组总数 初始值为0
unsigned int AttNum; // 属性的个数
unsigned int TupleStartPos; // 文件中开始存放元组的起始位置
CCommonType NullCCommonType; // 空的CCommonType对象
CCommonType* pTemTuple; // 临时存放一条记录
unsigned int FirstDeletedTuple; //第一个被delete的元组的位置
unsigned int DeletedTuples; // deleted 元组的总数
unsigned int AttSize; // 一个属性需要的字节数
unsigned int TupleSize; // 一个元组需要的字节数
CIndexManager Index; // 索引
bool WriteTuple(unsigned int startpos,const CCommonType* pTuple);// 将一条元组写入文件
bool WriteStruct(); // 在文件中保存表的结构(属性名称与数据类型)
bool ReadStruct(); // 从文件中读入表的结构
unsigned int GetFirstDeletedTuple(); // 读取第一个deleted 元组
public:
CTableManager(); // 构造函数
~CTableManager(); // 析构函数
bool SetTableName(const string& strTableName);// 设置表的名字,如果该文件存在则返回false 否则返回true
bool CreateTable(const string& strCreateInfo);// 如果表格对应文件不存在则创建表格,存在则打开该文件
unsigned int GetAttribCount() const ; // 返回属性个数
unsigned int GetTupleCount() const ; // 返回元组个数
string GetAttribName(unsigned int nAttribNum) const ;// 返回第 nAttribNum 个属性的名字
string GetTableName()const ; // 返回表名
const CCommonType* GetTuple(unsigned int nTupleNum) const ;// 返回 nTupleNum-th 元组值
bool Insert(const CCommonType* pTuple); // 在表中插入一条元组
bool Delete(unsigned int nTupleNum); // 删除 nTupleNum-th 元组
bool Search(const string& strExpression, unsigned int* nTuple); // 搜索表,满足条件元组的记录号放在 nTuple数组中
bool Update(unsigned int nTupleNum, const CCommonType* pNewRecord); // 用 pNewRecord 更新nTupleNum-th 元组
CCommonType GetAttrib(unsigned int nTupleNum, unsigned int nAttribNum) const; // 返回nTupleNum_th 元组中nAttribNum_th 属性值
CCommonType GetAttrib(unsigned int nTupleNum, const std::string& strAttribName) const; // 返回nTupleNum_th 元组中名字为strAttribName属值
bool Drop(); // 删除表格
unsigned int GetAttribNum(const char* strAttribName) const; //根据strAttribName返回这是第几个属性。
DATATYPE GetAttribType(unsigned int nAttribNum) const;// 返回nAttribNum_th 属性的数据类型
};
实现CTableManager的功能,主要分为两部分。
 表格的结构(包括属性的个数、名称和数据类型)在文件中的存贮和读取。
 元组在文件中的存贮。对元组的插入和删除的实现。
Top
5 楼_Freemanhu(阿人)回复于 2002-07-29 09:41:44 得分 0
功能: 负责表格的建立、查找、插入、删除、更新等操作
CTableMangager的结构:
class CTableManager //一个对象控制一张表
{
string TableName,FileName; //表名和文件名(表名+“.msql”)
CAttribute Attributes[256]; // 储存属性名字和数据类型
unsigned int TupleNum; //元组总数 初始值为0
unsigned int AttNum; // 属性的个数
unsigned int TupleStartPos; // 文件中开始存放元组的起始位置
CCommonType NullCCommonType; // 空的CCommonType对象
CCommonType* pTemTuple; // 临时存放一条记录
unsigned int FirstDeletedTuple; //第一个被delete的元组的位置
unsigned int DeletedTuples; // deleted 元组的总数
unsigned int AttSize; // 一个属性需要的字节数
unsigned int TupleSize; // 一个元组需要的字节数
CIndexManager Index; // 索引
bool WriteTuple(unsigned int startpos,const CCommonType* pTuple);// 将一条元组写入文件
bool WriteStruct(); // 在文件中保存表的结构(属性名称与数据类型)
bool ReadStruct(); // 从文件中读入表的结构
unsigned int GetFirstDeletedTuple(); // 读取第一个deleted 元组
public:
CTableManager(); // 构造函数
~CTableManager(); // 析构函数
bool SetTableName(const string& strTableName);// 设置表的名字,如果该文件存在则返回false 否则返回true
bool CreateTable(const string& strCreateInfo);// 如果表格对应文件不存在则创建表格,存在则打开该文件
unsigned int GetAttribCount() const ; // 返回属性个数
unsigned int GetTupleCount() const ; // 返回元组个数
string GetAttribName(unsigned int nAttribNum) const ;// 返回第 nAttribNum 个属性的名字
string GetTableName()const ; // 返回表名
const CCommonType* GetTuple(unsigned int nTupleNum) const ;// 返回 nTupleNum-th 元组值
bool Insert(const CCommonType* pTuple); // 在表中插入一条元组
bool Delete(unsigned int nTupleNum); // 删除 nTupleNum-th 元组
bool Search(const string& strExpression, unsigned int* nTuple); // 搜索表,满足条件元组的记录号放在 nTuple数组中
bool Update(unsigned int nTupleNum, const CCommonType* pNewRecord); // 用 pNewRecord 更新nTupleNum-th 元组
CCommonType GetAttrib(unsigned int nTupleNum, unsigned int nAttribNum) const; // 返回nTupleNum_th 元组中nAttribNum_th 属性值
CCommonType GetAttrib(unsigned int nTupleNum, const std::string& strAttribName) const; // 返回nTupleNum_th 元组中名字为strAttribName属值
bool Drop(); // 删除表格
unsigned int GetAttribNum(const char* strAttribName) const; //根据strAttribName返回这是第几个属性。
DATATYPE GetAttribType(unsigned int nAttribNum) const;// 返回nAttribNum_th 属性的数据类型
};
实现CTableManager的功能,主要分为两部分。
 表格的结构(包括属性的个数、名称和数据类型)在文件中的存贮和读取。
 元组在文件中的存贮。对元组的插入和删除的实现。
Top




