如何实施参照完整性

如何实施参照完整性,第1张

问题一:什么是"实施参照完整性" 实施参照完整性 一般是 创建外键 表关联的时候使用.

我以一个 例子来说明。

例如 有2个表。 一个班级表, 一个学生表

班级表 ( 班级编号, 班级名称, 班级其他字段... )

学生表 (学号, 所属班级编号, 学生名, 学生其他字段 ...)

当在 班级表 与 学生表 之间, 创建一个 关联的时候, 也就是 学生表的 “所属班级编号” 与 班级表 的 户班级编号” 建立关联的时候。

实施参照完整性 意味着, 当你向 学生表插入数据的时候, 如果输入了一个 班级表里面, 还没有的 班级编号, 那么 数据库将报错, 不允许你这么做。

也就是如果 班级表有 1,2,3 共三个班级。 而你插入了一个 学生 张三, 所在班级是 5班的。

那么数据库直接报错了。

这就是 实施参照完整性 的效果。

目的是为了避免,数据库中, 产生垃圾数据。

也就是如果软件开发人员, 在写程序的时候,不小心,忘记检查某些数据合法性的情况下, 数据库最底层,还能做最后一次检查。

问题二:ACCESS表之间一对多关系并实施参照完整性需要怎么 *** 作 打开工具\关系,把相关表拖上去,进行处理。

问题三:怎么在表和表之间建立实施参照完整性 什么是SQL呢 SQL就是专门用来做数据库的一门语言 和C语言差不多 (当然功能不紧紧是做数据了 编程啊 都可以..... 这里就不多说了)z这道题用ACCESS 就可以完成了

1 首先 用Access 2000(数据库 )做一个数据库 打开设计器创建表 在点菜单 另存为 名为班级名+自己名字英文简写 最后点保存啦 (每完成系统都是有提示的啦) 第一问 解决

2 打开设计器 上面做的表下面下

创建数据表 名字都是在最后完成时做的 先不用管 然后在输入sID,sName,sSex,sAge,sClass 注意根据后面的要求填写字段 及数据类型 以及

在做其他的问题了将T_Student表的sID字段设置为标识列,种子为1,增量为2。

为T_Student表的sSex(性别)字段设置其默认值为“男”。

为T_Student表的sAge(年龄)字段设置检查约束,规定年龄在0到30岁之间。

为T_KC表的cName(课程名称)字段设置唯一性约束。,规定课程名称不得重复。

生成一个规则t_rule,限制数据的取值范围在(0---100)之间,然后将这个规则绑定到T_CJ表的cj(成绩)字段。

为T_KC表的cName字段创建索引。

最后

当然主键当然是SID了 一定要标好哦~~・先不管作业其他要求

在依次做其他2个表

T_KC(cID,cName,sBianhao,sXuefen)

T_CJ(sID,cID,cj) 注意主键是SID

3. 做好了三个表后退出设计器

在打开以一个个表 在按要求输入(在每个表中添加3-5条记录。)

好了 基本就完成了

当然用SQL 也能完成 这些问题 并且要快 但涉及到TQL语言 编程问题 很难说清楚 就不一一解释了・・・

问题四:access 中实施参照完整性 求解决!! 当我们把2张表建立联系的时候,这2个表肯定是有关系的。它可以是一对一的关系;如果是多对多的关系,这是不允许出现的(说明表及其关系设置有问题);大多数都是一对多的关系,当建立了一对多关系时数据库引擎就自然建立完整性原则,它能保证2个表之间的关系及数据得到正确的维护,从最基本的意义上说,防止“多端”出现不完整的记录。

参照完整性规则要求:1、不允许在“多端”的字段中输入1个“一端”主键不存在的值;2、如果某一记录有相关的记录存在于关系表中,那么数据库引擎不允许从“一端”删除这个记录(除非选择了级联删除相关字段,这样会同时删除“一端”和“多端”的记录,从而保证数据的完整性),因为如果允许又回出现第一种情况。3、如果某一记录有相关的记录存在于关系表中,那么数据库引擎不允许改变“一端”主键的值(除非选择了级联更新相关字段,这样会同时更新“一端”和“多端”的主键值,从而保证数据的完整性),因为如果允许又回出现第一种情况。

现在,回到你的问题。

1、如果你的2个表在没有数据时,建立上面的关系,肯定可以,并且可以“实施参照完整性”饥以后你在“借书证”表中输入“书号”时,数据库会限定这个“书号”只能是“书”表中存在的书号,这是为了保证数据的完整性。

2、我可以肯定你的2个表是先有数据,后再想建立关系并想实施参照完整性的,而且“借书证”表中至少有1个以上的“书号”在“书”表中没有相应的记录,此时如果你强行建立参照完整性,这就违反了参照完整性的要求(不允许在“多端”的字段中输入1个“一端”主键不存在的值),换句话说,你的多端(既借书证表)存在了一端(既书表)中没有的记录,数据库不允许出现这种情况,所以出现提示框的内容。

3、改进方法有3种,建议前2种。①、删除“借书证”表中在“书”表中没有相关“书号”的记录,后再建立关系及参照完整性;②、在“书”表中添加相关的书号,以保证“借书证”表中所有书号在“书”中都存在,然后再建立关系及参照完整性;③、像提示框所说的“清除参照完整性复选框”,这可以建立关系,但不能实施参照完整性,不建议这样做,因为不实施参照完整性会导致数据不完整,以后会有大麻烦的。

4、“借书证”表和“读者”表 的关系也应该如上处理。

问题五:access中无法实施参照完整性 怎么办 5分 参照完整性是一个规则系统,Microsoft Access 使用这个系统用来确保相关表中记录之间关系的有效性,并且不会意外地删除或更改相关数据。

使用参照完整性时要遵循下列规则:

不能在相关表的外键字段中输入不存在于主表的主键中的值。

如果在相关表中存在匹配的记录,则不能从主表中删除这个记录。例如,如果在“订单”表中有订单分配给某一雇员,就不能在“雇员”表中删除此雇员的记录。

如果某个记录有相关的记录,则不能在主表中更改主键值。例如,如果在“订单”表中有订单分配给某个雇员时,不能在“雇员”表中更改这位雇员的雇员ID。

你目前的情况看来是成绩表的学号出问题了,你看看这个是不是主表的主键里面没有。

问题六:Access2010,怎么实施参照完整性,最好配图说明按键在哪 数据库工具--->关系---->在“显示表”对话框选择表,鼠标从一个表的关联字段拖动到另一个关联字段,d出“编辑关系”对话框,选中“实施参照完整性”

问题七:access为什么不能实施参照完整性 提示的很清楚嘛,因为你的表里现有的数据不符合你的参照关系。

先将表里不完整的数据补充完整,再参照,

或者空表参照,然后在写入数据,此时如果数据不完整会有提示,保存不了的。

祝你成功!

问题八:Access编辑关系中,无法实施参照完整性,这是怎么回事呢? 数据不一致。两张表的数据值得一致,子表数据得选自于主表

问题九:access表间关系中的参照完整性什么意思 在符合下列所有条件时,可以设置参照完整性:来自于主表的匹配字段是主键或具有唯一索引。相关的字段都有相同的数据类型。但是有两种例外情况:“自动编号”字段可以与“字段大小”属性设置为“长整型”的“数字”字段相关;“字段大小”属性设置为“同步复制 ID”的“自动编号”字段可以与一个“字段大小”属性设置为“同步复制 ID”的“数字”字段相关。两个表都属于同一个 Microsoft Access 数据库。如果表是链接的表,它们必须是 Microsoft Access 格式的表,并且必须打开存储此表的数据库以设置参照完整性。不能对数据库中的其他格式的链接表实施参照完整性。使用参照完整性时要遵循下列规则:不能在相关表的外键字段中输入不存在于主表的主键中的值。但是,可以在外键中输入一个 Null 值来指定这些记录之间并没有关系。例如,不能为不存在的客户指定订单,但通过在“客户ID”字段中输入一个 Null 值,则可以有一个不指派给任何客户的订单。如果在相关表中存在匹配的记录,则不能从主表中删除这个记录。例如,如果在“订单”表中有订单分配给某一雇员,就不能在“雇员”表中删除此雇员的记录。如果某个记录有相关的记录,则不能在主表中更改主键值。

参照完整性,简单的说就是表间主键外键的关系。

参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些设计表间数据的完整性,统称为参照完整性。

最主要的作用是

防止出现数据不一致

解释什么是关系模式中的实体完整性、参照完整性?

关系的完整性是关系型数据模型结构中的另一组成部分,它分为实体完整性、参照完整性和用户定义完整性三类。在关系数据库中一个关系对应现实世界的一个实体集,关系中的每一个元组对应一个实体。在关系中用主关键字来唯一标识一个实体,实体具有独立性,关系中的这种约束条件称为实体完整性。

参照完整性是用于约定两个关系之间的联系,理论上规定:若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〕用于使用指定条件对存入表中的数据进行检查,以确定其合法性,提高数据的安全性。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6912971.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-30
下一篇2023-03-30

发表评论

登录后才能评论

评论列表(0条)

    保存