⽤CC++开发⼀个DBMS??没头绪
怎么⽤C/C++开发⼀个DBMS??没头绪,⼤家给点提⽰,急
zjiong(TNT) 2005-12-20 23:10:51 在 C/C++ / C++ 语⾔ 提问
要求完成以下⼏个功能模块:
1. 数据存储结构的设计与管理
1)要求设计表构造模式及其在数据库⽂件中的存储结构,最后在⾃选的软件平台上建⽴能创建、查看表构造模式的⽤户界⾯。
先⾃定义表构造模式的结构,然后将其存放到⾃定义存储结构的数据库⽂件(.dbf⽂件)中,要求能在⼀个数据库⽂件中存放多张不同的表,并能查看各表的字段结构内容。
(提⽰表构造模式包括字段名、类型、字长、是否为KEY键、是否允许为NULL。考虑到以后对表的操作可以预留⼀些字段。)
2)要求设计记录在数据⽂件中的存储结构形式,并在⾃选的软件平台上建⽴⽤户界⾯来添加新记录到数据⽂件中,并能查看数据⽂件中的记录内容。
根据从1)中数据库⽂件(.dbf⽂件)中抽取的有关表的构造模式信息,将记录存放到⾃设计存储格式的数据记录⽂件(.dat⽂件)中,要求能存放不同的多张表的记录内容,能查看不同表的记录内容。
2. 数据定义语⾔与操作语⾔的实现
3) 数据定义语⾔(DDL)的实现。
实现定义表模式结构,并能修改表结构的语句。
要求实现:定义表(Create Table); 修改表(Edit Table、Rename Table、Delete Table);
4) 数据操纵语⾔(DML)实现。
实现记录数据的插⼊、删除和修改。
要求实现:数据的插⼊(Insert)、删除(Delete)、修改(Edit)。
3. 数据库复杂查询实现
5)实现数据库单表、多表的选择、投影、连接查询。(要求实现:Select 条件查询)
三、提⽰
1. 数据存储结构的设计与管理
1.1设计表构造模式及其在数据库⽂件中的存储结构。
要求能在⼀个数据库⽂件中存放多张不同的表,并能查看各表的字段结构内容;最后在⾃选的软件平台上建⽴能创建、查看表构造模式的⽤户界⾯。
提⽰:
● 定义表构造模式。表的构造模式为⼀系列字段结构的集合(可设为结构数组)。字段结构(struct)包括字段名、类型、字长、是否为KEY键、是否允许为NULL,考虑到以后对表的操作可以预留⼀些字段(如该字段是否有效标志)。
字段结构如下://注:为与标准C兼容,bool类型⽤char类型代替
typedef struct {
char sFieldName[FIELD_NAME_LENGTH]; //字段名
char sType[8]; //字段类型
int iSize; //字长
char bKey; //该字段是否为KEY键
char bNullFlag; //该字段是否允许为空
char bValidFlag; //该字段是否有效,可⽤于以后对表中该字段的删除
} TableMode,*PTableMode;
● 然后将上述结构数组构成的表模式存放到⾃定义存储结构的数据库⼆进制⽂件(.dbf⽂件)中。表模式结构可以采⽤定长⽅式存储(⼀张表占⽤固定的⽂件字节数),也可以采⽤变长⽅式,例如下⾯所⽰:
数据库⽂件(.dbf)的存储结构如下:
第⼀张表存储位置开始处(从第⼀字节开始) 表分隔符(如采⽤不常⽤的字符’~’)
表名(char数组)
此表内所含字段结构的数量(int类型)
表的第⼀字段结构(TableMode类型)
表的第⼆字段结构(TableMode类型)
表的第⼆字段结构(TableMode类型)
。。。。
表的第n字段结构(TableMode类型)
第⼆张表存储位置开始处 形式同前,从分隔符开始。(“~”,char类型,长⼀字节)
。。。。
1.2设计记录在数据⽂件中的存储结构形式。
要求能存放不同的多张表的记录内容,能查看不同表的记录内容,并在⾃选的软件平台上建⽴⽤户界⾯来添加新记录到数据⽂件中,并能查看数据⽂件中的记录内容。
提⽰:
● 从1)所建的数据库⽂件(.dbf⽂件)中抽取有关表的构造模式信息,来指导记录的输⼊,如表中有什么字段,有多少字段等。然后将记录存放到⾃设计存储格式的⽂件中(.dat⽂件)。
数据⽂件(.dat)的存储结构如下:
第⼀张表的记录存储位置开始处(从第⼀字节开始) 标识(“~”,char类型,长⼀字节)
表名(char数组)
此表内所含记录的数量(int类型)
记录的字段数量(int类型)
各记录的有效标识(char数组,可⽤于以后对表中记录的删除、恢复操纵)
记录1的字段1
记录1的字段2
。。。。
记录1的字段n
记录2的字段1
记录2的字段2
。。。。
记录2的字段n
。。。。
记录n的字段1
记录n的字段2
。。。。
记录n的字段n
第⼆张表的记录存储位置开始处 形式同前,从标识开始。即:
标识(“~”,char类型,长⼀字节)
。
。。。
4. 数据定义语⾔与操作语⾔的实现
2.1数据定义语⾔(DDL)的实现。
实现定义表模式结构,并能修改表结构的语句。
要求实现:定义表(Create Table); 修改表(Edit、Rename、Delete);
提⽰:
● 定义表模式结构语句
因为在1.1节中已经能创建表,这⾥的主要任务是分析词法,提取1.1节中所要求的输⼊内容,如表名、数据库⽂件名、表各字段结构的具体内容。可使⽤⼀个函数分析词法,取得具体内容后,再调⽤1.2节的函数创建具体的表。
模仿SQL语句,定义表模式结构语句为:
CREATE TABLE Table_Name(
Field_Name1 Type1 KEY_Flag1 NULL_Flag1 VALID_Flag1,
Field_Name2 Type2 KEY_Flag2 NULL_Flag2 VALID_Flag2,
Field_Name3 Type3 KEY_Flag3 NULL_Flag3 VALID_Flag3,
….
)INTO DataBase_FileName;
例如,在MyDB数据库⽂件中创建⼀个表MyTable,其包含有:字段名Name,类型char[10],为KEY键,⾮空,有效及字段名Age,类型int,⾮KEY键,⾮空,有效。创建语句如下:
CREATE TABLE MyTabel(
Name char[10] KEY NO_NULL VALID,
Age int NOT_KEY NO_NULL VALID
)INTO MyDB;
● 修改表语句
编辑表字段:
EDIT TABLE TableName(
Field_Name Type KEY_Flag NULL_Flag VALID_Flag)IN DataBase_FileName;
更改表名:
RENAME TABLE TableName1 TableName2 IN DataBase_FileName;
删除表:
DROP TABLE TableName IN DataBase_FileName;
2.2数据操纵语⾔(DML)实现。
实现记录数据的插⼊、删除和修改。
要求实现:记录数据的插⼊(Insert)、删除(Delete)、修改(Edit)。
提⽰:
● 记录数据的插⼊(Insert)
因为在1.2节中已经能在数据⽂件中添加记录,这⾥的主要任务是分析词法,提取1.2节中所要求的输⼊内容,如表名、数据库⽂件名、表各字段结构的具体内容。可使⽤⼀个函数分析词法,取得具体内容后,再调⽤1.2节的函数创建具体的表。
开发一个平台需要多少钱在数据库DataBase_FileName的TableName表中插⼊⼀个记录(记录内容包含Field1、Field2等)
INSERT INTO TableName VALUES(Field1,Field2,Field3,。。。)IN DataBase_FileName;
● 记录数据的删除(Delete)
DELETE FROM TableName WHERE Field=Content IN DataBase_FileName;
● 记录数据的修改(Edit)
UPDATE TableName(
SET Field1=Content1
WHERE Field2=Content2)IN DataBase_FileName;
5. 数据库复杂查询实现
3.1实现数据库单表、多表的选择、投影、连接查询。
要求实现:Select 条件查询
提⽰:
● Select 条件查询
SELECT *
FROM TableName1,TableName2
WHERE Condition
问题点数:100、回复次数:8
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论