1.什么是数据库的完整性?
答:数据库的完整性是指数据的正确性和相容性。
2. 数据库的完整性概念与数据库的安全性概念有什么区别和联系?
答:
数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出( Garba : e In Garba : e out )所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
3.什么是数据库的完整性约束条件?
答:
完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。
静态列级约束是对一个列的取值域的说明,包括以下几个方面:
(1) 对数据类型的约束,包括数据的类型、长度、单位、精度等;
(2) 对数据格式的约束;
(3) 对取值范围或取值集合的约束;
(4) 对空值的约束;
(5) 其他约束。
静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。
静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
常见的静态关系约束有:
(1)实体完整性仑束;(2)参照完整性约束;(3)函数依赖约束。
动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:
(1) 修改列定义时的约束;
(2) 修改列值时的约束。
动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
4.关系数据库管理系统的完整性控制机制应具有哪三方面的功能?
答:
(1)提供定义完整性约束条件的机制。
(2)提供完整性检查的方法:检查用户发出的操作请求是否违背了完整性约束条件
(3)进行违约处理:如果检查发现操作请求会使数据违背完整性约束条件,则采取一定的动作来保证数据的完整性。
6.假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;
部门(部门号,名称,经理名,电话),其中部门号为主码
用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:定义每个模式的主码;定义参照完整性;定义职工年龄不得超过60岁。
答:
CREATE TABLE DEPT
(Deptno NUMBER(2),
Deptname VARCHAR(10),
Manager VARCHAR(10),
PhoneNumber Char(12)
CONSTRAINT PK_SC RIMARY KEY(Deptno));
CREATE TABLE EMP
(Empno NUMBER(4),
Ename VARCHAR(10),
Age NUMBER(2),
CONSTRAINT C1 CHECK(Aage<=60),
Job VARCHAR(9),
Sal NUMBER(7,2),
Deptno NUMBER(2),
CONSTRAINT FK_DEPTNO
FOREIGN KEY(Deptno) REFFERENCES DEPT(Deptno));
7在关系数据库系统中,当操作违背实体完整性、参照完整性和顾客自定义完整性约束条件时,一般是如何分别进行解决的?
答:①
(1) 按实体完整性规则自动进行检查。涉及:
①检查主码值与否唯一,如果不唯一则回绝插入或修改。
②检查主码各个属性与否为空,只要有一种为空就回绝插入或修改。
(2) 按参照完整性检查,违约解决方略如下:
①回绝(NO ACTION)执行。不容许该操作执行,该方略普通设立为默认方略。
在被参照关系中删除元组:仅当参照关系中没有任何元组外码值与被参照关系中要删除元组主码值相似时,系统才执行删除操作,否则回绝此操作。
②级联(CASCADE)操作。 当删除或修改被参照表一种元组导致了与参照表不一致,则删除或修改参照表中所有导致不一致元组。
级联操作必要在定义外码时给出显式定义。
③设立为空值(SET NULL)。当删除或修改被参照表一种元组时导致了不一致,则将参照表中所有导致不一致元组相应属性设立为空值。
置空值删除(NULLIFIES)。删除被参照关系元组,并将参照关系中相应元组外码值置空值。
(3) 按顾客自定义完整性检查,违约解决:当往表中插入元组或修改属性值时,RDBMS就检查属性上约束条件与否被满足,如果不满足则操作被回绝执行。
8. 某单位想举行一个小型的联谊会,关系Male 记录注册的男宾信息,关系Female记录注册的女宾信息,建立一个断言,将来宾的人数限制在50人以内。(提示,先创建关系Female和关系Male)。