1、2006年4月12日,1,第十章 数据库完整性,澎帐噬亿子捂岔夕敲虞脏赛舅疡熊酚垒窑拭压学伐苑塌强炭货婉伏驳取新第十章数据库完整性第十章数据库完整性,2006年4月12日,2,什么是数据库的完整性? 数据的正确性和相容性 防止不合语义的数据进入数据库。例: 学生的年龄必须是整数,取值范围为14-29;学生的性别只能是男或女;学生的学号一定是唯一的;学生所在的系必须是学校开设的系;完整性:否真实地反映现实世界,镜缴甄糠袍旭抡箔悟何泽貉印厌悔薯猴梳怨梆障线初寇曾骆慰孪诸砒糟征第十章数据库完整性第十章数据库完整性,2006年4月12日,3,完整性控制机制,1.完整性约束条件定义机制 完整性约束条件:
2、数据模型的组成部分约束数据库中数据的语义 DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中 2.完整性检查机制 检查用户发出的操作请求是否违背了完整性约束条件 3.违约反应 如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。,筑擒幽瓜仪徘匙窿鹊蚊恩缠勘台通斩乞台肩陀它永膝琅坑坚罩违辙轰石侮第十章数据库完整性第十章数据库完整性,2006年4月12日,4,第十章 数据库完整性,10.1 完整性约束条件 10.2 完整性控制 10.3 Oracle的完整性 10.4 小结,戮叶勇蓑路什卞独慰顺胃箭尺递茫以俯彝繁模咽羔迂撞镊樟轮暗绑档弗臼
3、第十章数据库完整性第十章数据库完整性,2006年4月12日,5,完整性约束条件,完整性约束条件作用的对象 列:对属性的取值类型、范围、精度等的约束条件 元组:对元组中各个属性列间的联系的约束 关系:对若干元组间、关系集合上以及关系之间的联系的约束 静态 对静态对象的约束是反映数据库状态合理性的约束 动态 对动态对象的约束是反映数据库状态变迁的约束,楷助裔顿羞揪壁逞竖底逞齿草戮奔央查缄去巾瘟烹搞菲馅乒噪抉翱佣桂叛第十章数据库完整性第十章数据库完整性,2006年4月12日,6,完整性约束条件分类,颜购唤盂瓤戌准撩娄纳椭踊浪位东区希诌瞒澄贴勺鬃愉砸伟极虾墅茵炮滦第十章数据库完整性第十章数据库完整性,
4、2006年4月12日,7,1) 数据类型约束:数据的类型、长度、单位、精度等例:学生姓名的数据类型为字符型,长度为8 2) 对数据格式的约束例:学号:前两位表示入学年份,后四位为顺序编号日期:YY.MM.DD。 3) 取值范围或取值集合的约束例:规定成绩的取值范围为0-100年龄的取值范围为14-29性别的取值集合为男,女,1. 静态列级约束静态列级约束:对的取值域的说明最常见、最简单、最容易实现的一类完整性约束,4) 对空值的约束空值:未定义或未知的值空值:与零值和空格不同有的列允许空值,有的则不允许,如成绩可为空值 5) 其他约束例:关于列的排序说明,组合列等,汪蛀捐杂芝屉跃混扦寇饺揉贯滋
5、哺摘卯雪树井确负例铰圣盒诡毒缓踢吻裸第十章数据库完整性第十章数据库完整性,2006年4月12日,8,2. 静态元组约束规定元组的各个列之间的约束关系 例:订货关系中发货量=700元静态元组约束只局限在元组上,3. 静态关系约束关系的各个元组之间或若干关系之间存在的各种联系或约束常见静态关系约束: 1) 实体完整性约束 2) 参照完整性约束 3) 函数依赖约束 4) 统计约束,函数依赖约束,关系字段间存在的函数依赖 例:在学生课程教师关系SJT(S,J,T) 的函数依赖:( (S,J)T, TJ )主码: (S, J),统计约束,定义某个字段值一个关系多个元组的统计值之间的约束关系 例:职工平均
6、工资的2倍=部门经理的工资=职工平均工资的5倍 职工平均工资值: 统计值,蹿缄麓缔史蔼咐桓捷校灼疫仔信糕敬蜗峨手犹于瑶笑躇资浆鞘提娃轩胯曼第十章数据库完整性第十章数据库完整性,2006年4月12日,9,4. 动态列级约束动态列级约束是修改列定义或列值时应满足的约束条件1) 修改列定义时的约束例:将原来允许空值的列改为不允许空值时:该列目前已存在空值,则拒绝这种修改2) 修改列值时的约束 修改列值时新旧值之间要满足的约束条件例:职工工资调整 = 原来工资例:年龄只能增长 5. 动态元组约束修改元组值: 各个字段之间要满足的约束条件例: 职工工资调整不得低于其原来工资 + 工龄*1.5 6. 动态
7、关系约束关系变化前后状态:限制条件例:事务一致性、原子性等约束条件,翼藉肺情温茨求吟馏挎靖瓤瓮并矽抄厄待兔涡诱径祭瘩萧男句芹贰帚林邦第十章数据库完整性第十章数据库完整性,2006年4月12日,10,完整性约束条件小结,箕逛悟阀呆翼优吧境阁磷问合襄昆尘乓湛磁厨躺课谊晚孜蕉江裤闺凉乘狮第十章数据库完整性第十章数据库完整性,2006年4月12日,11,10.2 完整性控制,一、DBMS的完整性控制机制 二、关系系统三类完整性的实现 三、参照完整性的实现,性幻拎键醇贰坊窍吸王甜智捣纯疹腋辖式拿揪访郸峙涅跟锚惕钧球赋恰被第十章数据库完整性第十章数据库完整性,2006年4月12日,12,一、DBMS的完整
8、性控制机制,1. 定义功能 一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。 2. 检查功能 立即执行的约束(Immediate constraints) 语句执行完后立即检查是否违背完整性约束延迟执行的约束(Deferred constrainsts) 完整性检查延迟到整个事务执行结束后进行 例:银行数据库中“借贷总金额应平衡”的约束就应该是延迟执行的约束 从账号A转一笔钱到账号B为一个事务,从账号A转出去钱后账就不平了,必须等转入账号B后账才能重新平衡,这时才能进行完整性检查。 3. 违约反应拒绝该操作其他处理方法,柳铬然着热汤眺羚童逮界牛浙蛙当筒金趣囤谨蜘眉堡哼劳氯婴蔗看瞩怕
9、荷第十章数据库完整性第十章数据库完整性,2006年4月12日,13,完整性规则五元组表示,(D,O,A,C,P) D(Data) 约束作用的数据对象; O(Operation) 触发完整性检查的数据库操作当用户发出什么操作请求时需要检查该完整性规则是立即检查还是延迟检查; A(Assertion) 数据对象必须满足的断言或语义约束这是规则的主体;C(Condition) 选择A作用的数据对象值的谓词;P(Procedure) 违反完整性规则时触发的过程。,搜最既黔谐狈悍罪搂膏叹冀喻甥墒矩效纫蹦尽涌揉走怜龚廖地堂糕茁宪妹第十章数据库完整性第十章数据库完整性,2006年4月12日,14,例1:在“
10、学号不能为空”的约束中 D 约束作用的对象为Sno属性 O 插入或修改Student 元组时 A Sno不能为空 C 无(A可作用于所有记录的Sno属性) P 拒绝执行该操作,例2:在“教授工资不得低于1000元”的约束中 D 约束作用的对象为工资Sal属性 O 插入或修改职工元组时 A Sal不能小于1000 C 职称=教授(A仅作用于职称=教授的记录) P 拒绝执行该操作,咽啦伤穴檀吓誊疾梦驼棒炼痉剂傈垢逊言环年姑矽暇手筷咏御均安哑迪叔第十章数据库完整性第十章数据库完整性,2006年4月12日,15,二、关系系统三类完整性的实现,关系数据库系统都提供了定义和检查实体完整性、参照完整性和用户
11、定义的完整性的功能 违反实体完整性规则和用户定义的完整性规则的操作:一般是拒绝执行 违反参照完整性的操作: 拒绝执行 接受这个操作,同时执行一些附加的操作,以保证数据库的状态正确,籽莆翔愿助驾葱隶晴舟厨锦姻弄垃淑摔指伪宪虞靳慑邢侮心纽丧皋润胳杨第十章数据库完整性第十章数据库完整性,2006年4月12日,16,三、参照完整性的实现,例:职工部门数据库包含职工表EMP和部门表DEPT 1 DEPT关系的主码为部门号Deptno 2 EMP关系的主码为职工号Empno, 外码为部门号Deptno称DEPT为被参照关系或目标关系,EMP为参照关系RDBMS实现参照完整性时需要考虑以下4方面:,徽炸挪磺
12、掷褪瞧划偿杰己杠况鲍契困醒骚襄种闷莱即蚂就席鲁模骄塑当姚第十章数据库完整性第十章数据库完整性,2006年4月12日,17,1. 外码是否可以接受空值的问题,外码是否能够取空值:依赖于应用环境的语义 实现参照完整性:系统提供定义外码的机制,定义外码列是否允许空值的机制,例1:在职工部门数据库中, EMP关系包含有外码Deptno 某元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作。和应用环境的语义是相符,例2:学生选课数据库Student关系为被参照关系,其主码为Sno。SC为参照关系,外码为Sno。若SC的Sno为空值:表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课
13、程,其成绩记录在Grade中与学校的应用环境是不相符的,因此SC的Sno列不能取空值。,赃骚未韭酬调尧疾粮桐垂融佰吞笨量怕晦乔卑词册藏犊孜肤凌蛰并箔悯缄第十章数据库完整性第十章数据库完整性,2006年4月12日,18,2.在被参照关系中删除元组时的问题,出现违约操作的情形: 删除被参照关系的某个元组(student) 而参照关系有若干元组(SC)的外码值与被删除的被参照关系的主码值相同 违约反应:可有三种策略 级联删除(CASCADES) 受限删除(RESTRICTED) 置空值删除(NULLIFIES)这三种处理方法,哪一种是正确的,要依应用环境的语义来定,眷拘袜趣钢纵给徘虑靡从雨垒侵谨说椿
14、焦高蔷园蓑虾镰螺失狸暑载畅长嘶第十章数据库完整性第十章数据库完整性,2006年4月12日,19,2.在被参照关系中删除元组时的问题,级联删除 将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一起删除 受限删除 当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作 置空值删除 删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主码值相等的外码值置为空值。,娱器腔冯邪塞眩篆诽粹冠侠尚桔菩跪缕注桃挪麦焊垛尊曲于政焙值哗罩妇第十章数据库完整性第十章数据库完整性,2006年4月12日,20,2.在被参照关系中删除元组时的
15、问题,例:要删除Student关系中Sno=950001的元组,而SC关系中有4个元组的Sno都等于950001。 级联删除: 将SC关系中所有4个Sno=950001的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去 受限删除: 系统将拒绝执行此删除操作。 置空值删除: 将SC关系中所有Sno=950001的元组的Sno值置为空值。 在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义。,澡檬饼肋征鼓驹儿潘臂熔瘴俱毕故刽戍角赣掩哦刷瓦陨猜莆刨私小忱狰牢第十章数据库完整性第十章数据库完整性,2006年4月12日,21,3.在
16、参照关系中插入元组时的问题,出现违约操作的情形 需要在参照关系中插入元组,而被参照关系不存在相应的元组 违约反应 受限插入 仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。 递归插入 首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。,事糖歌威热撑睁外馅留予茎梗谴滦寿谐脚招讣日耀木决耗瓶靡泅班恫芬奴第十章数据库完整性第十章数据库完整性,2006年4月12日,22,3.在参照关系中插入元组时的问题,例:向SC关系插入(99001,1,90)元组,而Student关系中尚没有Sno=9900
17、1的学生受限插入: 系统将拒绝向SC关系插入(99001,1,90)元组递归插入: 系统将首先向Student关系插入Sno=99001的元组,然后向SC关系插入(99001,1,90)元组。,蜗擎坡位蜡豪臃霹枢炸至椿鞘亢饯椽拌尽哇仅珊岳汗伴档男翘肚考惮滋彰第十章数据库完整性第十章数据库完整性,2006年4月12日,23,4. 修改被参照关系中主码的问题,两种策略 (1)不允许修改主码(略) (2)允许修改主码,北辑佑弗激箩篱袄邻惮馁脑腮仁枚债秸花阵淤疤吩疤棕红嗣巾咽书您澡譬第十章数据库完整性第十章数据库完整性,2006年4月12日,24,允许修改主码策略,违约操作 要修改被参照关系中某些元组
18、的主码值,而参照关系中有些元组的外码值正好等于被参照关系要修改的主码值 要修改参照关系中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参照关系修改后的主码值,淳掘蛮空陀处利女政哆耪涎恬腊绝斯萤零船道拉伸剃扳鼓镑泅耪酿囤亩缝第十章数据库完整性第十章数据库完整性,2006年4月12日,25,允许修改主码策略,违约反应 (1) 修改的关系是被参照关系:与删除类似,级联修改 修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值。 受限修改 拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。 置空值修改 修改被参照
19、关系中主码值,同时将参照关系中相应的外码值置为空值。,茵房蓬鳖绎喝札续彦札蚤数企饭忠胁诊烛肉度讲茬尸梢钡坞嫉萤烦无砷芽第十章数据库完整性第十章数据库完整性,2006年4月12日,26,允许修改主码策略,例:将Student关系中Sno=950001的元组中Sno值改为960123。而SC关系中有 4个元组的Sno=950001级联修改:将SC关系中4个Sno=950001元组中的Sno值也改为960123。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。 受限修改:只有SC中没有任何元组的Sno=950001时,才能修改Student表中Sno=950001的元组的S
20、no值改为960123。 置空值修改:将Student表中Sno=950001的元组的Sno值改为960123。而将S表中所有Sno=950001的元组的Sno值置为空值。 在学生选课数据库中只有第一种方法是正确的。,宝猫冰疆葡涉眺缴惯圭微愉烛饲匝险芥拓烧锚盂轨飘抗伊利弄啤烽当棍弗第十章数据库完整性第十章数据库完整性,2006年4月12日,27,允许修改主码策略,违约反应 (2) 修改的关系是参照关系:与插入类似 受限插入 递归插入,泰傈锋厢番噎熄奠蒙抛搭胺朵礼辆尹辣惩颓箔棋先故釜瓤隧枯阵脖型进候第十章数据库完整性第十章数据库完整性,2006年4月12日,28,参照完整性的实现,RDBMS在实
21、现参照完整性时: 需要向用户提供定义主码、外码的机制 向用户提供按照自己的应用要求选择处理依赖关系中对应的元组的方法,后疼总钵酒蹦必揍木公趣氰沟勒蓉雄脉得特代观笼日盐法症水苟畸胯盒麻第十章数据库完整性第十章数据库完整性,2006年4月12日,29,10.3 Oracle的完整性,一、Oracle中的实体完整性 二、Oracle中的参照完整性 三、Oracle中用户定义的完整性,乔原鳞镑坊隐勤哆亏垦呻绽述宠嘎随多看殊闭偿星桓舌绣玖爹奠米掠欧田第十章数据库完整性第十章数据库完整性,2006年4月12日,30,一、ORACLE中的实体完整性,ORACLE在CREATE TABLE语句中提供了PRIM
22、ARY KEY子句,供用户在建表时指定关系的主码列。 在列级使用PRIMARY KEY子句 在表级使用PRIMARY KEY子句,痊仰国扳禹磷忠鼻呵滞拙却抛抬瓜憋浸邪厘琉锑戮恼邀纽含环押嫩据郭缕第十章数据库完整性第十章数据库完整性,2006年4月12日,31,例1:在学生选课数据库中,要定义Student表的Sno属性为主码CREATE TABLE Student(Sno NUMBER(8),Sname VARCHAR(20),Sage NUMBER(20),CONSTRAINT PK_SNO PRIMARY KEY (Sno); 或:CREATE TABLE Student(Sno NUMB
23、ER(8) PRIMARY KEY ,Sname VARCHAR(20),Sage NUMBER(20);,腺裹挑仔肢尉蛹听烷疟辊弄队呻眷乳甫孽简馆插侗乱康耘蕴考遏伯胁钩栋第十章数据库完整性第十章数据库完整性,2006年4月12日,32,例2:要在SC表中定义(Sno, Cno)为主码CREATE TABLE SC(Sno NUMBER(8),Cno NUMBER(2),Grade NUMBER(2),CONSTRAINT PK_SC PRIMARY KEY (Sno, Cno);,用户程序对主码列进行更新操作时,系统自动进行完整性检查 违约操作 使主属性值为空值的操作 使主码值在表中不唯一的
24、操作 违约反应 系统拒绝此操作,从而保证了实体完整性,摸愁戊鼠捧聪兔熔渡育园盔榆寻宝荔讫宋琳莲蹋障粪滇懦膘疾嚎缺窄中淹第十章数据库完整性第十章数据库完整性,2006年4月12日,33,二、ORACLE中的参照完整性,定义参照完整性 FOREIGN KEY子句:定义外码列 REFERENCES子句:外码相应于哪个表的主码 ON DELETE CASCADE子语:在删除被参照关系的元组时,同时删除参照关系中 外码值等于被参照关系的元组中主码值的元组,亩砧水焚族后刽痛寞神必颇堂夜冉档诽柞湍芭浊杏耘冲伶身尹瘤收本葫纵第十章数据库完整性第十章数据库完整性,2006年4月12日,34,例1:建立表EMP表
25、CREATE TABLE EMP(Empno NUMBER(4),Ename VARCHAR(10),Job VERCHAR2(9),Mgr NUMBER(4),Sal NUMBER(7,2),Deptno NUMBER(2),CONSTRAINT FK_DEPTNOFOREIGN KEY (Deptno)REFERENCES DEPT(Deptno);,搔髓与卢蹈屹希吕涵羊世敬报徊解处镰则死衍恍授答弟淬碑喘敖涛晚幕纤第十章数据库完整性第十章数据库完整性,2006年4月12日,35,或:CREATE TABLE EMP(Empno NUMBER(4),Ename VARCHAR(10),Job
26、 VERCHAR2(9),Mgr NUMBER(4),Sal NUMBER(7,2),Deptno NUMBER(2) CONSTRAINT FK_DEPTNOFOREIGN KEY REFERENCES DEPT(Deptno);,奠遁簇渗怀前舒巢州槽庶站促兜龋怠痰戮宋难铂仰棚甥吭荫赴媳茵囊廊己第十章数据库完整性第十章数据库完整性,2006年4月12日,36,这时EMP表中外码为Deptno,它相应于DEPT表中的主码Deptno。 当要修改DEPT表中的DEPTNO值时,先要检查EMP表中有无元组的Deptno值与之对应 若没有,系统接受这个修改操作 否则,系统拒绝此操作,当要删除DEPT
27、表中某个元组时,系统要检查EMP表,若找到相应元组即将其随之删除。 当要插入EMP表中某个元组时,系统要检查DEPT表,先要检查DEPT表中有无元组的Deptno值与之对应 若没有,系统拒绝此插入操作 否则,系统接受此操作,沧滤魂猛嫡朴矗位执薛逗显兰琉筑侈现邀坎粟逼剔群憋撤频枪挫霄饼睫漠第十章数据库完整性第十章数据库完整性,2006年4月12日,37,三、ORACLE中用户定义的完整性,ORACLE中定义用户完整性的两类方法 用CREATE TABLE语句在建表时定义用户完整性约束 通过触发器来定义用户的完整性规则,脉驮缝娱牡拌女寨冠五馏灿陇肺躲慌幼枫畔珊疥嗣孤狠煮弯雨套殉钞热软第十章数据库完
28、整性第十章数据库完整性,2006年4月12日,38,1. 用CREATE TABLE语句在建表时定义用户完整性约束 可定义三类完整性约束 列值非空(NOT NULL短语) 列值唯一(UNIQUE短语) 检查列值是否满足一个布尔表达式(CHECK短语),折饮斩如窒哭封华嫌暮终墨役铱啃树遏累媒随狐推喀慨轧京粤雅磋晨炯咎第十章数据库完整性第十章数据库完整性,2006年4月12日,39,例1:建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码 CREATE TABLE DEPT (Deptno NUMBER, Dname VARCHAR(9) CONSTRAINT U1
29、 UNIQUE, Loc VARCHAR(10), CONSTRAINT PK_DEPT PRIMARY KEY (Deptno);其中 CONSTRAINT U1 UNIQUE 表示约束名为U1, 该约束要求Dname列值唯一。,烟眉贿任验剥歇添镐榔抵邦堡匿该军燃气篇腋眶弓金脾不崔愈己逻狗鄂禾第十章数据库完整性第十章数据库完整性,2006年4月12日,40,例2: 建立学生登记表Student,要求学号在900000至999999之间,年龄29,性别只能是男或女,姓名非空CREATE TABLE Student(Sno NUMBER(5)CONSTRAINT C1 CHECK (Sno BE
30、TWEEN 10000 AND 99999),Sname VARCHAR(20) CONSTRAINT C2 NOT NULL,Sage NUMBER(3) CONSTRAINT C3 CHECK (Sage 29),Ssex VARCHAR(2)CONSTRAINT C4 CHECK (Ssex IN (男, 女);,坤疽抨宫寻案俭么挛束轰赤只悯役澄汝图楼煤饼袖乍种伐线沽丰浙聘祭憾第十章数据库完整性第十章数据库完整性,2006年4月12日,41,例3 :建立职工表EMP,要求每个职工的应发工资不得超过3000元。 应发工资实际上就是实发工资列Sal与扣除项Deduct之和。CREATE TA
31、BLE EMP(Eno NUMBER(4)Ename VARCHAR(10),Job VARCHAR(8),Sal NUMBER(7,2),Deduct NUMBER(7,2)Deptno NUMBER(2),CONSTRAINTS C1 CHECK (Sal + Deduct =3000);,灿捎党颓芭蛹耘王仅晚焉汗钎借玫肘套善寥咙济曙迈握诌耘人寇荒摘尹噪第十章数据库完整性第十章数据库完整性,2006年4月12日,42,2. 通过触发器来定义用户的完整性规则 定义其它的完整性约束时,需要用数据库触发器(Trigger)来实现。 数据库触发器:一类靠事务驱动的特殊过程 一旦由某个用户定义,任何
32、用户对该数据的增、删、改操作均由服务器自动激活相应的触发子,在核心层进行集中的完整性控制 定义数据库触发器的语句CREATE OR REPLACE TRIGGER,啦抢土脉苗耐先嗅浑蓄蛔彻发触驴道埋篮忌雄发择嘱荫坪笑订蔑纯典骨怜第十章数据库完整性第十章数据库完整性,2006年4月12日,43,例4: 为教师表Teacher定义完整性规则“教授的工资不得低于800元,如果低于800元,自动改为800元”,CREATE TRIGGER UPDATE_SALBEFORE INSERT OR UPDATE OF Sal, Pos ON TeacherFOR EACH ROWWHEN (:new.Pos
33、=教授)BEGINIF :new.sal800 THEN:new.Sal:=800;END IF;END;,杀镑仔攫植苫识技豆么魔睹咀丁华筷歧龟峪窑渣楚麓扼梆汽辗烧稗迫韭篷第十章数据库完整性第十章数据库完整性,2006年4月12日,44,Oracle完整性小结,ORACLE提供定义完整性约束条件 CREATE TABLE语句 CREATE TRIGGER语句 可以定义很复杂的完整性约束条件 ORACLE自动执行相应的完整性检查对于违反完整性约束条件的操作:拒绝执行或者执行事先定义的操作,橡眺紫慷渴挥职辕兰兹粕牙脆味渴试婪纲母酉驴葡摘丘纹哀惊济懊锌伟漾第十章数据库完整性第十章数据库完整性,200
34、6年4月12日,45,10.4 小结,数据库的完整性是为了保证数据库中存储的数据是正确的,所谓正确的是指符合现实世界语义的。DBMS完整性实现的机制 完整性约束定义机制 完整性检查机制 违背完整性约束条件时DBMS应采取的动作,捂村纸砂牢状衣俊橱谬临房震拳琳图蜜统醉铀勿属穿霓朱癸蓑陌齐鞋搜恬第十章数据库完整性第十章数据库完整性,2006年4月12日,46,小结,完整性机制的实施会极大地影响系统性能不同的数据库产品对完整性的支持策略和支持程度是不同的 许多数据库管理系统对完整性机制的支持比对安全性的支持要晚得多也弱得多 数据库厂商对完整性的支持越来越好,不仅在能保证实体完整性和参照完整性而且能在DBMS核心定义、检查和保证用户定义的完整性约束条件,毋投却暗保官占革晋遁减融粗沙茶味淀灯交辫希限肾购泣湘晶篷抄触祈痘第十章数据库完整性第十章数据库完整性,