《数据库系统原理》实验报告(5)

2018-12-05 21:44

一、 实验目的

1、 掌握实体完整性的定义和维护方法; 2、 掌握参照完整性的定义和维护方法; 3、 掌握用户自定义完整性的定义和维护方法;

二、 实验内容和要求

1、定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL语句:创建表时定义实体完整性、创建表后定义实体完整性。设计SQL语句验证完整性约束是否起作用。

2、定义参照完整性,定义参照完整性的违规处理,删除参照完整性。写出两种方式定义参照完整性的SQL语句:创建表时定义参照完整性、创建表后定义参照完整性。

3、针对具体应用语义,选择NULL/NOT NULL、DEFAULT、UNIQUE、CHECK等,定义属性上的约束条件。

三、实验过程

1、实体完整性实验

(1)创建表时定义实体完整性(列级实体完整性) 定义供应商表的实体完整性。 CREATE TABLE Supplier(

suppkey INSERT CONSTRAINT PK_supplier PRIMARY KEY, name CHAR(25),

address VARCHAR(40), nationkey INSERT, phone CHAR(15), acctbal REAL,

comment VARCHAR(101));

(2)创建表时定义实体完整性(表级实体完整性) 定义供应商表的实体完整性。

CREATE TABLE Supplier( suppkey INSERT, name CHAR(25),

address VARCHAR(40), nationkey INSERT, phone CHAR(15), acctbal REAL,

comment VARCHAR(101),

CONSTRAINT PK_supplier PRIMARY KEY(suppkey));

(3)创建表后定义实体完整性 定义供应商表。

CREATE TABLE Supplier( suppkey INSERT, name CHAR(25),

address VARCHAR(40), nationkey INSERT, phone CHAR(15), acctbal REAL,

comment VARCHAR(101));

ALTER TABLE Supplier /*再修改供应商表,增加实体完整性*/ ADD CONSTRAINT PK_Supplier PRIMARY KEY(suppkey);

(4)定义实体完整性(主码由多个属性组成) 定义供应关系表的实体完整性。

CREATE TABLE PartSupp( partkey INTEGER, suppkey INTEGER, availqty INTEGER, supplycost REAL,

comment VARCHAR(199),

PRIMARY KEy (partkey,suppkey));

/*主码由多个属性组成,实体完整性必须定义在表级*/

(5)有多个候选码时定义实体完整性

定义国家表的实体完整性,其中nationkey和name都是候选码,选择nationkey作为主码,name上定义唯一性约束。

CREATE TABLE nation (

nationkey INTEGERCONSTRAINT PK_nation PRIMARY KEY, name CHAR (25) UNIQUE, regionkey INSERT,

comment VARCHAR(152));

(6)删除实体完整性 删除国家实体的主码。

ALTER TABLE nation DROP CONSTRAINT PK_nation;

(7)增加两条相同记录,验证实体完整性是否起作用 /*插入两条主码相同的记录就会违反实体完整性约束*/

INSERT INTO Supplier(suppkey,name,address,nationkey,phone,acctbal,comment) VALUES(11,'test1','test1',101,'12345678',0.0,'test1');

INSERT INTO Supplier(suppkey,name,address,nationkey,phone,acctbal,comment) VALUES(11,'test2','test2',102,'23456789',0.0,'test2');

2、参照完整性实验

(1)创建表时定义参照完整性

先定义地区表的实体完整性,再定义国家表上的参照完整性。

CREATE TABLE region(

regionkey IINTEGER PRIMARY KEY, name CHAR(25),

comment VARCHAR(152));

CREATE TABLE nation(

nationkey IINTEGER PRIMARY KEY, name CHAR(25),

regionkey INTEGER REFERENCES Region(regionkey),/*列级参照完整性*/ comment VARCHAR(152)); 或者

CREATE TABLE nation(

nationkey INTEGER PRIMARY KEY, name CHAR(25), regionkey INTEGER,

comment VARCHAR(152),

CONSTRAINT FK_Nation_regionkey FOREIGN KEY (regionkey) REFERENCES Region(regionkey));/*表级参照完整性*/

(2)创建表后定义参照完整性 定义国家表的参照完整性。

CREATE TABLE nation(

nationkey INTEGER PRIMARY KEY, name CHAR(25), regionkey INTEGER,

comment VARCHAR(152));

ALTER TABLE Nation

FOREIGN KEY (regionkey)REFERENCES Region(regionkey);

(3)定义参照完整性(外码由多个属性组成) 定义订单项目表的参照完整性。

CREATE TABLE PartSupp( partkey INTEGER, suppkey INTEGER, availqty INTEGER, supplycost REAL,

comment VARCHAR(199),

PRIMARY KEy (partkey,suppkey));

CREATE TABLE Lineitem(

orderkey INTEGER REFERENCES Orders(orderkey), partkey INTEGER REFERENCES Part(partkey),

suppkey INTEGER REFERENCES Supplier(suppkey), linenumber INTEGER, quantity REAL, extendedprice REAL, discount REAL, tax REAL,

returnflag CHAR(1), linestatus CHAR(1), shipdate DATE, commitdate DATE, receiptdate DATE,

shipinstruct CHAR(25), shipmode CHAR(10), comment VARCHAR(44),

PRIMARY KEY (orderkey,linenumber),

FOREIGN KEY (partkey,suppkey) REFERENCES PartSupp(partkey,suppkey));

(4)定义参照完整性的违约处理

定义国家表的参照完整性,当删除或修改被参照表时,设置参照表中相应记录的值为空值。

CREATE TABLE nation(

nationkey INTEGER PRIMARY KEY, name CHAR(25), regionkey INTEGER,

comment VARCHAR(152),

CONSTRAINT FK_Nation_regionkey FOREIGN KEY (regionkey)

REFERENCES Region(regionkey) ON DELETE SET NULL ON UPDATE SET NULL);

(5)删除参照完整性 删除国家表的外码

ALTER TABLE nation DROP CONSTRAINT FK_Nation_regionkey;

(6)插入一条国家纪录,验证参照完整性是否起作用

/*插入一条国家纪录,如果‘1001’号地区记录不存在,违反参照完整性约束。*/

INSERT INTONation(nationkey,name,regionkey,comment) VALUES(1001,'nation1',1001,'comment1');

3、用户自定义完整性实验

(1) 定义属性NULL/NOT NULL约束

定义地区表各属性的NULL/NOT NULL属性.

CREATE TABLE region(

regionkey INTEGER NOT NULL PRIMARY KEY, name CHAR (25) NOT NULL, comment VARCHAR(152) NULl);

(2) 定义属性DEFAULT约束

定义国家表的regionkey的缺省属性值为0值,表示其他地区。

CREATE TABLE nation(

nationkey INTEGER PRIMARY KEY, name CHAR(25),

regionkey INTEGER DEFAULT 0, comment VARCHAR(152), CONSTRAINT FK_Nation_regionkey FOREIGN KEY(regionkey) REFERENCES Region(region));

(3)定义属性UNIQUE约束

定义国家表的名称属性必须唯一的完整性约束。

CREATE TABLE nation(

nationkey INTEGER PRIMARY KEY, name CHAR (25) UNIQUE,


《数据库系统原理》实验报告(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:WSET3知识点笔记(一)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: