数据库概论(实验五)数据库完整性

                                        实验五  数据库完整性

【实验目的】

    1、掌握实体完整性约束、参照完整性约束

    2、灵活应用自定义完整性约束

    3、了解触发器在自定义完整性中的应用

 

【实验内容】

一、定义一个教师表Teacher(Tno,TName,TSex,TAge,TSal,TJob,TDept)
要求:
    1、性别只能是‘男’或‘女’
    2、Tno为主码,名字不能为空,且不能重复。
    3、年龄在18在60岁之间
    4、教授工资最低为5000(触发器完成)
    5、所在系Tdept,为外码,参照于DEPT表(注:DEPT表需要预先定义,当DEPT表删除元组时,相对应Teacher元组拒绝删除;修改时,相对应Teacher元组同时修改)。


二、定义记录表Record(RNo,TNo,ROldSal,RNewSal,RUser,RTime)
要求:
    1、RNo从1开始,每次加1为。主码
    2、TNo为外码,参照Teacher表。


     第一题和第二题参考:

    

 

三、定义触发器与触发器的执行
    1、定义触发器Insert_Teacher,当插入Teacher一行元组时,会将该元组信息如:教师编号TNo,工资等信息,自动插入到表Record中(ROldSal为0)。

    参考代码:

   

 

    测试数据

   

 

    2、定义触发器Update_Teacher,每当修改Teacher数据,且工资发生变动时,会自动记录工资变动情况到Record表。

    参考代码:

   

 

    测试代码:

   

 

    3、定义触发器Delete_Teacher,当删除Teacher数据时,会自动记录删除数据情况到Delete_teacher表。即记录教师所有信息和用户及删除时间。(自己完成)

 


    4、完成以上触发器的测试。

    说明:

    1)能够触发Insert_Teacher触发器的,有对Teacher表进行Insert操作和Update操作。

    2)能够触发Delete_Teacher触发器的,有对Teacher表进行Delete操作和Update操作。

    3)能够触发Update_Teacher触发器的,只有有对Teacher表进行Update操作。

 

【课外实验】

    一、建立如下关系表

         工程表(工程号,工程名,开工日期,竣工日期,状态,城市,项目经理号)

         职工表(职工号,姓名,年龄,籍贯,职称,基本工资)

         岗位表(岗位号,岗位名)

         工资表(序号,职工号,月份,绩效工资,奖金)

    要求:1、籍贯只记城市。

            2、正确确定四个表的主码

            3、通过外码,正确把握关系间的联系

            4、工程与职工具有多对多的联系,建立一个工程_职工表(工程号,职工号,岗位号,入职时间,状态) 

            5、工程表的状态有两种状态(0:未完工,1:已完工)

                工程_职工表的状态有两种(0:在职,2:已离职) 

            6、工资表的月份只能取1-12,奖金只能取100的倍数 

            7、职工表的年龄取值范围是18-60;职称取值为:初级、中级、高级;要求所有人员基本工资不低于800,高级人员的基本工资不低于4500.

           

    二、创建视图工资视图(序号,职工号,月份,基本工资,绩效工资,奖金,五险一金,应发,个人所得税,实发)

 

    三、是否能删除工程表的工程

 

posted @ 2008-10-29 11:24  涛涌四海  阅读(710)  评论(0编辑  收藏  举报