(2 )现 有某图书销售数据库,其关系表结构如下:
图书表(图书编号,图书名称,出版社编号,出版社名称,出版时间,出版数量,版次)
图书销售表(图书编号,销售日期,销售数量,书店编号,读者编号,读者姓名,读者电话)
书店表(书店编号,联系电话,所在城市编号,城市名称)
该系统所涉及的数据存在如下约束:
I. 一个出版社可以出版多本图书,一本图书只能在一个出版社出版,在该系统中记录的图书出版信息包括出版时间、版次及出版数量信息;
II. 一个书店可以出售多本图书给多个读者 , 每位读者可以从多个书店购买多本图书 , 一本图书可以通过多个书店出售给读者,书店把图书出售给读者后会在系统中记录售书日期和售书数量信息;
III. 每个书店只能位于一个城市,一个城市可以有多个书店。
① 请根据以上信息画出合理的图书销售数据库的概念模型(用 ER 图表示)。(8 分)
② 以图书销售表为例说明原数据库设计的不合理之处。(4 分)
③ 给出该数据库符合 3NF 要求的全部关系模式,并指出关系模式中的全部主码和外码。(8 分)
以下是某图书管理系统的数据库模式: 读者(借书证号,姓名,联系电话,身份证号,注销标记) 主键:借书证号 出版社(出版社名称,联系电话,地址) 主键:出版社名称 采购图书(ISBN,书名,作者,责任编辑,出版社名称,出版时间,单价,馆藏数量) 主键:ISBN 外键:出版社名称,参照 出版社(出版社名称) 上架图书(内部编码,检索号,借阅状态,ISBN,上架时间) 主键:内部编码 外键:ISBN,参照 采购图书(ISBN) 借阅(借阅编号,借书证号,图书内部编码,借阅时间,归还时间) 主键:借阅编号 外键:借书证号,参照 读者(借书证号) 图书内部编码,参照 上架图书(内部编码) 请基于上述数据库模式,用SQL实现以下操作: 1、创建基本表“采购图书”,要求包含主、外键定义,以及其它相关的完整性约束。 2、在已成功创建的“读者”基本表上,添加对属性“注销标记”的约束,要求该属性的值只能为“是”或“否”。 3、列出借书证编号为”S20170204”的读者借阅过的所有书籍的名称。 4、读者未归还的图书超过一定数量将不能再办理图书借阅,实现查询读者未归还的图书数量。 5、查询已采购图书中尚未上架的图书ISBN和书名,以便于指导工作人员及时上架图书(要求:不要使用集合查询实现)。 6、列出所有的上架图书的ISBN号和总被借阅次数(提示:考虑外连接)。 7、计算借书次数最多的读者姓名和身份证号(要求:先创建读者借阅次数视图,再在视图上查询)。 8、借书证编号为”S20170204”的读者曾借阅过一本《数据库原理与应用》,今日前来归还,经扫描该本书的内部编码是“N20160347”,请更新相关基本表中的数据。 9、增加一条记录到读者表中,借书证编号为“S20190141”,姓名为“张赫”,其他信息未知。 10、从基本表“上架图书”中删除那些已上架两年但从未被借过的图书。 11、图书的借阅情况是图书流通的历史记录,图书管理员只能添加记录和修改归还时间,而没有其他权限,请实现对图书管理员的授权操作。 12、读者经常按书名进行上架图书的查询,涉及到基本表“上架图书”和“采购图书”的连接,为加快查询速度,请在“上架图书”表的属性“ISBN”创建非聚集索引。
假设图书管理数据库中有3个表,图书.dbf、读者.dbf和借阅.dbf。它们的结构分别如下; 图书(总编号C(6),分类号C(8),书名C(16),出版单位C(20),单价N(6,2)) 读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20)) 借阅(借书证号C(4),总编号C(6),借书日期D(8)) 在上述图书管理数据库中,图书的主索引是总编号,读者的主索引是借书证号,借阅的主索引应该是【 】。
设图书管理数据库中有3个表:图书.dbf、读者.dbf和借阅.dbf。它们的结构分别如下: 图书(总编号C(6),分类号C(8),书名C(16),出版单位C(20),单价N(6,2)) 读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20)) 借阅(借书证号C(4),总编号C(6),借书日期D(8)) 在上述图书管理数据库中,图书的主索引是总编号,读者的主索引是借书证号,借阅的主索引应该是【 】。
阅读下列说明和图,回答问题1至问题3。
【说明】
某图书管理系统的主要功能如下:
1.图书管理系统的资源目录中记录着所有可供读者借阅的资源,每项资源都有一个唯一的索引号。系统需登记每项资源的名称、出版时间和资源状态(可借阅或已借出)。
2.资源可以分为两类:图书和唱片。对于图书,系统还需登记作者和页数;对于唱片,还需登记演唱者和介质类型(CD或者磁带)。
3.读者信息保存在图书管理系统的读者信息数据库中,记录的信息包括:读者的识别码和读者姓名。系统为每个读者创建了一个借书记录文件,用来保存读者所借资源的相关信息。
现采用面向对象方法开发该图书管理系统。识别类是面向对象分析的第一步。比较常用的识别类的方法是寻找问题描述中的名词,再根据相关规则从这些名词中删除不可能成为类的名词,最终得到构成该系统的类。表10-4给出了[说明]中出现的所有名词。
通过对表10-4中的名词进行分析,最终得到了图10-4所示的UML类图(类的说明如表10-5所示)。
表10-5所给出的类并不完整,根据[说明]和表10-4,将图10-4中的(a)~(c)处补充完整。
在tushu数据库中建立“图书”表(表3-7)和“借还记录”表(表3-8)。
表3-7 图书表的表结构 | ||||||
字段名称 | 数据类型 | 说明 | 字段大小 | 标题 | 必填字段 | 输入法模式 |
tsm | 文本 | 记录图书称 | 50 | 书名 | 是 | 开启 |
isbn | 文本 | 用于同版同名书的 统计 | 13 | 书籍条形 码 | 是 | 关闭 |
isbn | 文本 | 用于同版同名书的 统计 | 13 | 书籍条形 码 | 是 | 关闭 |
flh | 文本 | 用于图书分类 | 1 | 图书分类 | 是 | 关闭 |
cbs | 文本 | 出版社 | 30 | 出版社 | 否 | 开启 |
zzxm | 文本 | 作者姓名 | 16 | 作者 | 否 | 开启 |
jianjie | 文本 | 该书内容简介 | 100 | 简介 | 否 | 开启 |
jiage | 货币 | 记录该书的价格 | 货币 | 价格 | 否 | |
sjh | 文本 | 记录该书存放位置 | 6 | 书架号 | 是 | 否 |
djrq | 日期/时间 | 登记日期 | 短日期 | 登记日期 | 否 | 关闭 |
sfjc | 是/否 | 是否借出 | 是/否 | 是否借出 | 否 |
表3-8 借还记录表的表结构 | ||||||
字段名称 | 数据类型 | 说明 | 字段大小 | 标题 | 必填字段 | 输入法模式 |
txm | 文本 | 图书条形码,每本书 的唯一标示;与图书 表中tsgtm字段对应 | 7 | 图书 条形码 | 是 | 关闭 |
isbn | 文本 | 用于同版同名书的 统计 | 13 | 书籍 条形码 | 是 | 关闭 |
jszh | 文本 | 与读者表是jszh对应 | 12 | 借书证号 | 是 | 关闭 |
jh | 文本 | 记录此次操作是借 书、还书或续借 | 4 | 借/还 | 否 | 开启 |
jhrq | 日期/ 时间 | 借/还/续借日期 | 短日期 | 借/还日期 | 是 | 关闭 |
将“借还记录”表中的“txm”字段的查阅列设置为“图书”表中的“tsgtm”字段。
说明:“图书”表中的“tsgtm”字段与“借还记录”表中的“txm”字段都是指图书的唯一标识编号。“借还记录”表中的“txm”字段应依附于“图书”表中的“tsgtm”字段。如果将“借还记录”表中的“txm”字段的查阅列设置为“图书”表中的“tsgtm”字段。一来可以简化操作,二来可以保证数据的一致性和完整性,杜绝错误数据的输入。称“借还记录”表为查阅表, “图书”表为被查阅表。