第三章数据完整性 习题3.5、3.7
(5)已知关系模式如下:
客户C(客户号CNo,客户名CName,地址CAddr)
产品P(产品号PNo,产品名PName,价格Price,供应商PSupp)
订单R(RNo,CNo,PNo,日期RDate,数量Quant)
如果规定一张订单只能订购一种产品,请用SQL Server2016语言创建上述关系模式,并完成以下完整性约束:
①定义相应的实体完整性
CREATE TABLE C(
CNo CHAR(4) PRIMARY KEY , CName CHAR(4) NOT NULL , CAddr CHAR(4) NOT NULL )
CREATE TABLE P(
RNo CHAR(4) PRIMARY KEY , PName CHAR(4) NOT NULL ,
Price REAL NOT NULL, Quant CHAR(4) NOT NULL)
CREATE TABLE R(
RNo CHAR(4) PRIMARY KEY , CNo CHAR(4) NOT NULL , PNo CHAR(4) NOT NULL ,
RDate DATE NOT NULL, Quant CHAR(4) NOT NULL)
②定义相应的参照完整性
ALTER TABLE R
ADD CONSTRAINT CNo_FK FOREIGN KEY(CNo)
REFERENCES C(CNo)
ALTER TABLE R
ADD CONSTRAINT PNo_FK FOREIGN KEY(PNo)
REFERENCES P(PNo)
③定义价格不得高过60(不含60),且不得低于20(含20)
ALTER TABLE P
ADD CONSTRAINT Price
CHECK(Price\>=20 AND Price\<60)
(7)已知雇员关系和部门关系如下:
雇员号 | 雇员名 | 部门号 | 工资 |
---|---|---|---|
001 | 张三 | 02 | 2000 |
010 | 王宏 | 01 | 1200 |
056 | 马林 | 02 | 1000 |
101 | 张三 | 04 | 1500 |
部门号 | 部门号 | 电话 | 地址 |
---|---|---|---|
01 | 业务部 | 000 | A楼 |
02 | 销售部 | 001 | B楼 |
03 | 服务部 | 002 | C楼 |
04 | 财务部 | 003 | D楼 |
①雇员的主键是哪些属性?
雇员号、工资
②雇员的外键是哪些属性?
部门号
③雇员名是雇员关系的候选键吗?
是
④如果部门关系中,财务部的部门号需要调整为06,则雇员关系如何调整?
101号的张三,其部门号04改为06
⑤把雇员马林调往服务部,则雇员关系如何调整?
056号的马林,其部门号02改为03