日期:2014-05-19  浏览次数:20393 次

数据库的完整性设计
有三张表
student表:
      sno                   sname                           ssex                           sbirthday
      108                     小名                             男                               1980-0-1
      105                     张三                             女                               1982-0-15
      110                     混蛋                               男                             2000-12-24
course表:
      cno                   cname  
                                       
    3-105                 计算机                                    
    3-245                   高数        
    3-500                   模电
score表:
      sno                 cno                               degree
 
    108                   3-105                               60
    105                   3-245                               90
现在要实现的功能是:
1、在表格student中插入的学生年龄值在16~25之间。
2、在表格score中插入记录时,其sno和cno的值必须分别在表格student和course中出现。(用CHECK约束和外键约束两种方式实现)
3、在表格course中删除一个记录时,必须同时把表格score中具有同样cno值的记录一起删除。


------解决方案--------------------
add constraint c_1 check(age between 16 and 25)
add constraint c_2 foreign key sno references student(sno)
add constraint c_3 foreign key cno freferences score(cno) on delete cascade


------解决方案--------------------
如上,增加约束即可
------解决方案--------------------
第一个约束你可以将他们按下面的改改在查询分析器中执行,我推荐你在企业管理器中操作:
打开库找到表-设计-工具栏上有一个象表格的图标(带外框)-check约束--粘贴下面的内容-关闭-保存就完成了,其它类

datediff(yy,[sbirthday],getdate()) between 16 and 25
------解决方案--------------------
第一个问题:加约束。
第二个问题:加外键。
第三个问题:加触发器。