《数据库完整性代码》由会员分享,可在线阅读,更多相关《数据库完整性代码(5页珍藏版)》请在金锄头文库上搜索。
1、4 实验报告数据库原理实验报告实验题目:数据完整性姓名吴位吕日期2012-5-22实验环境:XP Windows系统环境Microsoft SQL Server 2005 中 SQL Server Management Studio实验内容与完成情况:一、三类完整性的实现对系表Dept、学生表Student、教师表Teacher、课程表Course、SC表,教师授课表TC,实现规定的完整性,并验证,当操作违反了完整性约束条件时,DBMS如何处理。-1、Dept表-?DEPTNO CHAR()-?E VARCHAR()DNAM-?实体完整性:DEPTNO为主码;-?用户定义完整性-DEPTNO的
2、取值为至;-DNAME取值非空且唯一;CREATE TABLE DEPT(DEPTNO CHAR(2)PRIMARY KEYconstraint c1 check(DEPTNO between 01 and 99),DNAME VARCHAR(20) constraint c2 NOT NULL unique,);-2、Student表-l SNO CHAR()-l SNAME VARCHAR()-l SEX CHAR()-l DEPTNO CHAR()- 实体完整性:SNO为主码;- 参照完整性:DEPTNO为外码,并实现级联更新和级联删除操作;- 用户定义完整性-SNO取值为级的学号取值范
3、围,如等。-SNAME 取值非空;-SEX的取值只能为男或女;CREATE TABLE Student(SNO CHAR(10)PRIMARY KEYconstraint 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 cascadeon update ca
4、scade);drop table Student-3、Teacher表-l TNO CHAR()-l TNAME VARCHAR()-l DEPTNO CHAR()- 实体完整性:TNO为主码;- 参照完整性:DEPTNO为外码,并实现级联更新和级联删除操作;- 用户定义完整性-TNO取值为开头的四位数字字符串;-TNAME取值非空;CREATE TABLE Teacher(TNO CHAR(3)PRIMARY KEYconstraint a1 check(TNO between 0800 and 0899),TNAME varCHAR(8) NOT NULL ,DEPTNO CHAR(2)
5、,FOREIGN KEY (DEPTNO)REFERENCES DEPT(DEPTNO)on delete cascadeon update cascade);drop table Teacher-4、Course表-l CNO CHAR()-l TNO CHAR()-l CNAME VARCHAR()-l CREDIT SNALLINT- 实体完整性:CNO;- 用户定义完整性-CNAME取值非空;-CREDIT取值为至以内的数字;- 参照完整性:TNO为外码,并实现级联更新和级联删除操作;CREATE TABLE Course(CNO CHAR(4),TNO CHAR(3),CNAME C
6、HAR(20) NOT NULL,CREDIT INT check(CREDIT=1 and CREDIT=0 and GRADE8) update student set szk=8 where sno in(select sno from inserted)drop trigger id-2、修改Teacher表,增加属性ZC,char(5),表示教师的职称,增加属性GZ,money,表示教师的工资。-在Teacher表上创建触发器,实现当职称为副教授时,GZ如果低于,则自动修改为。ALTER TABLE Teacher ADD ZC char(5);ALTER TABLE Teacher
7、 ADD GZ money;create trigger tirg5on Teacherfor insert,updateas declare j char(5)declare k moneyselect j=ZC from insertedselect k=GZ from insertedif ( j=副教授 and k3000)begin update Teacher set GZ=4000 where ZC=副教授 and GZ3000end出现的问题:在开始的时候,用户定义完整性和参照完整性:SNO外码、CNO外码中,要都实现级联删除和级联更新操作时,有些地方不是很清楚;在后面的触发器的创建,建在不对的表上时,触发器不能运行;触发器中有的触发器不是很能创建,特别是最后的两题;解决方案(列出遇到的问题和解决办法,列出没有解决的问题):通过相配给的教科书,可以完成用户定义完整性和参照完整性:SNO外码、CNO外码中,要都实现级联删除和级联更新操作时。通过网上查询和相应的课件,创建触发器