试题15(2007年下半年试题42-44)
建立一个供应商、零件数据库。其中“供应商”表S(Sno,Sname,Zip,City)中的属性分别表示:供应商代码、供应商名、供应商邮编、供应商所在城市,其函数依赖为:Sno→(Sname,Zip,City ),Zip→City。“零件”表P(Pno,Pname,Color,Weight,City),表示零件号、零件名、颜色、重量及产地。表S与表P 之间的关系SP(Sno,Pno,Price,Qty)表示供应商代码、零件号、价格、数量。
A.“供应商”表S属于__(42)__。
(42)A.1NF B.2NFC.3NFD.BCNF
B.若要求:供应商代码不能为空,且值是唯一的,供应商的名也是唯一的;零件号不能为空,且值是唯一的;一个供应商可以供应多种零件,而一种零件可以由多个供应商供应。请将下面的SQL语句空缺部分补充完整。
CREATE TABLE S(Sno CHAR(5) __(43)__,
Sname CHAR(30) UNIQUE,
Zip CHAR(8),
City CHAR(20)
__(44)__);
(43)A.FOREIGN KEYB.NOT NULL UNIQUE
C.FOREIGN KEY(Sno)D.PRIMARY KEY(Sname)
(44)A.NOT NULLB.NOT NULL UNIQUE
C.PRIMARY KEY(Sno)D.PRIMARY KEY(Sname)
试题15分析
显然,表S的主键是Sno,说明S至少是2NF。但因为存在Sno→Zip和Zip→City,也就是说,City是传递依赖于主键的,所以S不是3NF。
在给定的SQL语句中,因为Sno是主键,所以(43)空应该填“PRIMARY KEY”,但给出的选项中没有这个词组。试题描述告诉我们,“供应商代码不能为空,且值是唯一的”,所以应该选择B,而在(44)空处填写“PRIMARY KEY(Sno)”。
试题15答案
(42)B(43)B(44)C