实验七 数据库的完整性

时间:2025-07-15

实验七 数据库的完整性

一、实验目的

1.理解关系数据库中关于数据库完整性的概念

2.掌握实体完整性的定义方法

3.掌握参照完整性的定义方法

4.掌握用户自定义完整性的方法

二、实验环境(实验的软件、硬件环境)

硬件:PC机 软件:SQL2000

三、实验说明

请复习数据库完整性的相关知识点,完成如下实验内容。

四、实验内容

(1)重建orderDB数据库中的表,分别为每张表建立主键,外键。

(2)各表的用户定义的完整性如下:

员工表:员工姓名,电话属性为not null;员工编号构成:年流水号,共8位,第一位为E,如E2008001,年份取雇佣日期的年份;性别:f表示女,m表示男。

create table employee_o

(

ename varchar(20) not null, eno varchar(10) primary key check(eno like 'E[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), hiredate datetime default getdate(), esex char(1) check(esex in('f','m')) default 'f', edepartment varchar(20) not null, ecareer varchar(20) not null, esalary numeric(8,2) not null, constraint c1 check(substring(eno,2,4) = year(hiredate)) )

substring第二个参数是开始的位置,第三个参数是所计算个数

商品表:商品编号、商品名称、商品类别、建立日期设为not null;商品 1

编号构成:年流水号,共9位,第一位为P,如P20080001,年份取建立日期的年份

create table product_o

(

pno varchar(10) primary key check(pno like 'E[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), pname varchar(20) not null, pclass varchar(40) not null, createdate datetime not null default getdate(), constraint c2 check(substring(pno,2,4) = year(createdate)) )

客户表:员工编号、姓名、性别、所属部门、职称、薪水设为not null;客户号构成:年流水号,共9位,第一位为C,如C20080001,年份取建立日期的年份

create table customer_o

(

cno varchar(10) primary key check(cno like 'E[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), cname varchar(20) not null, csex varchar(1) check(csex in('f','m')) default 'f', ccreatedate datetime not null default getdate(), constraint c3 check(substring(cno,2,4) = year(ccreatedate)) )

订单主表:订单编号的构成:年月日流水号,共12位,如200708090001;订单编号、客户编号、员工编号、发票号码设为not null;业务员必须是员工;订货日期和出货日期的默认值设为系统当前日期;订单金额默认值为0;发票号码建立unique约束。

create table ordermaster_o

(

orderno varchar(20) primary key check(orderno like cno varchar(10) not null, eno varchar(10) not null, invoiceno varchar(20) unique, podate datetime default getdate(), deliverydate datetime default getdate(), ordersum numeric(10,0) default 0, 2 '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),

foreign key (eno) references employee_o(eno), foreign key (cno) references customer_o(cno), constraint c4 check(substring(orderno,1,8)=

convert(varchar(8),podate,120))

)

订单明细表:订单编号、商品编号、数量、单价设为not null。 create table orderdetail_o

(

orderno varchar(20) not null, pno varchar(10) not null, qty int not null, price numeric(8,2) not null, foreign key(orderno) references ordermaster_o(orderno), foreign key(pno) references product_o(pno), primary key(orderno,pno)

)

五、实验步骤

请完成实验内容,并写出具体的实验步骤

六、思考题:

1.什么是数据库的完整性?

2.SQLServer数据完整性的实现方式有(1)声明数据完整性,(2)过程数据完整性,请区别他们的异同和使用情况?

七、总结(实验过程的体会、心得和实验教与学之间还需改进的内容)

3

…… 此处隐藏:523字,全部文档内容请下载后查看。喜欢就下载吧 ……
实验七 数据库的完整性.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

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