用C/C++开发一个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类型)
。。。。
表的第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、回复次数:8Top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值