
关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
一、实体完整性(Entity Integrity)
规则2.1 实体完整性规则 若属性A是基本关系R的主属性,则属性A不能取空值。
例如在关系“SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)”中,“研究生姓名POSTGRADUATE”属性为主码(假设研究生不会重名),则“研究生姓名”不能取空值。
实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。例如学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”两个属性都不能取空值。
对于实体完整性规则说明如下:
(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。
(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3)相应地,关系模型中以主码作为唯一性标识。
(4)主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。
二、参照完整性(Referential Integrity)
现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。先来看三个例子。
例1 学生实体和专业实体可以用下面的关系表示,其中主码用下划线标识:
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
这两个关系之间存在着属性的引用,即学生关系引用了专业关系的主码“专业号”。显然,学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录。这也就是说,学生关系中的某个属性的取值需要参照专业关系的属性取值。
规则2.2 参照完整性规则 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
·或者取空值(F的每个属性值均为空值);
·或者等于S中某个元组的主码值。
三、用户定义的完整性(User-defined Integrity)
任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值、某些属性值之间应满足一定的函数关系、某个属性的取值范围在 0~100之间等。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。
自定义就是 可以根据你自己的喜好进行设置。称之为【自定义】用户自定义完整性指针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
例如某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取值范围在0-100之间等
任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的唯一约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。[1]
不同的应用有着不同的具体要求,这些约束条件就是用户根据需要自己定义的。对于这类完整性,关系模型只提供定义和检验这类完整性的机制,以使用户能够满足自己的需求,而关系模型自身并不去定义任何这类完整性规则[
解释什么是关系模式中的实体完整性、参照完整性?关系的完整性是关系型数据模型结构中的另一组成部分,它分为实体完整性、参照完整性和用户定义完整性三类。在关系数据库中一个关系对应现实世界的一个实体集,关系中的每一个元组对应一个实体。在关系中用主关键字来唯一标识一个实体,实体具有独立性,关系中的这种约束条件称为实体完整性。
参照完整性是用于约定两个关系之间的联系,理论上规定:若M是关系S中的一属性组,且M是另一关系Z的主关键字,则称M为关系S对应关系Z的外关键字。若M是关系S的外关键字,则S中每一个元组在M上的值必须是空值或是对应关系Z中某个元组的主关键字值。例如,学生关系S和学校专业关系Z之间满足参照完整性约束。学校专业关系Z中的专业号属性是主关键字,同时它也存在学生关系S中,那么只有当专业号存在,这个专业的学生才有可能存在,因此在添加学生关系中的元组时,定义的专业号必须在学校专业关系Z中已存在对应的元组。
用户定义完整性约束是用户定义某个具体数据库所涉及的数据必须满足的约束条件,是由具体应用环境来决定的。例如,约定学生成绩的数据必须小于或等于100。
数据完整性是什么???实体完整性,参照完整性,用户定义完整性-
关系的完整性主要包括域完整性、实体完整性和参照完整性三种。
1.域(列)完整性 域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域完整性可以确保不会输入无效的值.。
2.实体(行)完整性 实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。
定义表中的所有行能唯一的标识,一般用主键,唯一索引 unique关键字,及identity属性比如说我们的身份z号码,可以唯一标识一个人. 3.参照完整性 参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。
参考完整性维护表间数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现,还可以用触发器来维护参考完整性。
SQL Sever 解释参照完整性的含义,并举例说明
参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些设计表间数据的完整性,统称为参照完整性。
use master
IF EXISTS (
SELECT *
FROM sys.databases
WHERE name = N'学生成绩管理'
)
DROP DATABASE [学生成绩管理]
GO
CREATE DATABASE [学生成绩管理]
ON PRIMARY
(NAME = Student_data,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Student.mdf',
SIZE = 10MB,
MAXSIZE = unlimited,
FILEGROWTH = 10%)
LOG ON
( NAME = Student_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Student.ldf',
SIZE = 1MB,
maxsize=5mb,
FILEGROWTH = 1mb)
GO
use 学生成绩管理
IF EXISTS (
SELECT *
FROM sys.tables
WHERE name = N'课程信息表'
)
DROP table [课程信息表]
go
IF EXISTS (
SELECT *
FROM sys.tables
WHERE name = N'学生基本信息表'
)
DROP table [学生基本信息表]
go
IF EXISTS (
SELECT *
FROM sys.tables
WHERE name = N'成绩表'
)
DROP table [成绩表]
go
create table [课程信息表]
(
课程编号 varchar(10) primary key ,
课程名称 varchar(10) not null,
学分 int
)
create table [学生基本信息表]
(
学号 varchar(10) primary key ,
姓名 varchar(10) not null,
性别 varchar(10) check((性别='男') or (性别='女')),
出生日期 datetime
)
create table [成绩表]
(
选课ID int primary key,
学号 varchar(10) not null,
课程编号 varchar(10) not null,
成绩 int ,
constraint FK_Sid foreign key (学号) references 学生表(学号),
constraint FK_Cid foreign key (课程号) references 课程表(课程号)
)
go
什么是参照完整性规则?能否详细介绍一下?
关系的究整性 关系模型的完整性规则是对关系的某种约束条件。
关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
一、实体完整性(Entity Integrity) 规则2.1 实体完整性规则 若属性A是基本关系R的主属性,则属性A不能取空值。 例如在关系“SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)”中,“研究生姓名POSTGRADUATE”属性为主码(假设研究生不会重名),则“研究生姓名”不能取空值。
实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。例如学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”两个属性都不能取空值。
对于实体完整性规则说明如下: (1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
例如学生关系对应于学生的 *** 。 (2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3)相应地,关系模型中以主码作为唯一性标识。 (4)主码中的属性即主属性不能取空值。
所谓空值就是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。
二、参照完整性(Referential Integrity) 现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。
先来看三个例子。 例1 学生实体和专业实体可以用下面的关系表示,其中主码用下划线标识: 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 这两个关系之间存在着属性的引用,即学生关系引用了专业关系的主码“专业号”。
显然,学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录。这也就是说,学生关系中的某个属性的取值需要参照专业关系的属性取值。
规则2.2 参照完整性规则 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: ·或者取空值(F的每个属性值均为空值); ·或者等于S中某个元组的主码值。三、用户定义的完整性(User-defined Integrity) 任何关系数据库系统都应该支持实体完整性和参照完整性。
除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。
例如某个属性必须取唯一值、某些属性值之间应满足一定的函数关系、某个属性的取值范围在 0~100之间等。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。
参照完整性的含义
当更新、删除、插入一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据 *** 作是否正确。除了实体完整性、参照完整性,还有用户自定义完整性。
简单的说就是表间主键外键的关系。
对于两个关系R和S,R中存在属性F是基本关系R的外码,它与基本关系S的主码K相对应(R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为空值或者等于S中某个元组的主码值。
参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录成为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些设计表间数据的完整性,统称为参照完整性。
参照完整性则是相关联的两个表之间的约束,具体的说,就是从表中每条记录外键的值必须是主表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的 *** 作要影响到另一个表中的记录。
如果实施了参照完整性,那么当主表中没有相关记录时,就不能将记录添加到相关表中。也不能在相关表中存在匹配的记录时删除主表中的记录,更不能在相关表中有相关记录时,更改主表中的主键值。也就是说,实施了参照完整性后,对表中主键字段进行 *** 作时系统会自动地检查主键字段,看看该字段是否被添加、修改、删除了。如果对主键的修改违背了参照完整性的要求,那么系统就会自动强制执行参照完整性。
谁可以给我解释一下什么叫参照完整性约束?举个例子!
参照完整性,简单的说就是表间主键外键的关系。
参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。
对于这些设计表间数据的完整性,统称为参照完整性。--------------------基本表的定义及变更 本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。
基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。 (1)基本表的定义:基本表是非导出关系,其定义涉及表名、列名及数据类型等,其语 句格式为:CREATE TABLE〔 .〕 ( 数据类型 〔缺省值〕 〔NOT NULL / NULL〕 〔, 数据类型 〔缺省值〕 〔NOT NULL / NULL〕〕。
。 〔,UNIQUE (列名〔,列名〕。
。)〕 〔,PRIMARY KEY(列名)〕 〔,FOREIGN KEY(列名〔,列名〕。
。)REFERENCE (列名〔,列名〕 。
。)〕 〔,CHECK(条件)〕 〔其它参数〕) 其中,〈数据库名〉.〕指出将新建立的表存放于该数据库中; 新建的表由两部分组成:其一为表和一组列名,其二是实际存放的数据(即可在定义表的同时,直接存放数据到表中);列名为用户自定义的易于理解的名称,列名中不能使用空格;数据类型为上面所介绍的几种标准数据类型;〔NOT NULL/NULL〕指出该列是否允许存放空值,SQL语言支持空值的概念,所谓空值是"不知道"或"无意义"的值,值得注意的是数据"0"和空格都不是空值,系统一般默认允许为空值,所以当不允许为空值时,必须明确使用NOT NULL; 〔,UNIQUE〕将列按照其规定的顺序进行排列,如不指定排列顺序,则按列的定义顺序排列; 〔PRIMARY KEY〕用于指定表的主键(即关系中的主属性),实体完整性约束条件规定:主键必须是唯一的,非空的; 〔,FOREIGN KEY (列名〔,列名〕。
。) REFERENCE (列名〔,列名〕 。
。)〕是用于指定外键参照完整性约束条件,FOREIGN KEY指定相关列为外键,其参照对象为另外一个表的指定列,即使用REFERENCE引入的外表中的列,当不指定外表列名时,系统将默认其列名与参照键的列名相同,要注意的是:使用外键时必须使用参照,另外数据的外键参照完整性约束条件规定:外键的值要么与相对应的主键相同,要么为空值(具体由实现系统不同而异)〔,CHECK〕用于使用指定条件对存入表中的数据进行检查,以确定其合法性,提高数据的安全性。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)