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