第九章模式对象实验 下载本文

实验内容

以图书管理数据库TSGL***为例,创建读者表(Reader)、图书表(Book)、借阅表(Lend)和借阅历史表(History Lend)四个表。可以参考如下设计及教材P325-327: 1.使用命令创建如下数据表

(1)读者表(Reader)

借书证号(Lno):定长字符型,12个字符长度; 读者姓名(Rname):变长字符型,8个字符长度,非空; 性别(Sex):定长字符型,2个字符长度; 出生日期(Birthday):日期型;

所在系部(Dept):变长字符型,最大20个字符长度; 就读专业(Spec):变长字符型,最大20个字符长度; 年级(Grade):定长字符型,4个字符长度; 借阅数量(Bornum):整型,默认值为0。 (2)图书表(Book)

图书表要求包括图书的ISBN编号(ISBN)、书名(Bname)、作者(Author)、出版社(Press)、价格(Price)、是否带光盘(CD)、复本量(CopyNum)、库存量(InvNum)、类别(Class)等属性。这些属性的数据类型和表的主键以及其他相关完整性约束由读者自行设计完成。

(3)借阅表(Lend)

借阅表要求包括读者的借书证号(Lno)、图书的ISBN号(ISBN)、条码号(BarNo)和借阅日期(Bordate)等属性,主键为(BarNo)。

提示:

①这些属性的数据类型、表的主键、外键等相关完整性约束由读者自行设计完成。 ②建议Lno属性为12个字符长度,ISBN属性为16个字符长度, BarNo属性为10个字符长度。

③借书日期默认值为当前系统日期。 (4) 借阅历史表(HistoryLend)

借阅历史表要求包括读者的借书证号(Lno)、图书的ISBN号(ISBN)、条码号(BarNum)、借阅时间(Bordate)和归还时间(Retdate)等属性。这些属性的数据类型和表的主键等相关完整性约束由读者自行设计完成。

提示:

① 借阅历史表中的属性设置参照借阅表Lend设计。 ② 归还日期为默认值为当前日期。 2.使用命令修改如下数据表

(1)将读者表(Reader)中的读者号(Lno)设置为主键。

(2)将读者表(Reader)中的性别(Sex)属性增加只能取值为“男”或“女”的约束。 (3) 为读者表(Reader)添加一个身份证号(IDcard)属性,定长字符型,18个字符长度。

(4) 为读者表(Reader)借阅数量(Bornum)添加一个检查约束,保证该列取值不能大于10。

(5) 删除读者表(Reader)中的年级(Grade)属性。

(6)将HistoryLend表中的条码号(BarNum)属性名称改为BarNo。 (7)将HistoryLend数据表名称改为History。

(8) 设置Lend表中的Lno属性参照Reader表中的Lno属性。 设置Lend表中的ISBN属性参照Book表中的ISBN属性。

3.在已建立的TSGL***数据库的基础上,按如下要求对数据库进行操作: (1)在图书表的书名、出版社、作者、价格列是分别创建非唯一索引。 (2)在读者表的读者姓名、所在系部、就读专业列是分别创建非唯一索引。 (3)在读者表的借阅数量列上创建一个反键索引。 (4)在读者表的性别列上创建一个位图索引。 (5) 重建读者表、图书表的所有索引。

(6) 删除读者表的借阅数量列上创建的反键索引。

(7) 创建一个分区表,将读者信息根据其出生日期进行分区,将1980年1月1日前出生的学生信息保存在USER1表空间中,将1980年1月1日到1990年1月1日出生的学生信息保存在USER2表空间中,将其他学生信息保存在USER3表空间中。

(8) 创建一个分区表,将读者信息按性别不同进行分区,男读者信息保存在表空间user1中,而女读者信息保存在user 2中。

(9) 创建一个范围-散列复合分区表,将1980年1月1日前出生的读者信息均匀地保存在user1和user2表空间中,1980年1月1日到1990年1月1日出生的读者信息保存在user3

和user4表空间中,其他读者信息保存在user5表空间中。

(10)分别创建两个计算机系的读者信息视图,视图V_Reader_C1带有效性检测,视图V_ Reader _C2不带有效性检测。

(11)创建带有效性检测的V_ Reader_Borrow视图,包括计算机系各读者的借书证号、姓名、专业、借阅图书的ISBN、价格及借书时间。

(12)利用视图V_ Reader_Borrow,查找计算机系所借图书价格在35元以上的读者的借书证号、姓名、书名和所借图书价格。

(13)删除视图V_ Reader_Borrow。

(14)创建一个初始值为1,最大值为10000,步长为1的序列sequ1。 (15) 删除序列sequ1。

(16) 为读者表创建一个公有同义词,名称为hkReader. (17) 删除公有同义词hkReader。

(18) 查看以上所建的索引、视图、序列、同义词等。