- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库系统概论实验
10软件1班 22号 周超
实验八
一、实验内容
以SPJ数据库为例,完成以下要求
定义S、P、J、SPJ实体完整性
表间的参照完整性
用户定义完整性
二、实验过程
SQL定义各表
SQL:
CREATE DATABASE SPJ
ON(NAME=SPJ_DATA,
FILENAME=E:\SPJ.mdf,
SIZE=5MB,
FILEGROWTH=10%)
USE SPJ
CREATE TABLE S
(SNO CHAR(4) PRIMARY KEY,
SNAME CHAR(20) UNIQUE,
STATUS INT CHECK (STATUS=10 AND STATUS=50),
CITY CHAR (20) NOT NULL);
CREATE TABLE P
(PNO CHAR(4) PRIMARY KEY,
PNAME CHAR(20) NOT NULL,
COLOR CHAR (10) NOT NULL,
WEIGHT SMALLINT NOT NULL);
CREATE TABLE J
(JNO CHAR(4) PRIMARY KEY,
JNAME CHAR(20) UNIQUE,
CITY CHAR(20) NOT NULL);
CREATE TABLE SPJ
(SNO CHAR(4),
PNO CHAR(4),
JNO CHAR(4),
QTY INT NOT NULL,
PRIMARY KEY(SNO,PNO,JNO),
FOREIGN KEY(SNO) REFERENCES S(SNO),
FOREIGN KEY (PNO) REFERENCES P(PNO),
FOREIGN KEY (JNO) REFERENCES J(JNO));
附表:S表
P表
SPJ表
J表
2、(举例,违反3类完整性)
2.1、违反实体完整性(记下出错提示)
1、主码值不唯一
在J表中插入如下数据时
INSERT
INTO J
VALUES (J1,三建,北京);
INSERT
INTO J
VALUES (J1,一汽,长春);
会出现提示错误:消息2627,级别14,状态1,第1 行
违反了PRIMARY KEY 约束PK__J__0425A276。不能在对象dbo.J 中插入重复键。
语句已终止。
2、主码属性值为空
在J表中插入以下数据时
INSERT
INTO J
VALUES (null,无线电厂,常州);
出现错误提示:
消息515,级别16,状态2,第1 行
不能将值NULL 插入列JNO,表SPJ.dbo.J;列不允许有空值。INSERT 失败。
语句已终止。
2.2、违反参照完整性(记下出错提示)
在参照表中插入元组
在SPJ表中插入如下数据
INSERT
INTO SPJ
VALUES(S6,P1,J1,200);
出现提示错误:
消息547,级别16,状态0,第1 行
INSERT 语句与FOREIGN KEY 约束FK__SPJ__SNO__1CF15040冲突。该冲突发生于数据库SPJ,表dbo.S, column SNO。
语句已终止。
在参照表中修改外码值
在SPJ表中修改数据,输入如下SQL语句
UPDATE SPJ
SET SNO=S6
WHERE SNO=S1;
出现提示错误:
消息547,级别16,状态0,第1 行
UPDATE 语句与FOREIGN KEY 约束FK__SPJ__SNO__1CF15040冲突。该冲突发生于数据库SPJ,表dbo.S, column SNO。
语句已终止。
在被参照表中删除元组
在J表中删除元组,输入如下语句并执行
DELETE
FROM J
WHERE JNO=J2;
出现提示错误:
消息547,级别16,状态0,第1 行
DELETE 语句与REFERENCE 约束FK__SPJ__JNO__1ED998B2冲突。该冲突发生于数据库SPJ,表dbo.SPJ, column JNO。
语句已终止。
在被参照表中修改外码值
在P表中修改数据,输入如下语句
UPDATE p
SET PNO=P7
WHERE PNO=P5;
出现提示错误:
消息547,级别16,状态0,第1 行
UPDATE 语句与REFERENCE 约束FK__SPJ__PNO__1DE57479冲突。该冲突发生于数据库SPJ,表dbo.SPJ, column PNO。
语句已终止。
2.3、违反用户定义完整性(记下出错提示)
1、违反列值非空
在J 表中插入以下数据时
INSERT
INTO J1
VALUES (J7,半导体厂,null);
出现错误提示:
消息515,级别16,状态2,第1 行
不能将值NULL 插入列CITY,表SPJ
文档评论(0)