SQL Server中创建表,设置完整性约束

建立一个供应商、零件关系库,
其中关系供应商S(Sno,Sname,Status,City)属性分别表示供应商代码、供应商名称、供应商状态、供应商城市。
其中关系零件P(Pno,Pname,Color,Weight,City)属性分别表示零件号、零件名称、颜色、重量、产地。
要求如下:
1)供应商代码不能是空的,且是唯一的。供应商的名称也必须是唯一的。
2)零件号不能是空的,且是唯一的。零件名称不能是空的。
3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。

以下是具体的Create语句:

CREATE TABLE S(
Sno INT,
Sname VARCHAR(100) UNIQUE,
Status VARCHAR(100),
City VARCHAR(100) ,
PRIMARY KEY(Sno)
)

CREATE TABLE P(
Pno INT,
Pname VARCHAR(100) NOT NULL,
Color VARCHAR(100),
Weight INT,
City VARCHAR(100),
PRIMARY KEY(Pno)
)

CREATE TABLE SP(
Sno INT,
Pno INT,
quality INT,
PRIMARY KEY(Sno,Pno),
FOREIGN KEY(Sno) REFERENCES S(Sno),
FOREIGN KEY(Pno) REFERENCES P(Pno)
)

对于约束的分析:
1、主键约束:
单属性主键:在表S中,设置属性Sno为主键。由于主键本身要求非空且唯一,所以在Sno列处不用再加上unique和not null的约束。单属性主键也可以在列Sno后方直接定义,如:

CREATE TABLE S(
Sno INT PRIMARY KEY,
Sname VARCHAR(100) UNIQUE,
Status VARCHAR(100),
City VARCHAR(100) 
)

联合主键:在表SP中,属性Sno和Pno共同构成联合主键。
2、外键约束:在表SP中,Sno来源于表S的Sno,所以需要设置外键约束。Pno字段同理。
3、非空约束:属于列级完整性约束条件,在列定义时设置 。
4、唯一约束:属于列级完整性约束条件,在列定义时设置 。
5、check约束:本例子中没有涉及。比如表S中City只能设置为“北京”或“上海”,则可以进行如下设置:

CREATE TABLE S(
Sno INT PRIMARY KEY,
Sname VARCHAR(100) UNIQUE,
Status VARCHAR(100),
City VARCHAR(100),
CHECK ( City IN ('北京','上海'))
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值