实验八数据库设计一、题目第1题:网上书店系统基本要求:1、系统用户由二类组成:管理员和客户;2、管理员负责后台管理:图书信息的维护(增、删、改),图书要进行分类管理;客户信息的维护订单的确认和删除3、客户可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查询订单处理的情况。二、数据库设计要求在数据库设计中应考虑如下因素:(1)数据库的逻辑模型应能满足系统的基本需求;(2)数据库的逻辑模型应符合关系数据的规范化要求;(3)数据库表应具有基本的完整性约束;数据库设计实验结果如下:(另附纸完成内容)1、系统E-R模型2、数据库表的基本结构(用表格方式表示,参照实验2中给出的表的基本结构说明)3、视图、触发器、存储过程、事务等设计。(可根据需要设计)4、数据表、视图等的实现即创建语句三、解答1、需求分析(1)、系统用户由二类组成:管理员和客户;(2)、管理员负责后台管理:图书信息的维护(增、删、改),图书要进行分类管理;客户信息的维护订单的确认和删除(3)、客户可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查询订单处理的情况。2概念设计,绘制ER图系统有五个实体:管理员、客户、书本、订单客户的属性有:客户号,客户积分,个人资料,登入密码书本的属性有:书的编号,书名,类别,出版社,价格订单的属性有:订单的编号,书本数量,总价格管理员的属性有:管理员号,登录密码一位客户可以选择多本书,一本书可以被多个客户选择一个客户可以创立多个订单,一个订单只能被一个客户创立客户订单书本管理员选择创建MN1J客户号登入密码书本号个人资料客户积分价格出版社类别书名订单号总价格书本数量登入密码管理员号3、逻辑设计,将ER图转换为关系模式等客户(客户号,客户积分,个人资料,登入密码)书本(书的编号,书名,类别,出版社,价格)订单(订单的编号,书本数量,总价格)选择(客户号,书本号)创建(客户号,订单号)管理员(管理员名,登入密码)说明:以上各个关系模式的范式均达到3NF等级,实际上均达到了BCNF为方便,用英语的简称为表名和列名取名,确定列的数据类型,以及必要的约束规则,给出如下数据库表的基本结构及说明:(1)客户表Member:列名说明数据类型约束MNO客户号CHAR(7)主码MINTEGRAL客户积分CHAR(10)MDATE个人资料CHAR(200)MPassword登入密码Varchar(20)(2)书本表Book:列名说明数据类型约束BNO书本号CHAR(10)主码BNAME书本名varCHAR(20)BCATEGORY书本类别CHAR(20)BPRESS出版社CHAR(20)BPRICE价格SMALLINT大于0(3)选书表Select:列名说明数据类型约束MNO客户号CHAR(7)主码,引用Member的外码BNO书本号CHAR(10)主码,引用Book的外码(4)订单表Order列名说明数据类型约束ONO订单号CHAR(7)主码ONUMBER书本数量SMALLINT大于0OPRICE总价格SMALLINT大于0(5)管理员表admin列名说明数据类型约束AdminName管理员名varCHAR(20)主码APassword管理员密码varCHAR(20)NOTNULL需要创建学号平均成绩视图以方便使用4、物理设计为Bname列添加索引,以便加快对书本的查询速度5、数据库实施:创建表等。创建表:客户表:CreatetableMember{MNOchar(7)primarykey,MINTEGRALchar(10),MDATEchar(200),MPasswordchar(20),}书本表CreatetableBook{BNOchar(7)primarykey,BNAMEvarchar(20),BCATEGORYchar(20),BPRESSchar(20),BPRICESMAILLINTcheck(BPRICE0),}选书表Createtableselect{MNOchar(7),BNOchar(10),PRIMARYKEY(Mno,Bno),FOREIGNKEY(Mno)REFERENCESMember(Mno),FOREIGNKEY(Bno)REFERENCESBook(Bno)}订单表Createtableorder{ONOchar(7)primarykey,ONUMBERSMILLINTCHECK(NUMBER0)OPRICESMILLINTCHECK(OPRICE0)}管理员表CREATETABLEAdmin(adminnamevarchar(20)PRIMARYKEY,Apasswordvarchar(20)NOTNULL)为每个表添加一条示例数据(注意添加的先后次序):insertintomembervalues(‘M088’,’20’,’神说世界需要和平’,'123456')insertintobookvalues(‘B001’,’钢铁是怎样练成的’,’小说’,’中国文学出版社’,’56’)insertintoselectvalues(‘M088’,‘B001’)insertintoordervalues(‘O002’,’3’,’99’)insertintoadminvalues(‘admin’,’123456’)创建书本Bookname索引CreateindexidxBnameonBook(Bname)创建必要的触发器定义一个触发器,其基本功能是在select表中增加或修改一个选书记录时,检查该书的购买人数是否超过库存量,若超过库存量,则拒绝操作。触发器代码:CREATETRIGGERtrig1ONSELECTFORINSERT,UPDATEASIF(SELECTCOUNT(*)FROMselectWHEREBNO=(selectBNOfromINSERTED))10BEGINPRINT'该书已无库存'ROLLBACKEND四、实验小结通过本次实验,本人了解并掌握了E-R图的画法及数据库的初步建立,希望在以后的学习生活中能进一步的掌握它。