数据库系统的安全性和完整性有3点不同。相关介绍具体如下:
一、两者的分类不同:
1、数据库系统安全性的分类:一般数据库系统安全涉及5个层次,即用户层、物理层、网络层、 *** 作系统层、数据库系统层。
2、数据库系统完整性的分类:数据库完整性约束可分为6类,即列级静态约束、元组级静态约束、关系级静态约束、列级动态约束、元组级动态约束、关系级动态约束。动态约束通常由应用软件来实现。不同DBMS支持的数据库完整性基本相同。
二、两者的实质不同:
1、数据库系统安全性的实质:为数据库系统采取的安全保护措施,防止系统软件和其中数据遭到破坏、更改和泄漏。
2、数据库系统完整性的实质:数据库中数据在逻辑上的一致性、正确性、有效性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。
三、两者的相关途径不同:
1、数据库系统安全性的相关途径:主要通过DBMS实现的。数据库系统中一般采用用户标识和鉴别、存取控制、视图以及密码存储等技术进行安全控制。
2、数据库系统完整性的相关途径:可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计。
参考资料来源:百度百科-数据库完整性
参考资料来源:百度百科-数据库系统安全
关系的完整性主要包括域完整性、实体完整性和参照完整性三种。
1.域(列)完整性
域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域完整性可以确保不会输入无效的值。
2.实体(行)完整性
实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。定义表中的所有行能唯一的标识,一般用主键,唯一索引 unique关键字,及identity属性比如说我们的身份z号码,可以唯一标识一个人
3.参照完整性
参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。参考完整性维护表间数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现,还可以用触发器来维护参考完整性
数据库完整性(Database
Integrity)是指数据库中数据的正确性和相容性,其目的是防止垃圾数据的进出。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。加在数据库之上的语义约束条件就是数据库完整性约束条件。
完整性约束条件作用对象可以使关系、元组、列三种。
● 列约束主要是列的数据类型、取值范围、精度、排序等约束条件。
● 元组的约束是元组中各个字段间的联系的约束。
● 关系的约束是若干元组间、关系集合上以及关系之间的联系的约束。
完整性约束条件涉及这三类对象,其状态可以是静态的,也可以是动态的。所谓静态约束是指数据库每一确定状态时的数据对象所应满足的约束条件。它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。
动态约束是指数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件。
完整性约束条件可分为以下六类:
● 静态列级约束
● 静态元组约束
● 静态关系约束
● 动态列级约束
● 动态元组约束
● 动态关系约束
1
静态列级约束是对一个列的取值域的说明,包括以下几个方面:
(1) 对数据类型的约束,包括数据的类型、长度、单位、精度等;
(2) 对数据格式的约束。例如规定日期的格式为YYYY-MM-DD;
(3) 对取值范围或取值集合的约束。例如规定学生的成绩取值范围为0~100;
(4) 对空值的约束,规定哪些列可以为空值,哪些列不能为空值;
2
静态元组约束就是规定元组的各个列之间的约束关系。例如,订货关系中包含发货量、订货量等列,规定发货量不得超过订货量。
3
静态关系约束是指在一个关系的各个元组之间或者若干关系之间存在的约束。常见的静态约束有:
(1) 实体完整性约束;
(2) 引用完整性约束;
(3) 函数依赖约束;大部分函数依赖约束都在关系模式中定义。
(4) 统计约束;即字段值与关系中多个元组的统计值之间的约束关系。例如,规定部门经理的工资不得高于本部门职工平均工资的5倍,不得低于本部门职工平均工资的2倍。
4
动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:
(1) 修改列定义时的约束。例如,将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。
(2) 修改列值时的约束。修改列值时有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。例如,职工调整后的工资不得低于其调整前的原来工资;职工婚姻状态的变化只能是由未婚到已婚、已婚到离异、离异到再婚等几种情况。
5
动态元组约束是指修改元组的值时元组中各个字段间需要满足某种约束条件。例如,职工工资调整时新工资不得低于原工资+工龄15等。
6
动态关系约束是加在关系变化前后状态上的限制条件。例如,在集成电路芯片设计数据库中,一个设计中用到的所有单元的工艺必相同,因此,在更新某个设计单元时,设计单元的新老工艺必须保持一致。
31 SQL 中的完整性约束
SQL把各种完整性约束作为数据库模式定义的一部分。既有效防止了对数据库的意外破坏,提高了完整性检测的效率,又可以减轻编程人员的负担。
SQL对三种不同完整性约束的设置及检测,采取了不同的方式加以实现。下面分别介绍。
311 实体完整性和主码
实体完整性规定,主码的任何属性都不能为空,因为,概念模型中实体和联系都是可区分的,而且它们以码为唯一性标识。如果,主码的属性值可以为空,则意味着在概念模型中存在着不以码为唯一性标识的实体。这显然是前后矛盾的。
那么怎样保证实体完整性呢?SQL中实体完整性是通过主码来实现的。一旦某个属性或属性组被定义为主码,该主码的每个属性就不能为空值,并且在关系中不能出现主码值完全相同的两个元组。
主码的定义是在Create Table 语句中使用 Primary Key关键字来实现的。方法有两种:
a) 在属性定义后加上关键字 Primary Key;
b) 在属性表定义后加上额外的定义主码的子句:Primary Key(<主码属性名表>)
说明:
² 如果主码仅由一个属性组成,上述两种方法都可定义,若由两个或以上的属性组成,则只能用上述第二种方法定义了。
² 对于候选码的说明方法,可以用Unique说明该属性的值不能重复出现。Unique的使用与Primary Key相似。
² 一个表中只能有一个主码定义,但可以有多个Unique说明。
² SQL中,并没有强制为每个关系指定主码,但为每个关系指定主码通常会更好一些。(因为主码的指定可以确保关系的实体完整性)
312 参照完整性约束与外部码
参照完整性是对关系间引用数据的一种限制。即:若属性组A是基本关系R1的外码,它与基本关系R2的主码K相对应,则R1中每个元组在A上的值必须:要么取空值,要么等于R2中某元组的主码值。
一、外部码约束的说明:
SQL中就是利用外部码的说明来实现参照完整性约束,限制表中某些属性的取值的。外部码的说明也有两种方法:
1、在该属性的说明后直接加上关键字”REFERENCES <表名>(<属性名>)”,其中表名称为参照关系名,属性名称为参照关系的主码。
2、在Create Table 语句的属性清单后,加上外部码说明子句,格式为:
FOREIGN KEY <属性名表1> REFERENCES <表名>(<属性名表2>)
上式中的属性名表1和属性名表2中属性可以多于一个,但必须前后对应。
二、参照完整性约束的实现策略
前面讲了,外部码的取值只有两种情况:要么取空,要么取参照关系中的主码值。可是当用户 *** 作违反了这个规则时,如何保持此约束呢?
SQL提供了三种可选方案:
1、RESTRICT(限制策略):
当用户对表进行违反了上述完整性约束、条件的插入、删除或修改 *** 作时,将会被系统拒绝。
2、CASCADE(级联策略):
当对参照关系进行删除和修改时,SQL所提供的一种方案。在这种策略下,当删除或修改参照关系中某元组的主码值时,被参照关系中,那些外部码具有该值的元组也将被删除或修改,以保证参照完整性。
3、SET NULL(置空策略):
置空策略也是针对参照关系的删除或修改 *** 作的。在这种策略下,当删除参照关系中的某一元组或修改某一元组的主码值时,被参照关系中外码值等于该主码值的元组在该外码上的值将被置空
说明:
当用户不指定参照完整性的实现策略时,一般被默认为RESTRICT(限制策略)。实现策略的说明通常被加在外部码的说明后面,格式为:ON DELETE SET NULL ON UPDATE CASCADE。
313 用户自定义完整性约束
对于用户自定义完整性约束,SQL提供了非空约束、对属性的CHECK约束、对元组的CHECK约束、触发器等来实现用户的各种完整性要求。
1、非空约束:
在CRETE TABLE 中的属性定义后面加上NOT NULL关键字即定义了该属性不能取空值。
2、基于属性的CHECK约束
使用CHECK(检查)子句可保证属性值满足某些前提条件。其一般格式为:
CHECK(<条件>)
它既可跟在属性定义的后面,也可在定义语句中另增一子句加以说明。
如:CHECK(age>=18 AND age<=65);
CHECK(sex IN (“男”,”女”));
CHECK(dno IN(select dno from department));
从上例中可以看出,CHECK子句的条件中还可以带子查询。
3、基于元组的CHECK约束
基于元组的CHECK约束往往要涉及到表中的多个域。所以它是元组约束。在对整个元组完成插入或对某一元组的修改完成之后,系统将自动检查是否符合CHECK条件表达式。若不符合条件,系统将拒绝该插入或修改 *** 作。
基于元组CHECK约束的说明方法是在CREATE TABLE语句中的属性表、主码、外部码的说明之后加上CHECK子句。
314 约束的更新
约束与数据库中的表和视图一样,可以进行增、删、改的更新 *** 作。为了改和删约束,需要在定义约束时对其进行命名,在各种约束的说明前加上关键字CONSTRAINT 和该约束的名称即可。
例如:在employee表的create table语句中:
eno char(4) CONSTRAINT PK_employee PRIMARY KEY,
dno char(4)CONSTRAINT FK_employee FOREIGN KEY REFERENCES department(dno);
当对各种约束进行命名后,就可以用ALTER TABLE语句来更新与属性或表有关的各种约束。如:
ALTER TABLE employee DROP CONSTRAINT FK_employee;
ALER TABLE Salary ADD CONSTRAINT RightSalary CHECK(Insure+Fund<Rest);
上述的增加约束,实际上也是通过ALTER TABLE语句定义约束的一种形式。
SQL不能直接修改约束,修改某一个约束实际上是用ALTER TABLE 语句先删除该约束,然后再增加一个与该约束同名的新约束。
关系的究整性
关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
一、实体完整性(Entity Integrity)
规则21 实体完整性规则 若属性A是基本关系R的主属性,则属性A不能取空值。
例如在关系“SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)”中,“研究生姓名POSTGRADUATE”属性为主码(假设研究生不会重名),则“研究生姓名”不能取空值。
实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。例如学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”两个属性都不能取空值。
对于实体完整性规则说明如下:
(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。
(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3)相应地,关系模型中以主码作为唯一性标识。
(4)主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。
二、参照完整性(Referential Integrity)
现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。先来看三个例子。
例1 学生实体和专业实体可以用下面的关系表示,其中主码用下划线标识:
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
这两个关系之间存在着属性的引用,即学生关系引用了专业关系的主码“专业号”。显然,学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录。这也就是说,学生关系中的某个属性的取值需要参照专业关系的属性取值。
规则22 参照完整性规则 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
·或者取空值(F的每个属性值均为空值);
·或者等于S中某个元组的主码值。
三、用户定义的完整性(User-defined Integrity)
任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值、某些属性值之间应满足一定的函数关系、某个属性的取值范围在 0~100之间等。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。
以上就是关于数据库系统的安全性和完整性有什么不同全部的内容,包括:数据库系统的安全性和完整性有什么不同、数据完整性是什么实体完整性,参照完整性,用户定义完整性、什么是数据库的完整性约束条件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)