1、数据库设计案 例之一For personal use only in study and research; not for commercial use数据库设计案 例之一 图书管理数据库的设计 现在要求为某学校图书馆设计一个图书管理系统的数据库, 现在要求为某学校图书馆设计一个图书管理系统的数据库, 背景如下: 背景如下: 该学校是一所多学科、多层次大学,学校有高职生、 该学校是一所多学科、多层次大学,学校有高职生、本 科生(含一本、二本、三本)、硕士研究生( )、硕士研究生 科生(含一本、二本、三本)、硕士研究生(含MBA) ) 和博士研究生等多种层次的学生, 和博士研究生等多种层次的学
2、生,图书馆为全校学生和 教职工提供图书借阅服务。 教职工提供图书借阅服务。 图书馆按照图书的性质(中文图书、外文图书、新书) 图书馆按照图书的性质(中文图书、外文图书、新书) 将借阅分为不同的借阅种类:中文图书借阅、 将借阅分为不同的借阅种类:中文图书借阅、外文图书 借阅和(新书)短期外借; 借阅和(新书)短期外借;不同的读者对象也有不同的 借阅要求。 借阅要求。 对每种借阅类型和读者,其借阅册数、借期、 对每种借阅类型和读者,其借阅册数、借期、是 否允许续借、续借期限等不同。 否允许续借、续借期限等不同。不同借阅种类和 借阅对象的借阅要求规定如附1所示 所示。 借阅对象的借阅要求规定如附 所
3、示。 例如:本专科学生可以借中文图书 本 例如:本专科学生可以借中文图书5本, 借期30天 可以续借一次,续借15天 借期 天,可以续借一次,续借 天。 “新书”的概念是相对的,一本新书在上架(或 新书”的概念是相对的,一本新书在上架( 入库)后的60天内只提供短期外借 天内只提供短期外借, 入库)后的 天内只提供短期外借,此后即自动 地成为中文图书或者外文图书。 地成为中文图书或者外文图书。 借出的图书不能在当天归还。 借出的图书不能在当天归还。 每次借阅后读者最多可以续借一册图书一次。 每次借阅后读者最多可以续借一册图书一次。 在本馆所借的文献资料, 在本馆所借的文献资料,均应在规定的期限
4、内 按时归还。逾期不还者, 按时归还。逾期不还者,将分别按以下规定处 理: 中文图书借阅:每册每天罚款 元 中文图书借阅:每册每天罚款0.2元。 新书借阅和外文图书借阅: 新书借阅和外文图书借阅:每册每天 罚款0.5元 罚款 元。 在超期图书归还并缴清罚款之前, 在超期图书归还并缴清罚款之前,读 者不可借阅图书; 者不可借阅图书;超期图书也不能续 借。对于超期的图书, 对于超期的图书,图书管理系统将自动向读者 电子邮箱中发一封电子邮件催还图书。 电子邮箱中发一封电子邮件催还图书。 每个读者都要有一个编号,并记录读者的姓名、 每个读者都要有一个编号,并记录读者的姓名、 性别、类型(学生、教师等)
5、、单位、 性别、类型(学生、教师等)、单位、电子信箱 )、单位 等。 图书馆采编部负责对入库的文献资料按规定进行 编目、著录、加工、建库。对每本图书、杂志, 编目、著录、加工、建库。对每本图书、杂志, 要记录其基本信息,如名称、作者、 要记录其基本信息,如名称、作者、ISBN号、 号 出版地、出版社、出版时间、字数、单价、 出版地、出版社、出版时间、字数、单价、内容 简介、所属分类号等,其中, 简介、所属分类号等,其中,图书分类按照中图 法分类规则进行分类。中图法分类简表见后。 法分类规则进行分类。中图法分类简表见后。 学校有三个校区,相应地, 学校有三个校区,相应地,馆藏分布于三个分馆 图书
6、馆( )、B图 中:A图书馆(侧重于经济管理、综合类)、 图 图书馆 侧重于经济管理、综合类)、 书馆(侧重于理工、计算机类) 图书馆( 书馆(侧重于理工、计算机类)和C图书馆(侧 图书馆 重于法学、外语、体育、艺术、音乐等方面)。 重于法学、外语、体育、艺术、音乐等方面)。 图书馆中每种图书可能采购多册, 图书馆中每种图书可能采购多册,分布在多个馆 全校师生可以在任何一个分馆中借阅。 中。全校师生可以在任何一个分馆中借阅。 每个分馆中的图书借完为止, 每个分馆中的图书借完为止,如本部图书馆有某 图书1本 这本图书借出后,在归还之前, 图书 本,这本图书借出后,在归还之前,本部图 书馆中就查阅
7、到该图书为借出状态,而且, 书馆中就查阅到该图书为借出状态,而且,馆藏 已空,但是读者可以到其他馆中借阅。 已空,但是读者可以到其他馆中借阅。 图书的归还遵循属地原则, 图书的归还遵循属地原则,即从哪个分馆借出的 图书必须要在那个分馆中归还。 图书必须要在那个分馆中归还。 图书馆管理员有权更改图书到期时间, 图书馆管理员有权更改图书到期时间,比如将本 来暑假到期的图书的到期时间改为9月 日 来暑假到期的图书的到期时间改为 月10日。 读者可以在网上查询自己的图书借阅情况, 读者可以在网上查询自己的图书借阅情况,一般 读者只可以查阅到自己的借阅情况和图书的信息, 读者只可以查阅到自己的借阅情况和
8、图书的信息, 而管理员可以查看任何读者的信息、借阅情况, 而管理员可以查看任何读者的信息、借阅情况, 任何图书的信息和借阅情况。 任何图书的信息和借阅情况。 在网上查询系统中, 在网上查询系统中,每个用户都分配了用户名 全局唯一)和密码,其中,用户名就是读者号, (全局唯一)和密码,其中,用户名就是读者号, 密码初始值为读者的学号或者工号,可以修改。 密码初始值为读者的学号或者工号,可以修改。 附1:图书借阅册数与期限表 : 附2:中图法分类号示例: :中图法分类号示例: A 马克思主义、列宁主义、毛泽东思想、邓小平理论 A1 马克思、恩格斯著作 A2 列宁著作 A3 斯大林著作 A4 毛泽东
9、著作 A49 邓小平著作 A5 马克思、恩格斯、列宁、斯大林、毛泽东、邓小平著作汇编 A7 马克思、恩格斯、列宁、斯大林、毛泽东、邓小平生平和传记 A8 马克思主义、列宁主义、毛泽东思想邓小平理论的学习和研究 B 哲学、宗教 B0 哲学理论 B1 B2 中国哲学 B3 B4 非洲哲学 B5 B6 大洋洲哲学 B7 B80 思维科学 B81 B82 伦理学(道德学)B83 B84 心理学 B9 世界哲学 亚洲哲学 欧洲哲学 美洲哲学 逻辑学(论理学) 美学 宗教 请你设计一个数据库,并确定要满足的各种约束, 请你设计一个数据库,并确定要满足的各种约束, 使得其中: 使得其中: 保存了所需的所有信
10、息; 保存了所需的所有信息; 支持图书管理的各种应用; 支持图书管理的各种应用; 尽可能地优化:减少冗余、提高查询速度。 尽可能地优化:减少冗余、提高查询速度。 画实体-联系图。 画实体 联系图。 联系图 将实体-联系图转换为关系表。 将实体 联系图转换为关系表。 联系图转换为关系表 实体-联系图 实体 联系图寻找实体集: 寻找实体集: 读者 图书 分馆 图书类别 其他? 其他? 寻找实体集之间的联系: 寻找实体集之间的联系: 读者和图书之间的多对多联系: 读者和图书之间的多对多联系:借阅 图书和分馆之间的多对一联系: 图书和分馆之间的多对一联系:馆藏 图书和图书类别之间的多对一联系: 图书和
11、图书类别之间的多对一联系:分类 实体-联系图( 实体 联系图(续) 联系图确定实体的属性: 确定实体的属性: 读者:读者编号、姓名、性别、类型、单位、 读者:读者编号、姓名、性别、类型、单位、 电子信箱,其他? 电子信箱,其他? 图书:名称、作者、 图书:名称、作者、ISBN号、出版地、出版 号 出版地、 出版时间、字数、单价、内容简介、 社、出版时间、字数、单价、内容简介、所属 分类号、入库时间,其他? 分类号、入库时间,其他? 分馆:编号、名称、联系电话、 分馆:编号、名称、联系电话、馆址 图书类别:分类号、 图书类别:分类号、分类名称 确定联系的属性: 确定联系的属性: 借阅: 借阅:借
12、阅日期 检查是否包含了所有必需的信息? 检查是否包含了所有必需的信息?图书分为中文图书、外文图书、新书。 图书分为中文图书、外文图书、新书。 对每种借阅类型和每种读者,借阅册数、期限、 对每种借阅类型和每种读者,借阅册数、期限、 是否可续借、续借周期等不同。 是否可续借、续借周期等不同。 读者是否可继续借阅,是否可续借? 读者是否可继续借阅,是否可续借? 不同借阅类型超期后的罚款额度? 不同借阅类型超期后的罚款额度? 读者是否应缴纳罚款?缴纳多少罚款? 读者是否应缴纳罚款?缴纳多少罚款? 一本具体的图书所在的分馆? 一本具体的图书所在的分馆? 用户的用户名和密码? 用户的用户名和密码? 某图书
13、的馆藏情况? 某图书的馆藏情况? 图书分为中文图书、外文图书、 图书分为中文图书、外文图书、新书表示为图书的一个属性还是图书和图书种类的联 系? 图书种类:图书种类号、 图书种类:图书种类号、种类名称 图书和图书种类之间存在多对一的联系! 图书和图书种类之间存在多对一的联系! 类似地,读者分为教师、研究人员/非教研人 类似地,读者分为教师、研究人员 非教研人 含离退休人员) 博士研究生 博士研究生/硕士研究 员(含离退休人员)/博士研究生 硕士研究 本专科学生( 生(含MBA)/本专科学生(含高职生) ) 本专科学生 含高职生)读者类型:类型号、类型名称 读者类型:类型号、 读者和读者类型间存
14、在多对一的联系 对每种借阅类型和每种读者,借阅册数、期 对每种借阅类型和每种读者,借阅册数、 是否可续借、 限、是否可续借、续借周期等不同用图书种类和读者类型之间的联系表示 读者是否可继续借阅? 读者是否可继续借阅?可以为读者实体添加一个属性:能否借阅, 可以为读者实体添加一个属性:能否借阅,表示 读者是否可以继续借阅; 读者是否可以继续借阅; 不同借阅类型超期后的罚款额度? 不同借阅类型超期后的罚款额度?给图书种类添加一个属性:罚款金额(每册每天) 给图书种类添加一个属性:罚款金额(每册每天) 图书种类:图书种类号、种类名称、 图书种类:图书种类号、种类名称、罚款金额 读者是否应缴纳罚款?缴
15、纳多少罚款? 读者是否应缴纳罚款?缴纳多少罚款?如果所有图书在期限内归还,则无需缴纳罚款; 如果所有图书在期限内归还,则无需缴纳罚款; 类似,罚款金额需要根据超期天数以及图书种类 类似, 确定 需要给借阅联系添加属性“归还日期” 需要给借阅联系添加属性“归还日期”! 一本具体的图书所在的分馆? 一本具体的图书所在的分馆?几册相同的图书( 号相同) 几册相同的图书(即ISBN号相同)可能在不同 号相同 的分馆中,因此,每册图书都应该是可以区分的, 的分馆中,因此,每册图书都应该是可以区分的, 用户的用户名和密码? 用户的用户名和密码?用户和读者的关系? 用户和读者的关系? 需要用户实体集。 需要
16、用户实体集。 对于读者而言,可否直接加入一个属性“密码” 对于读者而言,可否直接加入一个属性“密码” 来表示这部分信息?请思考。 来表示这部分信息?请思考。 不同的用户有不同的权限。 不同的用户有不同的权限。 用户:用户名、登录密码、权限。 用户:用户名、登录密码、权限。 用户和读者之间存在联系,这是什么样的联系? 用户和读者之间存在联系,这是什么样的联系? 小 结 实体: 实体: 读者:读者编号、姓名、性别、类型、单位、 读者:读者编号、姓名、性别、类型、单位、 电子信箱、 电子信箱、能否借阅 图书:图书编号、名称、作者、 图书:图书编号、名称、作者、ISBN号、出 号 版地、出版社、出版时
17、间、字数、单价、 版地、出版社、出版时间、字数、单价、内 容简介、所属分类号、 容简介、所属分类号、入库时间 分馆:编号、名称、联系电话、 分馆:编号、名称、联系电话、馆址 图书类别:分类号、 图书类别:分类号、分类名称 读者类型:类型号、 读者类型:类型号、类型名称 图书种类:图书种类号、种类名称、 图书种类:图书种类号、种类名称、罚款金 额 用户:用户名、登录密码、 用户:用户名、登录密码、权限 小实体间的联系: 实体间的联系:读者类型 1 属于 n 读者 1 属于 n 用户 m 借阅 m 借阅 类型 结(续) n 图书种类 1 属于 n n 图书 n 分类 1 图书类别 n 1 属于 分
18、馆 检查是否支持各种应用如何支持图书馆管理员更改部分图书的到期时间? 如何支持图书馆管理员更改部分图书的到期时间? 更改借阅期限?会影响到所有图书! 更改借阅期限?会影响到所有图书! 比较灵活的方法是在借阅联系中增加属性: 比较灵活的方法是在借阅联系中增加属性:应 还日期, 还日期,每册图书的应还日期根据图书种类和 读者类型以及借阅日期计算出来, 读者类型以及借阅日期计算出来,要更改某些 图书的到期时间,只需更改该属性即可! 图书的到期时间,只需更改该属性即可! 如何支持续借? 如何支持续借? 读者不一定可以续借, 读者不一定可以续借,是否可以续借不仅取决 于图书种类, 于图书种类,也取决于读
19、者是否已经续借过该 册书。 册书。 需要在借阅联系中设置一个属性:能否续借? 需要在借阅联系中设置一个属性:能否续借? 检查是否支持各种应用( 检查是否支持各种应用(续)如何让新书在一定的期限后自动成为中文图书 和外文图书? 和外文图书? 新书变成中文图书还是外文图书主要看新书 的语言,如果是中文, 的语言,如果是中文,则过期后变成中文图 否则便成外文图书。 书,否则便成外文图书。 需要在图书实体中增加一个属性:语言。 需要在图书实体中增加一个属性:语言。 如何支持图书借出状态的察看? 如何支持图书借出状态的察看? 为了方便查看图书是否已借出, 为了方便查看图书是否已借出,可以在图书 中增加属
20、性:借出状态。 中增加属性:借出状态。 实体联系图转换为关系表实体转化为单独的一张表 读者表:读者编号、姓名、性别、类型、单位、 读者表:读者编号、姓名、性别、类型、单位、电子 信箱、能否借阅。 信箱、能否借阅。 图书表:图书编号、名称、作者、 图书表:图书编号、名称、作者、ISBN号、出版地、 号 出版地、 出版社、出版时间、字数、单价、内容简介、所属分 出版社、出版时间、字数、单价、内容简介、 类号、入库时间、语言、借出状态。 类号、入库时间、语言、借出状态。 分馆表:编号、名称、联系电话、馆址。 分馆表:编号、名称、联系电话、馆址。 图书类别表:分类号、分类名称。 图书类别表:分类号、分
21、类名称。 读者类型表:类型号、类型名称。 读者类型表:类型号、类型名称。 图书种类表:图书种类号、种类名称、罚款金额。 图书种类表:图书种类号、种类名称、罚款金额。 用户表:用户名、登录密码、权限。 用户表:用户名、登录密码、权限。 实体联系图转换为关系表( 实体联系图转换为关系表(续)多对多联系转换为一张单独的关系表 借阅类型表:读者类型、图书种类、借阅册数、 借阅类型表:读者类型、图书种类、借阅册数、 借期、允许续借否、续借时间。 借期、允许续借否、续借时间。 借阅表:读者号、图书编号、借阅日期、 借阅表:读者号、图书编号、借阅日期、应还 日期、归还日期、能否续借。 日期、归还日期、能否续
22、借。 一对多的联系通过在多表中添加属性来实现: 一对多的联系通过在多表中添加属性来实现: 读者表:读者编号、姓名、性别、类型、单位、 读者表:读者编号、姓名、性别、类型、单位、 电子信箱、能否借阅、读者类型。 电子信箱、能否借阅、读者类型。 图书表:图书编号、名称、作者、 图书表:图书编号、名称、作者、ISBN号、出 号 版地、出版社、出版时间、字数、单价、 版地、出版社、出版时间、字数、单价、内容 简介、所属分类号、入库时间、语言、借出状态、 图书种类、图书类别、所在分馆 实体联系图转换为关系表( 实体联系图转换为关系表(续)用户表比较特殊: 用户表比较特殊: 用户表:用户名、密码、权限。
23、用户表:用户名、密码、权限。 其中,用户名和读者号对应, 其中,用户名和读者号对应,但是也有一些用 户名没有和读者号对应, 户名没有和读者号对应,这些用户名表示管理 员。 优 化为了减少读者表中的冗余,将读者表分解为: 为了减少读者表中的冗余,将读者表分解为: 读者表:读者编号、姓名、性别、类型、 读者表:读者编号、姓名、性别、类型、单位 电子信箱、能否借阅。 号、电子信箱、能否借阅。 单位表:单位号、单位名称、联系电话。 单位表:单位号、单位名称、联系电话。 为了减少图书中的冗余,将图书表分解为: 为了减少图书中的冗余,将图书表分解为: 图书表:图书编号、名称、作者、 图书表:图书编号、名称
24、、作者、ISBN号、 号 出版社号、出版时间、字数、单价、内容简介、 出版社号、出版时间、字数、单价、内容简介、 所属分类号、入库时间、语言、借出状态、 所属分类号、入库时间、语言、借出状态、图 书种类、图书类别、所在分馆。 书种类、图书类别、所在分馆。 出版社表:出版社号、出版社名称、出版地。 出版社表:出版社号、出版社名称、出版地。 分解前后该表分别属于第几范式? 分解前后该表分别属于第几范式? 优 化简化借阅类型表: 简化借阅类型表: 借阅类型表:读者类型、图书种类、借阅册数、 借阅类型表:读者类型、图书种类、借阅册数、 借期、续借时间。 借期、续借时间。 若续借时间为0,则表示不允许续
25、借。 若续借时间为 ,则表示不允许续借。 确定完整性约束确定实体完整性约束 借阅表:读者编号、图书编号、借阅日期、 借阅表:读者编号、图书编号、借阅日期、 应还日期、归还日期、能否续借。 应还日期、归还日期、能否续借。 主键是什么? 主键是什么? 其他( 其他(略) 参照完整性约束 略 用户定义完整性约束 数据类型约束。 数据类型约束。 数据长度、精度约束。 数据长度、精度约束。 取值范围约束。 取值范围约束。 确定完整性约束( 确定完整性约束(续)电子信箱的格式应为“ 格式。 电子信箱的格式应为“xxxxxx.xxx”格式。 格式 图书表中出版时间要早于入库时间, 图书表中出版时间要早于入库
26、时间,语言取值 范围为: 中文 外文、借出状态、图书种类、 中文, 范围为:中文,外文 、借出状态、图书种类、 图书类别、所在分馆。 图书类别、所在分馆。 用户表权限的取值范围为0, 1,取值 表示普 用户表权限的取值范围为 ,取值0表示普 通读者,取值1表示管理员 表示管理员。 通读者,取值 表示管理员。 借阅表中“借阅日期”大于图书表中“ 借阅表中“借阅日期”大于图书表中“入库时 小于“应还日期” 归还日期” 间”,小于“应还日期”和“归还日期”, 能否续借” “能否续借”的取值首先要参照借阅类型表中 续借时间” 如果“续借时间” “续借时间”,如果“续借时间”为0,则“能 , 否续借”值
27、为F,否者“能否续借”初始值为T。 否续借”值为 ,否者“能否续借”初始值为 。 如果借阅表中“归还日期”大于“应还日期” 如果借阅表中“归还日期”大于“应还日期”, 则对应的读者表中“能否借阅”值为F。 则对应的读者表中“能否借阅”值为 。 确定完整性约束( 确定完整性约束(续)借阅表中“归还日期”如果非空, 借阅表中“归还日期”如果非空,则应大于 借阅日期” “借阅日期”。 其他:如默认值、空值等等。 其他:如默认值、空值等等。 还有其他约束吗? 还有其他约束吗? 进一步的思考在这种数据库模式下, 在这种数据库模式下,能否检测得到某一读者所 借图书数量是否超过范围?可以如何改进? 借图书数
28、量是否超过范围?可以如何改进? 这些关系表达到了第几范式? 这些关系表达到了第几范式? 以下无正文 仅供个人用于学习、研究;不得用于商业用途。 , , .For personal use only in study and research; not for commercial use.Nur fr den persnlichen fr Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l tude et la recherche uniquement des fins personnelles; pas des fins commerciales.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1