1、数据库课程设计完成版1 课程设计要求 12 数据库概念模式设计 22.1 整理的数据项 22.2 绘制ERD 23 数据库逻辑模式设计 33.1 一般逻辑模型设计 33.1.1 按四原则转化 33.1.2 转化的逻辑模型 43.1.3 逻辑模型的优化 53.2 具体逻辑模型设计 64 数据库保护设计 74.1设计表间关系 74.2完整性设计 74.2.1 出版社关系表 74.2.2 书籍关系表 84.2.3借书人关系表 84.2.4借还情况关系表 85 数据库实现 95.1 建立数据库 95.2 建立数据表 105.2.1出版社关系表 115.2.2书籍关系表 115.2.3借书人关系表 12
2、5.2.4借还情况关系表 135.3 数据库的表间关联 136 感想与体会 141 课程设计要求一个图书借阅管理数据库要求提供以下服务:(1)可随时查询书库中现有书籍的种类、数量与存放位置。所有各类书籍均可由书号唯一标识。(2)可随时查询书籍借还情况。包括借书人单位、姓名、借书证号、借书日期和还书日期。任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。(3)当需要时,可通过数据库中保存的出版社电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。根据以上的情景假设,进行如下的分析与设计:(1)根据上述语义画
3、出ER图。(2)将ER模型转换成关系模型,并指出每个关系模式的主关键字。 (3)分析每个关系模式已经达到第几范式。对于不符合第三范式要求的关系模式进行规范化。(4)根据概念模型设计逻辑模型和保护设计。(5)在SQLServer中实现。2 数据库概念模式设计2.1 整理的数据项书号、种类、数量、存放位置、书籍出版社、出版社名称、电话、邮编、地址、联系人、借书证号、姓名、单位、借书日期、还书日期2.2 绘制ERD3 数据库逻辑模式设计3.1 一般逻辑模型设计3.1.1 按四原则转化(1)原则一:ER图中的每一个独立实体变换为一个关系,其属性变为关系的属性,其主标识变为关系的主码,由第一原则转化可得
4、到:出版社关系出版社名称电话邮编地址联系人主码书籍关系书号书名种类数量存放位置书籍出版社主码借书人关系借书证号姓名单位主码(2)原则二:ER图中的从实体及相应的“的”联系变换为一个关系,从实体的属性加上主实体关系的主码构成这个关系的属性。如果“的”联系是1:1的,则以主实体关系的主码(作为外来码)为这个关系的主码;如果“的”联系是1:M的,则以主实体关系的主码加上同一主实体个体联系的不同从属实体个体赖以相互区分的属性组,组成该关系的主码,此E-R图中没有“的”联系,所以无原则二(2)原则三:1:M联系通过在“多”实体关系中增加相联系的“1”实体关系的主码及联系本身的属性来表达。其中“1”实体主
5、码为外来码,由第三原则转化可得到:书籍关系书号书名种类数量存放位置书籍出版社增购书籍出版社名称主码外码(3)原则四:M:N联系转换成一个独立的关系,被联系实体关系的主码(作为外来码)和联系本身的属性作为该关系的属性,被联系实体关系的主码组成其复合主码,由第四原则转化可得到:借还情况关系书号借书证号借书日期还书日期外码外码主码(复合主码)3.1.2 转化的逻辑模型经过整理总结得到以下四张关系表:出版社关系出版社名称电话邮编地址联系人主码书籍关系书号书名种类数量存放位置书籍出版社增购书籍出版社名称主码外码借书人关系借书证号姓名单位主码借还情况关系书号借书证号借书日期还书日期外码外码主码(复合主码)
6、3.1.3 逻辑模型的优化在出版社关系模式中,由于非主属性电话、邮编、地址、联系人都是依赖于主属性出版社名称,而且在此关系模式中的全部非主属性之间不存在传递关系,即每一个非主属性与主属性出版社名称都不传递依赖关系,所以出版社关系模式是属于第三范式,不需要再优化。在书籍关系模式中,由于非主属性书名、种类、数量、存放位置、书籍出版社、增购书籍出版社名称都是完全依赖于主属性书号,而且非主属性之间不存在传递关系,即书籍关系模式中的每一个非主属性与主属性书号都不传递依赖关系,所以书籍关系模式是属于第三范式,不需要再优化。在借书人关系模式中,非主属性姓名、单位都完全依赖于主属性借书证号,而且非主属性姓名、
7、单位之间不存在传递关系,即此关系模式中的每一个非主属性都不传递依赖于主属性,所以借书人关系模式是属于第三范式,不需要再优化。在借还情况关系模式中,非主属性借书日期、还书日期都完全依赖于复合关键字书号、借书证号,而且非主属性借书日期、还书日期之间不存在传递关系,即此关系模式中的每一个非主属性都不传递依赖于复合关键字,所以借还关系模式是属于第三范式,不需要再优化。3.2 具体逻辑模型设计出版社关系表字段名字段类型字段长度小数点位数是否主关键字出版社名称char20无是电话tinyint11无否邮编tinyint6无否地址char50无否联系人char10无否书籍关系表字段名字段类型字段长度小数点位
8、数是否主关键字书号char20无是书名char50无否种类char20无否数量tinyint10无否存放位置char20无否书籍出版社char20无否增购书籍出版社名称char20无否借书人关系表字段名字段类型字段长度小数点位数是否主关键字借书证号tinyint10无是姓名char10无否单位char20无否借还情况关系表字段名字段类型字段长度小数点位数是否主关键字书号char20无是复合关键字借书证号tinyint10无借书日期datetime8无否还书日期datetime8无否4 数据库保护设计4.1设计表间关系(1)出版社表与书籍表是增购联系,通过字段增购书籍出版社名称相关联(2)借还情
9、况表与书籍表是借还情况联系,通过字段书号相关联(3)借还情况表与借书人表是借还情况联系,通过字段借书证号相关联(4)书籍表与借书人表是借还情况联系,通过字段书号、借书证号相联系4.2完整性设计4.2.1 出版社关系表(1)实体完整性设计实体的关键字出版社名称取值唯一不为空(2)参照完整性设计由于在出版社关系表中的字段不参照任何表中字段,所以不需要进行设计参照完整性(3)用户定义完整性设计定义出版社名称为关键字,数据类型是字符型,长度不超过20;属性电话的数据类型约束为整型,字节取值范围是0-11,且唯一不为空值;属性邮编的数据类型为整型,其值域的字节取值范围是0-6;属性地址的数据类型是字符型
10、,字符长度不超过50;联系人的数据类型是字符型,字符长度不超过104.2.2 书籍关系表(1)实体完整性设计实体的主关键字书号取值唯一不为空值(2)参照完整性设计书籍关系与出版社关系存在参照与被参照关系,其中书籍关系是参照关系,出版社关系是被参照关系。设定不允许被参照表中出版社表中的出版社名称发生删除操作;设定当被参照表出版社中的字段出版社名称进行更新操作时,书籍关系表中的增购书籍出版社名称也进行更新(3)用户定义完整性设计定义书号为主关键字,数据类型是字符型,字符长度不超过20;属性书名的数据类型是字符型,字符长度不超过20,规定不为空;属性数量的数据类型是整型,字节取值范围为1-10;属性
11、种类、存放位置、书籍出版社、增购书籍出版社名称的值域规定不为空,数据类型是字符型,字符长度不超过204.2.3借书人关系表(1)实体完整性设计实体的主关键字借书证号取值唯一不为空(2)参照完整性设计由于在借书人关系表中的任何字段都不参照于其他的表中的字段,所以不需要进行设计参照完整性(3)用户定义完整性设计定义借书证号为主关键字,数据类型是整型,取值范围是字节不超过10;属性姓名的数据类型是字符型,长度不超过10,规定不为空;属性单位的值域规定不为空,数据类型为字符不超过204.2.4借还情况关系表(1)实体完整性设计复合关键字书号、借书证号唯一不为空(2)参照完整性设计在书籍关系与借还情况关
12、系中存在参照和被参照关系,书籍关系是被参照关系,借还情况关系是参照关系。设计规定不允许被参照关系中的字段书号发生删除操作;当被参照关系书籍关系中的书号字段进行更新操作时,参照关系借还情况表中的书号也跟着进行更新;在借书人关系与借还情况关系之间存在参照和被参照关系,其中借书人关系是被参照关系,借还情况是参照关系。设计规定被参照表借书人表中的借书证号不允许发生删除操作;当被参照表借书人表中借书证号发生更新操作时,参照表中的借书证号也跟着进行更新操作(3)用户定义完整性设计定义书号、借书证号为复合关键字,设定唯一不为空值;属性借书日期、还书日期的数据类型为datetime,长度都是8,值域规定不为空
13、5 数据库实现5.1 建立数据库语句和截图Create database 图书馆on(name=library,Filename=E:数据库课程设计library.mdf)Log on(name=library_log,Filename=E:数据库课程设计library.ldf)5.2 建立数据表建立模式语句和截图Create schema library5.2.1出版社关系表Create table library.出版社(出版社名称 char(20) primary key,电话 tinyint unique not null,邮编 tinyint,地址 char(50),联系人 char
14、(10)5.2.2书籍关系表Create table library.书籍(书号tinyint primary key,书名char(50) not null,数量tinyint ,种类char(20) not null,存放位置char(20) not null,书籍出版社char(20) not null,增购书籍出版社名称char(20) not null foreign key references library.出版社(出版社名称)On delete no actionOn update cascade)5.2.3借书人关系表Create table library.借书人(借书证
15、号tinyint primary key,姓名char(10) not null,单位char(20) not null)5.2.4借还情况关系表Create table library.借还情况(书号tinyint foreign key references library.书籍 On delete no action On update cascade,借书证号tinyint foreign key references library.借书人On delete no actionOn update cascade,借书日期datetime not null,还书日期datetime n
16、ot nullPrimary key (书号,借书证号)5.3 数据库的表间关联截图6 感想与体会在做数据库课程设计之前,我自己觉得应该时一门比较难的,需要花费很多时间和精力去做的一门课程,但是,当在我慢慢接触这个课程设计,自己一点点地把它做下去的时候,才发觉它是一个很系统的东西,在这中间是有一种叫做“联系”的东西在里面,一步步的做下来,在不知不觉地就把这个这个课程设计做完了。我想一件事情的难易程度是不能根据别人的话语或者是从一件事情的表面上去判断的,只有自己真的用心地去做了的话,那么就算是真的有一座山摆在你的面前,那么我们都会相信有愚公的一丝丝思想存在话,那么我们就不会感到没有路可以走了吧。
17、在这个课程设计中我了解到了其实我们现在学的每一门课程,特别是像数据库这样的课程,是需要一步步地了解,一步步的分析的,所以我们需要一个比较系统的知识结构,在这之前我体会最深的就是做每一件事情的时候都是需要准备的,在这次的数据库课程设计中,我在机房之外做的准备在机房里的时间还要多,这是一个真正的需要的一个部分,所以我想要是想干好一件事情的话,那么我们的准备工作是不能马虎的。所以虽然这次的课程设计没有我想象中的那么难,也没有用我预想中的那么的时间去完成它,但是我觉得自己做得还是另自己满意的,毕竟这是经过了我自己的思考,经过了一段时间的准备,然后再根据书本的知识一步步地走过来的,一步步地来完善的,自己毕竟是真的有在这个课程里面留下过自己的痕迹,而且还得到了一些东西:我们做一件事情,我们需要充足的时间和准备;我们要完成一件事情的话,需要我们系统的去思考问题。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1