1、1写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束: (1) “图书表”结构如下: 书号:统一字符编码定长类型,长度为 6,主键; 书名:统一字符编码可变长类型,长度为30,非空; 第一作者:普通编码定长字符类型,长度为10,非空; 出版日期:小日期时间型; 价格:定点小数,小数部分1位,整数部分3位。(2) “书店表”结构如下: 书店编号:统一字符编码定长类型,长度为6,主键; 店名:统一字符编码可变长类型,长度为30,非空; 电话:普通编码定长字符类型,8位长,每一位的取值均是09的数字; 地址:普通编码可变长字符类型,40位长。邮政编码:普通编码定长字符类型,6位长
2、。(3) “图书销售表”结构如下: 书号:统一字符编码定长类型,长度为6,非空; 书店编号:统一字符编码定长类型,长度为6,非空; 销售日期:小日期时间型,非空; 销售数量:小整型,大于等于1。主键为(书号,书店编号,销售日期) ; 其中“书号”为引用“图书表”的“书号”的外键; “书店编号”为引用“书店表”的“书店编号”的外键。 答:CREATE TABLE 图书表 ( 书号 nchar(6) primary key, 书名 nvarchar(30) not null, 第一作者 char(10) not null, 出版日期 smalldatetime, 价格 numeric(4,1) C
3、REATE TABLE 书店表 ( 书店编号 nchar(6) primary key, 店名 nvarchar(30) not null, 电话 char(8) check (电话 like 0-90-90-90-90-90-90-90-9), 地址 varchar(40), 邮政编码 char(6) CREATE TABLE 图书销售表 ( 书号 nchar(6) not null, 书店编号 nchar(6) not null, 销售日期 smalldatetime not null, 销售数量 smallint check( 销售数量=1), primary key(书号 ,书店编号,
4、销售日期 ), foreign key(书号) references 图书表( 书号), foreign key(书店编号) references 书店表( 书店编号) 1.1为图书表添加“印刷数量”列,类型为整数,同时添加约束,要求此列的取值要大于等于1000。答:ALTER TABLE 图书表 ADD 印刷数量 int check ( 印刷数量=1000) 1.2删除“书店表”中的“邮政编码”列。答:ALTER TABLE 书店表DROP COLUMN 邮政编码1.3将“图书销售表”中的“销售数量”列的数据类型改为整型。答:ALTER TABLE 图书销售表 ALTER COLUMN 销售
5、数量 int 2设某商业集团数据库中有三个实体集:商店:商店编号、商店名、地址商品:商品编号、商品名、规格、单价职工:职工编号、姓名、性别、业绩每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售一种商品时有月销售量;每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。(1)试画出 E-R 图,要求在图上注明属性及联系的类型;(2)将 E-R 图转换成关系模型,并注明主码;(3)根据实际情况,使用 SQL 创建表,包括各种约束;(4)用 SQL 语句查找大于平均业绩的职工姓名;(5)用 SQL 语句创建一个业绩大于 100 的所有男职工信息的视图。(1) (
6、5 分)商 店职 工商 品销 售 聘 用商 店 编 号单 价规 格月 销 售 量地 址商 店 名商 品 名商 品 编 号月 薪聘 期业 绩性 别姓 名职 工 编 号MN1N(2)这个 E-R 图可转换为 4 个关系模式:(8 分)商店(商店编号,商店名,地址) (2 分)职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪) (2 分 )商品(商品编号,商品名,规格,单价) (2 分)销售(商店编号,商品编号,月销售量) (2 分)(3) create shop(Sid char(3) primary key, Sname char(10), Sadd char(50); (2 分)crea
7、te employee(Eid char(3) primary key, Ename char(5), Esex char(1), Each real, Sid char(3),Ere date, Esa int, foreign key (Sid) references (shop); (2 分)create commodity(Cid char(3) primary key, Cname char(10), Csp char(10), Cpr real); (2 分)create vendition(Sid char(3), Cid char(3), Vse int, primary ke
8、y (Sid,Cid), foreign key (Sid) references (shop), foreign key (Cid) references (commodity); (2 分)(4) (4)select Ename from employee x where Each=(select avg(Each) from employee y where y.Each=x.Each);(5) create view Eman(Eid, Ename, Esex, Each, Sid, Ere, Esa)As select Eid, Ename, Esex, Each, Sid, Ere
9、, Es from employee where Each100 and Esex=男;(2 分)3. (共 10 分)设学校数据库中有两个实体集:学生表:学号、姓名、班级课程表:课程号、课程名称、教师某学校有若干学生,每个学生可以选修多门课程,学校有若干课程供学生选修,每门课程可以供多个学生选修,要建立该学校学生选修课程的数据库,请设计:(1)试画出 E-R 图,要求在图上注明属性及联系的类型;(2)将 E-R 图转换成关系模型,并注明主码;(2)这个 E-R 图可转换为 4 个关系模式:(12 分)商店(商店编号,商店名,地址) (3 分)职工(职工编号,姓名,性别,业绩,商店编号,聘期,
10、月薪) (3 分 )商品(商品编号,商品名,规格,单价) (3 分)销售(商店编号,商品编号,月销售量) (3 分)(1) (4 分)学 生 表课 程 表选 修学 号教 师班 级姓 名课 程 号课 程 名 称MN(2)这个 E-R 图可转换为 3 个关系模式:(6 分)课程表(学号,姓名,班级)选修(学号,课程号)课程表(课程号,课程名称,教师)4.一个图书借阅管理数据库要求提供下述服务:1)可随时查询书库中现有书籍的品种,数量与存放位置。所有各类书籍均可由书号唯一标识。2)可随时查询书籍借还情况。包括借书人单位、姓名、借书证号、借书日期和还书日期。约定任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。3)当需要时,可通过数据库中保存的出版社的电报编号、电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。约定一个出版社可以出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。根据以上情况,试构造满足需求的 E-R 图,并转换成等价的关系模型结构。 答案:图略。转换为等价的关系模型结构如下:借书人(借书证号,姓名,单位)图书(书号,书名,数量,位置,出版社名)出版社(出版社名,电报,电话,邮编,地址)借阅(借书证号,书号,借书日期,还书日期)