1、三.系统总体ER图如下图:(1)各实体的属性如下:工作部门(部门编号,部门名称)服务员(服务员编号,服务员姓名,民族,出生日期,服务员性别,身高,血型,籍贯,学历,职务,参加工作时间,工资,部门编号,工作状态,服务员电话,服务员住址)顾客(顾客编号,顾客电话,顾客人数,预订就餐时间)餐桌(桌位号,桌位类型,桌位状态)消费单(消费单编号,支付类型,支付时间,餐点名称,餐点单价,消费总额)餐点(餐点名称,餐点编号,餐点单价,餐点数量)厨师(厨师编号,厨师姓名,厨师性别,厨师年龄,身高,血型,籍贯,学历,参加工作时间,工资,工作状态,厨师电话,厨师住址)原材料(原材料编号,原材料名称,原材料数量,原
2、材料单价)供应商(供应商名称,供应商电话,供应商地址)(2)联系的属性:属于(部门编号,服务员编号)服务(服务员编号,桌位号,消费时间)预订(顾客编号,桌位号)消费(消费单编号,餐点名称,餐点编号)包含(餐点名称,餐点编号,原材料编号,原材料名称)供应(供应商名称,原材料编号,原材料名称,原材料数量)制作(厨师编号,餐点名称,餐点编号)四.设计数据库的关系模型,并指出所有候选键、主键及所属范式。R1=工作部门(部门编号,部门名称)候选键:部门编号,部门名称主键:部门编号所属范式:3NFR2=服务员(服务员编号,服务员姓名,民族,出生日期,服务员性别,身高,血型,籍贯,学历,职务,参加工作时间,
3、工资,部门编号,工作状态,服务员电话,服务员住址)服务员编号R3=顾客(顾客编号,顾客电话,顾客人数,预订就餐时间)顾客编号R4=餐桌(桌位号,桌位类型,桌位状态)桌位号R5=消费单(消费单编号,支付类型,支付时间,餐点名称,餐点单价,消费总额)消费单编号,消费单名称消费单编号R6=餐点(餐点名称,餐点编号,餐点单价,餐点数量)餐点名称,餐点编号餐点名称R7=厨师(厨师编号,厨师姓名,厨师性别,厨师年龄,身高,血型,厨师编号R8=原材料(原材料编号,原材料名称,原材料数量,原材料单价)原材料编号,原材料名称原材料名称R9=供应商(供应商名称,供应商电话,供应商地址)供应商名称,供应商电话,供应
4、商地址供应商名称2NFR10=属于(部门编号,服务员编号)候选键:R11=服务(服务员编号,桌位号,消费时间)(服务员编号,消费时间),(桌位号,消费时间)(桌位号,消费时间)R12=预订(顾客编号,桌位号)R13=消费(消费单编号,餐点名称,餐点编号)R14=包含(餐点名称,餐点编号,原材料编号,原材料名称)R15=供应(供应商名称,原材料编号,原材料名称,原材料数量)(供应商名称,原材料编号),(供应商名称,原材料名称)(供应商名称,原材料名称)1NFR16=制作(厨师编号,餐点名称,餐点编号)(厨师编号,餐点编号),(厨师编号,餐点名称)(厨师编号,餐点名称)五.创建该数据的所有基本表,
5、要求定义主键和外键。1.工作部门信息表createtableGZBM(dno char(10)constraintGZBM_Primprimarykey,dnvarchar(10) constraintdn_uniqunique)2.服务员信息表FWYwno char(10)FWY_Primwn varchar(10)notnull,mz varchar(4),wbirth smalldatetime,wage int constraint wage_cons not null constraintwage_chkcheck(wagebetween16and45),wsexvarchar(2)
6、,whighfloat(6),wxxchar(4),wjgvarchar(20),wdegreevarchar(30),wzwvarchar(10),wtimesmalldatetime,wsfloat(10),dnovarchar(10)unique,wztvarchar(4)wzt_uniqwtelchar(15),wadvarchar(30)3.顾客信息表GKcno char(10)GK_Primctelcsumint,ctimesmalldatetime4.餐桌信息表CZtno char(10)CZ_Primtly varchar(10),tzttzt_uniq5.消费单信息表XFDx
7、no char(10)XFD_Primxlyxtimesmalldatetimefnfpricefloat(10)xsumnull6.餐点信息表CDfn varchar(10)constraint CD_Primfno char(10)constraint fno_uniqfsumint7.厨师信息表CScono char(10)CS_Primcon varchar(10) notcosex varchar(2),coagecoage_conscoage_chkcheck(coagebetweencohighcoxxcojgcodegreecotimecoscoztcozt_uniqcotel
8、coad8.原材料信息表YCLiname varchar(10)YCL_Primino char(10)ino_uniqisumisum_consconstraint isum_chk check( isumiprice9.供应商信息表GYSbn varchar(10)GYS_Primbtelchar(15)btel_uniqbadvarchar(30) constraintbad_uniq10.属于信息表SYwnochar(10)nullconstraint FWY_ForeforeignkeyreferencesSY(wno),constraint GZBM_ForeSY(dno),FWY
9、_GZBM_Primkey(wno,dno)11服务信息表FWtnoxftimeFW_Primkey(tno,xftime),wno_uniq12.预定信息表YDcnokey(cno)13.消费信息表XFxnoNOTNULL,fnofn_uniq)14.包含信息表BHfn varchar(10)notin_uniq)15供应信息表.GYinobninameGYS_YCL_Primkey(bn,iname),16.制作信息表ZZcono,六.要求为数据设计一些视图、索引、存储过程和触发器。(1)视图:(1)创建一个服务员工作部门情况的视图YG_BMCREATEVIEWASSELECTwn,dn,
10、F.dnoFROMGZBM G,FWY FWHEREG.dno=F.dno(2)创建一个餐桌状态为“空”的视图CZ_ZTAStly,tnotzt=空(3)创建一个顾客消费情况的视图GK_XFDxno,xly,xtime,fno,C.fn,C.fprice,xsumXFD X,CD CWHERE X.fn=C.fn(4)创建一个供应商供应原材料的基本信息视图GYS_YCLSELECT bn,ino,inameFROM GYS GY, YCL YWHERE GY.ino=Y.ino(5)创建一个顾客预定餐桌的基本信息视图GK_CZSELECT cno,tnoFROM GK, CZWHERE GK.
11、cno=CZ.cno(6)创建一个厨师制作餐点的基本信息视图CS_CDSELECT cono,fnFROM CS,CDWHERE CS.fn=CD.fn2)创建索引:(1)为表服务员FWY在上建立唯一索引CREATE UNIQUE INDEX FWY1 ON FWY(wno)(2)为表CZCREATE UNIQUE INDEX CZ1 ON CZ(tno)(3)为表CDCREATE UNIQUE INDEX CD1 ON CD(fn)(4)为表CSCREATE UNIQUE INDEX CS1 ON CS(cono)(5)为表YCLinCREATE UNIQUE INDEX YCL1 ON Y
12、CL(in)(6)为表GYSCREATE UNIQUE INDEX GYS1 ON GYS(bn)3)存储过程:在服务员表中创建一个名称为InsertRecord的存储过程,该存储过程功能是向服务员表中插入一条记录新记录的值由参数提供PROCEDUREInsetrecordwno char(10),wn varchar(10),mz varchar(4),wbirth smalldatetime,wsex varchar(2),whigh float(6),wxx char(4),wjg varchar(20),wdegree varchar(30),wzw varchar(10),wtime
13、ws intINSERTINTO WVALUES(wno,wn,mz,wbirth,wsex,whigh,wxx,wjg,wdegree,wzw,wtime,ws在餐点表中创建一个名称为QueryCD的存储过程,该存储过程功能是 从数据表中根据餐点编号查询该餐点的餐点名称,单价,数量,查询到结果由参数,fn返回CREATE PROCEDURE QueryCDfnochar(10),fn varchar(10),fpricefsumintfprice=fprice,fsum=fsum,fn=fnWHERE fno=fno在服务员表中使用DROP命令可将InsertRecord存储过程从当前数据库中删除。DROP PROCEDURE Insetrecord4)触发器:创建一个触发器,当向服务员信息表中插入一条记录,自动显示服务员信息表中的记录TRIGGERsjk_1ON FWYFOR insert,update,delete*fromGo创建一个触发器,当向餐点信息表中插入一条记录,自动显示餐点信息表中的记录sjk_2ON CD*FROM CDgo创建一个触发器,当向原材料信息表中插入一条记录,自动显示原材料信息表中的记录sjkON YCL*FROM YCL