4实验报告
实验内容与完成情况:
一、三类完整性的实现
对系表Dept、学生表Student、教师表Teacher、课程表Course、SC表,教师授课表TC,实现规定的完整性,并验证,当操作违反了完整性约束条件时,DBMS如何处理。
--1、Dept表
--? DEPTNO CHAR()
--? E VARCHAR()DNAM
--? 实体完整性:DEPTNO为主码;
--? 用户定义完整性
--①DEPTNO的取值为至;
--②DNAME取值非空且唯一;
CREATE TABLE DEPT
(DEPTNO CHAR(2)PRIMARY KEY
constraint c1 check(DEPTNO between 01 and 99),
DNAME VARCHAR(20)
constraint c2 NOT NULL unique,
);
--2、Student表
-- SNO CHAR()
-- SNAME VARCHAR()
-- SEX CHAR()
-- DEPTNO CHAR()
--
--实体完整性:SNO为主码;
--参照完整性:DEPTNO为外码,并实现级联更新和级联删除操作;
--用户定义完整性
--①SNO取值为级的学号取值范围,如等。
--②SNAME 取值非空;
--③SEX的取值只能为男或女;
CREATE TABLE Student
(SNO CHAR(10)PRIMARY KEY
constraint b1 check(SNO between 2010080000 and 2010089999), Sname varCHAR(8)NOT NULL unique,
Ssex CHAR(2)
constraint b2 check(Ssex in('男','女')),
DEPTNO CHAR(2),
FOREIGN KEY(DEPTNO)REFERENCES DEPT(DEPTNO)
on delete cascade
on update cascade
);
drop table Student
--3、Teacher表
-- TNO CHAR()
-- TNAME VARCHAR()
-- DEPTNO CHAR()
--
--实体完整性:TNO为主码;
--参照完整性:DEPTNO为外码,并实现级联更新和级联删除操作;
--用户定义完整性
--①TNO取值为开头的四位数字字符串;
--②TNAME取值非空;
CREATE TABLE Teacher
(TNO CHAR(3)PRIMARY KEY
constraint a1 check(TNO between 0800 and 0899),
TNAME varCHAR(8)NOT NULL,
DEPTNO CHAR(2),
FOREIGN KEY(DEPTNO)REFERENCES DEPT(DEPTNO)
on delete cascade
on update cascade
);
drop table Teacher
--4、Course表
-- CNO CHAR()
-- TNO CHAR()
-- CNAME VARCHAR()
-- CREDIT SNALLINT
--
--实体完整性:CNO;
--用户定义完整性
--①CNAME取值非空;
--②CREDIT取值为至以内的数字;
--参照完整性:TNO为外码,并实现级联更新和级联删除操作;
CREATE TABLE Course
(CNO CHAR(4),
TNO CHAR(3),
CNAME CHAR(20)NOT NULL,
CREDIT INT check(CREDIT>=1 and CREDIT<=10),
PRIMARY KEY(CNO),
FOREIGN KEY(TNO)REFERENCES Teacher(TNO)
on delete cascade
on update cascade,
);
drop table Course
--5、SC表
-- SNO CHAR()
-- CNO CHAR()
-- GRADE SMALLINT
--
--实体完整性:(SNO,CNO)为主码;
--参照完整性:SNO外码、CNO外码,都实现级联删除和级联更新操作;
--用户定义完整性
-- GRADE取值在到之间。
CREATE TABLE SC
(SNO CHAR(10),
CNO CHAR(4),
GRADE SMALLINT check(GRADE>=0 and GRADE<=100),
PRIMARY KEY(SNO,CNO),
FOREIGN KEY(SNO)REFERENCES Student(SNO)
on delete cascade
on update cascade,
FOREIGN KEY(CNO)REFERENCES Course(CNO)
on delete no action
on update no action,
);
--二、触发器的实现
--1、修改Student表,增加属性CNT,SMALLINT型,表示学生的选课门数,设置CNT的默认值为。
--增加属性SZK,SMALLINT型,表示素质选修课学分。
ALTER TABLE Student ADD CNT SMALLINT;
ALTER TABLE Student ADD SZK SMALLINT;
--在Student表上创建以下触发器。