第十章数据库完整性.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:34 大小:279KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

第十章数据库完整性.ppt

第十章数据库完整性.ppt

预览

免费试读已结束,剩余 24 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

10.1完整性约束条件一、静态列级约束3.对取值范围或取值集合的约束例如,规定学生成绩的取值范围为0~100,大学本科学生年龄的取值范围为14….29,性别的取值集合为[男,女]。4.对空值的约束空值表示未定义或未知的值,它与零值和空格不同。有的列允许空值,的则不允许。例如学生学号不能取空值,成绩可以为空值。5.其他约束例如关于列的排序说明,组合列等。二、静态元组约束三、静态关系约束四、动态列级约束五、动态元组约束六、动态关系约束10.2完整性控制•立即执行约束:检查是否违背完整性约束的时机通常是在一条语句执行完后立即检查,称这类约束为立即执行约束(ImmediateConstraints)。•延迟执行约束:有时完整性检查需要延迟到整个事务执行结束后再进行,检查正确方可提交,称这类约束为延迟执行约束(DeferredConstraints)。例如银行数据库中“借贷总金额应平衡”的约束就应该是延迟执行的约束,从账号A转一笔钱到账号B为一个事务,从账号A转出去钱后账就不平了,必须等转入账号B后账才能重新平衡,这时才能进行完整性检查:如果发现用户操作请求违背了完整性约束条件,系统将拒绝该操作,但对于延迟执行的约束,系统将拒绝整个事务,把数据库恢复到该事务执行前的状态。•完整性规则的表示一条完整性规则可以用一个五元组(D,O,A,C,P)来表示,其中:D(Data)约束作用的数据对象;O(Operation)触发完整性检查的数据库操作,A(Assertion)数据对象必须满足的断言或语义约束,这是规则的主体;C(Condition)选择A作用的数据对象值的谓词:P(Procedure)违反完整性规则时触发的过程。实现参照完整性要考虑的几个问题2.在被参照关系中删除元组的问题例如要删除Student关系中Sno=95001的元组,而SC关系中又有4个元组的Sno都等于95001,有三种不同的策略:(1)级联删除(CASCADES)将参照关系中所有外码值与被参照关系中要删除元组主码值相同的元组一起删除。例如将上面SC关系中4个Sno=95001的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去。(2)受限删除(RESTRICTED)仅当参照关系中没有任何元组的外码值与被参照关系中要删除元组的主码值相同时,系统才执行删除操作,否则拒绝此删除操作。例如对于上面的情况,系统将拒绝删除Student关系中Sno=95001的元组。(3)置空值删除(NULLIFIES)删除被参照关系的元组,并将参照关系中相应元组的外码值置空值。例如将上面SC关系中所有Sno=950001的元组的Sno值置为空值。3.在参照关系中插入元组时的问题(2)递归插入首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。例如对于上面的情况,系统将首先向Student关系插入Sno=99001的元组,然后向SC关系插入(99001,1,90)元组。4.修改关系中主码的问题(1)不允许修改主码•在有些RDBMS中,修改关系主码的操作是不允许的.•如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。(2)允许修改主码•有些RDBMS中,允许修改关系主码,但必须保证主码的唯一性和非空,否则拒绝修改。•当修改的关系是被参照关系时,还必须检查参照关系,是否存在这样的元组,其外码值等于被参照关系要修改的主码值。例如要将Student关系中Sno=950001的Sno值改为96012,而SC关系中有4个元组的Sno=950001,这时可以有:级联修改、拒绝修改、置空值修改。10.3Oracle的完整性