数据库设计案 例之一.docx
《数据库设计案 例之一.docx》由会员分享,可在线阅读,更多相关《数据库设计案 例之一.docx(5页珍藏版)》请在冰豆网上搜索。
![数据库设计案 例之一.docx](https://file1.bdocx.com/fileroot1/2023-1/26/9cf98ba5-59f6-4eea-ad48-5daeca4f5717/9cf98ba5-59f6-4eea-ad48-5daeca4f57171.gif)
数据库设计案例之一
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
数据库设计案例之一——图书管理数据库的设计现在要求为某学校图书馆设计一个图书管理系统的数据库,现在要求为某学校图书馆设计一个图书管理系统的数据库,背景如下:
背景如下:
该学校是一所多学科、多层次大学,学校有高职生、该学校是一所多学科、多层次大学,学校有高职生、本科生(含一本、二本、三本)、硕士研究生()、硕士研究生科生(含一本、二本、三本)、硕士研究生(含MBA))和博士研究生等多种层次的学生,和博士研究生等多种层次的学生,图书馆为全校学生和教职工提供图书借阅服务。
教职工提供图书借阅服务。
图书馆按照图书的性质(中文图书、外文图书、新书)图书馆按照图书的性质(中文图书、外文图书、新书)将借阅分为不同的借阅种类:
中文图书借阅、将借阅分为不同的借阅种类:
中文图书借阅、外文图书借阅和(新书)短期外借;借阅和(新书)短期外借;不同的读者对象也有不同的借阅要求。
借阅要求。
对每种借阅类型和读者,其借阅册数、借期、对每种借阅类型和读者,其借阅册数、借期、是否允许续借、续借期限等不同。
否允许续借、续借期限等不同。
不同借阅种类和借阅对象的借阅要求规定如附1所示所示。
借阅对象的借阅要求规定如附所示。
例如:
本专科学生可以借中文图书本例如:
本专科学生可以借中文图书5本,借期30天可以续借一次,续借15天借期天,可以续借一次,续借天。
“新书”的概念是相对的,一本新书在上架(或新书”的概念是相对的,一本新书在上架(入库)后的60天内只提供短期外借天内只提供短期外借,入库)后的天内只提供短期外借,此后即自动地成为中文图书或者外文图书。
地成为中文图书或者外文图书。
借出的图书不能在当天归还。
借出的图书不能在当天归还。
每次借阅后读者最多可以续借一册图书一次。
每次借阅后读者最多可以续借一册图书一次。
在本馆所借的文献资料,在本馆所借的文献资料,均应在规定的期限内按时归还。
逾期不还者,按时归还。
逾期不还者,将分别按以下规定处理:
中文图书借阅:
每册每天罚款元中文图书借阅:
每册每天罚款0.2元。
新书借阅和外文图书借阅:
新书借阅和外文图书借阅:
每册每天罚款0.5元罚款元。
在超期图书归还并缴清罚款之前,在超期图书归还并缴清罚款之前,读者不可借阅图书;者不可借阅图书;超期图书也不能续借。
对于超期的图书,对于超期的图书,图书管理系统将自动向读者电子邮箱中发一封电子邮件催还图书。
电子邮箱中发一封电子邮件催还图书。
每个读者都要有一个编号,并记录读者的姓名、每个读者都要有一个编号,并记录读者的姓名、性别、类型(学生、教师等)、单位、性别、类型(学生、教师等)、单位、电子信箱)、单位等。
图书馆采编部负责对入库的文献资料按规定进行编目、著录、加工、建库。
对每本图书、杂志,编目、著录、加工、建库。
对每本图书、杂志,要记录其基本信息,如名称、作者、要记录其基本信息,如名称、作者、ISBN号、号出版地、出版社、出版时间、字数、单价、出版地、出版社、出版时间、字数、单价、内容简介、所属分类号等,其中,简介、所属分类号等,其中,图书分类按照中图法分类规则进行分类。
中图法分类简表见后。
法分类规则进行分类。
中图法分类简表见后。
学校有三个校区,相应地,学校有三个校区,相应地,馆藏分布于三个分馆图书馆()、B图中:
A图书馆(侧重于经济管理、综合类)、图图书馆侧重于经济管理、综合类)、书馆(侧重于理工、计算机类)图书馆(书馆(侧重于理工、计算机类)和C图书馆(侧图书馆重于法学、外语、体育、艺术、音乐等方面)。
重于法学、外语、体育、艺术、音乐等方面)。
图书馆中每种图书可能采购多册,图书馆中每种图书可能采购多册,分布在多个馆全校师生可以在任何一个分馆中借阅。
中。
全校师生可以在任何一个分馆中借阅。
每个分馆中的图书借完为止,每个分馆中的图书借完为止,如本部图书馆有某图书1本这本图书借出后,在归还之前,图书本,这本图书借出后,在归还之前,本部图书馆中就查阅到该图书为借出状态,而且,书馆中就查阅到该图书为借出状态,而且,馆藏已空,但是读者可以到其他馆中借阅。
已空,但是读者可以到其他馆中借阅。
图书的归还遵循属地原则,图书的归还遵循属地原则,即从哪个分馆借出的图书必须要在那个分馆中归还。
图书必须要在那个分馆中归还。
图书馆管理员有权更改图书到期时间,图书馆管理员有权更改图书到期时间,比如将本来暑假到期的图书的到期时间改为9月日来暑假到期的图书的到期时间改为月10日。
读者可以在网上查询自己的图书借阅情况,读者可以在网上查询自己的图书借阅情况,一般读者只可以查阅到自己的借阅情况和图书的信息,读者只可以查阅到自己的借阅情况和图书的信息,而管理员可以查看任何读者的信息、借阅情况,而管理员可以查看任何读者的信息、借阅情况,任何图书的信息和借阅情况。
任何图书的信息和借阅情况。
在网上查询系统中,在网上查询系统中,每个用户都分配了用户名全局唯一)和密码,其中,用户名就是读者号,(全局唯一)和密码,其中,用户名就是读者号,密码初始值为读者的学号或者工号,可以修改。
密码初始值为读者的学号或者工号,可以修改。
附1:
图书借阅册数与期限表:
附2:
中图法分类号示例:
:
中图法分类号示例:
A马克思主义、列宁主义、毛泽东思想、邓小平理论A1马克思、恩格斯著作A2列宁著作A3斯大林著作A4毛泽东著作A49邓小平著作A5马克思、恩格斯、列宁、斯大林、毛泽东、邓小平著作汇编A7马克思、恩格斯、列宁、斯大林、毛泽东、邓小平生平和传记A8马克思主义、列宁主义、毛泽东思想邓小平理论的学习和研究B哲学、宗教B0哲学理论B1B2中国哲学B3B4非洲哲学B5B6大洋洲哲学B7B80思维科学B81B82伦理学(道德学)B83B84心理学B9世界哲学亚洲哲学欧洲哲学美洲哲学逻辑学(论理学)美学宗教请你设计一个数据库,并确定要满足的各种约束,请你设计一个数据库,并确定要满足的各种约束,使得其中:
使得其中:
保存了所需的所有信息;保存了所需的所有信息;支持图书管理的各种应用;支持图书管理的各种应用;尽可能地优化:
减少冗余、提高查询速度。
尽可能地优化:
减少冗余、提高查询速度。
画实体-联系图。
画实体联系图。
联系图将实体-联系图转换为关系表。
将实体联系图转换为关系表。
联系图转换为关系表实体-联系图实体联系图寻找实体集:
寻找实体集:
读者图书分馆图书类别其他?
其他?
寻找实体集之间的联系:
寻找实体集之间的联系:
读者和图书之间的多对多联系:
读者和图书之间的多对多联系:
借阅图书和分馆之间的多对一联系:
图书和分馆之间的多对一联系:
馆藏图书和图书类别之间的多对一联系:
图书和图书类别之间的多对一联系:
分类实体-联系图(实体联系图(续)联系图确定实体的属性:
确定实体的属性:
读者:
读者编号、姓名、性别、类型、单位、读者:
读者编号、姓名、性别、类型、单位、电子信箱,其他?
电子信箱,其他?
图书:
名称、作者、图书:
名称、作者、ISBN号、出版地、出版号出版地、出版时间、字数、单价、内容简介、社、出版时间、字数、单价、内容简介、所属分类号、入库时间,其他?
分类号、入库时间,其他?
分馆:
编号、名称、联系电话、分馆:
编号、名称、联系电话、馆址图书类别:
分类号、图书类别:
分类号、分类名称确定联系的属性:
确定联系的属性:
借阅:
借阅:
借阅日期检查是否包含了所有必需的信息?
检查是否包含了所有必需的信息?
图书分为中文图书、外文图书、新书。
图书分为中文图书、外文图书、新书。
对每种借阅类型和每种读者,借阅册数、期限、对每种借阅类型和每种读者,借阅册数、期限、是否可续借、续借周期等不同。
是否可续借、续借周期等不同。
读者是否可继续借阅,是否可续借?
读者是否可继续借阅,是否可续借?
不同借阅类型超期后的罚款额度?
不同借阅类型超期后的罚款额度?
读者是否应缴纳罚款?
缴纳多少罚款?
读者是否应缴纳罚款?
缴纳多少罚款?
一本具体的图书所在的分馆?
一本具体的图书所在的分馆?
用户的用户名和密码?
用户的用户名和密码?
某图书的馆藏情况?
某图书的馆藏情况?
图书分为中文图书、外文图书、图书分为中文图书、外文图书、新书表示为图书的一个属性还是图书和图书种类的联系?
图书种类:
图书种类号、图书种类:
图书种类号、种类名称图书和图书种类之间存在多对一的联系!
图书和图书种类之间存在多对一的联系!
类似地,读者分为教师、研究人员/非教研人类似地,读者分为教师、研究人员非教研人含离退休人员)博士研究生博士研究生/硕士研究员(含离退休人员)/博士研究生硕士研究本专科学生(生(含MBA)/本专科学生(含高职生))本专科学生含高职生)读者类型:
类型号、类型名称读者类型:
类型号、读者和读者类型间存在多对一的联系对每种借阅类型和每种读者,借阅册数、期对每种借阅类型和每种读者,借阅册数、是否可续借、限、是否可续借、续借周期等不同用图书种类和读者类型之间的联系表示读者是否可继续借阅?
读者是否可继续借阅?
可以为读者实体添加一个属性:
能否借阅,可以为读者实体添加一个属性:
能否借阅,表示读者是否可以继续借阅;读者是否可以继续借阅;不同借阅类型超期后的罚款额度?
不同借阅类型超期后的罚款额度?
给图书种类添加一个属性:
罚款金额(每册每天)给图书种类添加一个属性:
罚款金额(每册每天)图书种类:
图书种类号、种类名称、图书种类:
图书种类号、种类名称、罚款金额读者是否应缴纳罚款?
缴纳多少罚款?
读者是否应缴纳罚款?
缴纳多少罚款?
如果所有图书在期限内归还,则无需缴纳罚款;如果所有图书在期限内归还,则无需缴纳罚款;类似,罚款金额需要根据超期天数以及图书种类类似,确定需要给借阅联系添加属性“归还日期”需要给借阅联系添加属性“归还日期”!
一本具体的图书所在的分馆?
一本具体的图书所在的分馆?
几册相同的图书(号相同)几册相同的图书(即ISBN号相同)可能在不同号相同的分馆中,因此,每册图书都应该是可以区分的,的分馆中,因此,每册图书都应该是可以区分的,用户的用户名和密码?
用户的用户名和密码?
用户和读者的关系?
用户和读者的关系?
需要用户实体集。
需要用户实体集。
对于读者而言,可否直接加入一个属性“密码”对于读者而言,可否直接加入一个属性“密码”来表示这部分信息?
请思考。
来表示这部分信息?
请思考。
不同的用户有不同的权限。
不同的用户有不同的权限。
用户:
用户名、登录密码、权限。
用户:
用户名、登录密码、权限。
用户和读者之间存在联系,这是什么样的联系?
用户和读者之间存在联系,这是什么样的联系?
小结实体:
实体:
读者:
读者编号、姓名、性别、类型、单位、读者:
读者编号、姓名、性别、类型、单位、电子信箱、电子信箱、能否借阅图书:
图书编号、名称、作者、图书:
图书编号、名称、作者、ISBN号、出号版地、出版社、出版时间、字数、单价、版地、出版社、出版时间、字数、单价、内容简介、所属分类号、容简介、所属分类号、入库时间分馆:
编号、名称、联系电话、分馆:
编号、名称、联系电话、馆址图书类别:
分类号、图书类别:
分类号、分类名称读者类型:
类型号、读者类型:
类型号、类型名称图书种类:
图书种类号、种类名称、图书种类:
图书种类号、种类名称、罚款金额用户:
用户名、登录密码、用户:
用户名、登录密码、权限小实体间的联系:
实体间的联系:
读者类型1属于n读者1属于n用户m借阅m借阅类型结(续)n图书种类1属于nn图书n分类1图书类别n1属于分馆检查是否支持各种应用如何支持图书馆管理员更改部分图书的到期时间?
如何支持图书馆管理员更改部分图书的到期时间?
更改借阅期限?
会影响到所有图书!
更改借阅期限?
会影响到所有图书!
比较灵活的方法是在借阅联系中增加属性:
比较灵活的方法是在借阅联系中增加属性:
应还日期,还日期,每册图书的应还日期根据图书种类和读者类型以及借阅日期计算出来,读者类型以及借阅日期计算出来,要更改某些图书的到期时间,只需更改该属性即可!
图书的到期时间,只需更改该属性即可!
如何支持续借?
如何支持续借?
读者不一定可以续借,读者不一定可以续借,是否可以续借不仅取决于图书种类,于图书种类,也取决于读者是否已经续借过该册书。
册书。
需要在借阅联系中设置一个属性:
能否续借?
需要在借阅联系中设置一个属性:
能否续借?
检查是否支持各种应用(检查是否支持各种应用(续)如何让新书在一定的期限后自动成为中文图书和外文图书?
和外文图书?
新书变成中文图书还是外文图书主要看新书的语言,如果是中文,的语言,如果是中文,则过期后变成中文图否则便成外文图书。
书,否则便成外文图书。
需要在图书实体中增加一个属性:
语言。
需要在图书实体中增加一个属性:
语言。
如何支持图书借出状态的察看?
如何支持图书借出状态的察看?
为了方便查看图书是否已借出,为了方便查看图书是否已借出,可以在图书中增加属性:
借出状态。
中增加属性:
借出状态。
实体联系图转换为关系表实体转化为单独的一张表读者表:
读者编号、姓名、性别、类型、单位、读者表:
读者编号、姓名、性别、类型、单位、电子信箱、能否借阅。
信箱、能否借阅。
图书表:
图书编号、名称、作者、图书表:
图书编号、名称、作者、ISBN号、出版地、号出版地、出版社、出版时间、字数、单价、内容简介、所属分出版社、出版时间、字数、单价、内容简介、类号、入库时间、语言、借出状态。
类号、入库时间、语言、借出状态。
分馆表:
编号、名称、联系电话、馆址。
分馆表:
编号、名称、联系电话、馆址。
图书类别表:
分类号、分类名称。
图书类别表:
分类号、分类名称。
读者类型表:
类型号、类型名称。
读者类型表:
类型号、类型名称。
图书种类表:
图书种类号、种类名称、罚款金额。
图书种类表:
图书种类号、种类名称、罚款金额。
用户表:
用户名、登录密码、权限。
用户表:
用户名、登录密码、权限。
实体联系图转换为关系表(实体联系图转换为关系表(续)多对多联系转换为一张单独的关系表借阅类型表:
读者类型、图书种类、借阅册数、借阅类型表:
读者类型、图书种类、借阅册数、借期、允许续借否、续借时间。
借期、允许续借否、续借时间。
借阅表:
读者号、图书编号、借阅日期、借阅表:
读者号、图书编号、借阅日期、应还日期、归还日期、能否续借。
日期、归还日期、能否续借。
一对多的联系通过在多表中添加属性来实现:
一对多的联系通过在多表中添加属性来实现:
读者表:
读者编号、姓名、性别、类型、单位、读者表:
读者编号、姓名、性别、类型、单位、电子信箱、能否借阅、读者类型。
电子信箱、能否借阅、读者类型。
图书表:
图书编号、名称、作者、图书表:
图书编号、名称、作者、ISBN号、出号版地、出版社、出版时间、字数、单价、版地、出版社、出版时间、字数、单价、内容简介、所属分类号、入库时间、语言、借出状态、图书种类、图书类别、所在分馆实体联系图转换为关系表(实体联系图转换为关系表(续)用户表比较特殊:
用户表比较特殊:
用户表:
用户名、密码、权限。
用户表:
用户名、密码、权限。
其中,用户名和读者号对应,其中,用户名和读者号对应,但是也有一些用户名没有和读者号对应,户名没有和读者号对应,这些用户名表示管理员。
优化为了减少读者表中的冗余,将读者表分解为:
为了减少读者表中的冗余,将读者表分解为:
读者表:
读者编号、姓名、性别、类型、读者表:
读者编号、姓名、性别、类型、单位电子信箱、能否借阅。
号、电子信箱、能否借阅。
单位表:
单位号、单位名称、联系电话。
单位表:
单位号、单位名称、联系电话。
为了减少图书中的冗余,将图书表分解为:
为了减少图书中的冗余,将图书表分解为:
图书表:
图书编号、名称、作者、图书表:
图书编号、名称、作者、ISBN号、号出版社号、出版时间、字数、单价、内容简介、出版社号、出版时间、字数、单价、内容简介、所属分类号、入库时间、语言、借出状态、所属分类号、入库时间、语言、借出状态、图书种类、图书类别、所在分馆。
书种类、图书类别、所在分馆。
出版社表:
出版社号、出版社名称、出版地。
出版社表:
出版社号、出版社名称、出版地。
分解前后该表分别属于第几范式?
分解前后该表分别属于第几范式?
优化简化借阅类型表:
简化借阅类型表:
借阅类型表:
读者类型、图书种类、借阅册数、借阅类型表:
读者类型、图书种类、借阅册数、借期、续借时间。
借期、续借时间。
若续借时间为0,则表示不允许续借。
若续借时间为,则表示不允许续借。
确定完整性约束确定实体完整性约束借阅表:
读者编号、图书编号、借阅日期、借阅表:
读者编号、图书编号、借阅日期、应还日期、归还日期、能否续借。
应还日期、归还日期、能否续借。
主键是什么?
主键是什么?
其他(其他(略)参照完整性约束略用户定义完整性约束数据类型约束。
数据类型约束。
数据长度、精度约束。
数据长度、精度约束。
取值范围约束。
取值范围约束。
确定完整性约束(确定完整性约束(续)电子信箱的格式应为“格式。
电子信箱的格式应为“xxx@xxx.xxx”格式。
格式图书表中出版时间要早于入库时间,图书表中出版时间要早于入库时间,语言取值范围为:
中文外文}、借出状态、图书种类、中文,范围为:
{中文,外文、借出状态、图书种类、图书类别、所在分馆。
图书类别、所在分馆。
用户表权限的取值范围为{0,1},取值表示普用户表权限的取值范围为,取值0表示普通读者,取值1表示管理员表示管理员。
通读者,取值表示管理员。
借阅表中“借阅日期”大于图书表中“借阅表中“借阅日期”大于图书表中“入库时小于“应还日期”归还日期”间”,小于“应还日期”和“归还日期”,能否续借”“能否续借”的取值首先要参照借阅类型表中续借时间”如果“续借时间”“续借时间”,如果“续借时间”为0,则“能,否续借”值为F,否者“能否续借”初始值为T。
否续借”值为,否者“能否续借”初始值为。
如果借阅表中“归还日期”大于“应还日期”如果借阅表中“归还日期”大于“应还日期”,则对应的读者表中“能否借阅”值为F。
则对应的读者表中“能否借阅”值为。
确定完整性约束(确定完整性约束(续)借阅表中“归还日期”如果非空,借阅表中“归还日期”如果非空,则应大于借阅日期”“借阅日期”。
其他:
如默认值、空值等等。
其他:
如默认值、空值等等。
还有其他约束吗?
还有其他约束吗?
进一步的思考在这种数据库模式下,在这种数据库模式下,能否检测得到某一读者所借图书数量是否超过范围?
可以如何改进?
借图书数量是否超过范围?
可以如何改进?
这些关系表达到了第几范式?
这些关系表达到了第几范式?
以下无正文
仅供个人用于学习、研究;不得用于商业用途。
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.