精华内容
下载资源
问答
  • 关系的完整-参照完整

    千次阅读 2019-06-29 10:30:44
    (首先理解弄透实体完整,实体完整规则是最好理解的,再来理解参照完整就不难了) 2.参照完整 现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的,这样就自然...

    (首先理解弄透实体完整性,实体完整性规则是最好理解的,再来理解参照完整性就不难了)

    2.参照完整性

       现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的,这样就自然存在着关系与关系间的引用。

       定义:设F是基本关系的一个或一组属性,但不是关系R的码(如果某张表多个属性作为主码,那么这里的主码不能理解为单个主属性,这也是码和主属性的区别),Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系和R和S不一定是不同的关系。

       2.1 一对多关系的理解

    学生实体和专业实体用下面关系表示:

         学生(学号,姓名,性别,专业号,年龄)

                  (Sno,Sname,Ssex,Smajor,Sage)

         专业 (专业号,专业名)

                   (Major,Mname)

    (黑体加下划线的属性为主码)

    1. 两个关系之间存在着属性的引用,及学生关系引用了专业关系的主码“专业号”。显然这个“专业号”必须是确实存在的专业号,打个比方,学校现在只开了计算机,政治,数学,
    专业
    专业号专业名
    001计算机
    002政治
    003数学

       

     

     

     

     

            我总不可能添加一个学生是小偷专业的吧!!!所以这也是为什么参照完整性规则是对多个关系(关系可以理解为实体或关系,实体或关系可以理解为一张表,也就是多张表,不懂可以翻阅上篇博客)的约束 ,所以现在我每在学生表添加一个学生都要参照专业表。

           回到定义,设F是基本关系的一个或一组属性,(这里的F可以指学生表专业号),但不是关系R(这里指学生表)的码,Ks(专业表专业号)是基本关系S(专业表)的主码,如果F(学生表中的专业号)与Ks(专业表专业号)相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系。关系R和S不一定是不同关系(这句话可以忽略,影响现阶段的理解)。

          有了上面的定义与对照的关系表示可以弄懂

         学生表中红字专业号为外码,基本关系R(学生表)为参照关系,基本关系S为被参照关系。

        所以当你设置学生表中的专业号为外码  (前提是已经创建专业表ZMajor,实体完整性不用我多说吧,顺序不能弄反)

         CREATE TABLE Student

    (  Sno CHAR(9),

       Sname CHAR(4),

       Ssex  CHAR(2),

       Smajor  CHAR(9),

       Sage  SMALLINT,

    PRIMARY KEY(Sno),/*这里定义了实体完整性,Sno不能取空值,参照上一篇博客*/

    FOREIGN KEY(Smajor)  REFERENCES ZMajor(Major)/*定义了参照完整性,学生表专业号引用专业表专业号*/

    ON DELETE CASCADE   /*当删除ZMajor表中的某个专业的时候,比如学校取消了某个专业,级联删除这个专业的所有学生

                                                当然,如果你正在学计算机,学校如果取消计算机专业,你的信息(学生表)也会进行级联删除

                                                 所以一般学校等你们毕业了,计算机专业不招人了也没有人了,学校再来取消这个专业,所以这个                                               级联删除不是很常见。毕竟是贴近现实世界,大学取消某个专业*/

    ON UPDATE CASCADE /*理解了上面的注释话,这个就好理解了,当更新ZMajor表中某个专业信息,比如你们校长疯了,计算机专 业全部取搬砖专业,所以你们所有计算机专业的学生专业号001-计算机,统一是001-搬砖,其实学生表中001并没有改变,但是当查询到你的时候,比如连接查询,嘿嘿,那你就是搬砖专业*/

     

      

    )

    级联操作只是参照完整性被破坏时采取策略的一种,默认策略为NO ACTION(拒绝执行),有了上面的理解基础,不难理解当INSERT插入学生表中数据,你加了一个不存在的专业号,这就就是为上面数据库就会拒绝执行。查询的话不改变数据库中的原则。参照完整性被规则破坏一般是被参照表中(例子中的专业表)的内容被修改,破坏时的操作均写在参照表的定义中。

    以上部分时一对多的关系,如果有需要的话私我,我可以继续更新多对多参照完整性。

     

    展开全文
  • 数据完整 要想了解这三类完整约束首先要了解什么是数据完整。数据完整是指数据库中存储的数据是有意义的或正确的,和现实世界相符。...实体完整参照完整关系模型必须满足的完整约束...

    数据完整性

    要想了解这三类完整性约束首先要了解什么是数据完整性。数据完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符。关系模型中三类完整性约束:
    – 实体完整性(Entity Integrity)
    – 参照完整性(Referential Integrity)
    – 用户定义的完整性(User-defined Integrity) •
    实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持

    实体完整性

    • 保证关系中的每个元组都是可识别的和惟一的 • 指关系数据库中所有的表都必须有主键,而且表中不允
    许存在如下记录:
    – 无主键值的记录
    – 主键值相同的记录
    • 原因:实体必须可区分
    例如:
    在这里插入图片描述
    上图就出现了主键值(学号是主键)重复的情况。当在表中定义了主键时,数据库管理系统会自动保证数据的实体完整性,即保证不允许存在主键值为空的记录以及主键值重复的记录。

    参照完整性

    也称为引用完整性
    • 现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用
    • 参照完整性就是描述实体之间的联系的
    • 参照完整性一般是指多个实体或关系之间的关联关系
    在这里插入图片描述
    此完整性涉及到了外键:
    • 参照完整性规则就是定义外键与被参照的主键之间的引用规则
    • 外键一般应符合如下要求:
    – 或者值为空
    – 或者等于其所参照的关系中的某个元组的主键值

    用户定义完整性

    • 也称为域完整性或语义完整性
    • 是针对某一具体应用领域定义的数据约束条件
    • 反映某一具体应用所涉及的数据必须满足应用语义的要求
    • 实际上就是指明关系中属性的取值范围,防止属性的值与应用语义矛盾
    • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统方法处理它们,而不要由应用程序承担这一功能

    展开全文
  • 参照完整

    千次阅读 2019-04-10 20:52:17
    参照完整,指多表之间的设计,主要使用外键约束。 – 多表设计有:一对多,多对多,一对一。 – 1、一对多 – 客户和订单的,一个客户可以有多张订单,一张订单属于一个客户。 CREATE TABLE customers( id int,...

    – 参照完整性,指多表之间的设计,主要使用外键约束。
    – 多表设计有:一对多,多对多,一对一。

    – 1、一对多
    – 客户和订单的,一个客户可以有多张订单,一张订单属于一个客户。

    CREATE TABLE customers(
    id int,
    name VARCHAR(100),
    address VARCHAR(255),
    PRIMARY KEY(id) – 最后一行不能写逗号,否则报错。
    );
    CREATE TABLE orders(
    order_num INT PRIMARY KEY,
    price FLOAT(8,2),
    status INT,
    customer_id INT,
    CONSTRAINT fk FOREIGN KEY(customer_id) REFERENCES customers(id)
    );
    – 外键一般放到数据量大的表中,以数据量小的为参靠
    – CONSTRAINT 约束
    – FOREIGN KEY 外键
    – REFERENCES 以什么为参考
    – 上面,创建一个外键约束,名字叫fk,参照的是customers表中的id。

    在这里插入图片描述
    子表的删除更新策略一共有4种:
    1.1. CASCADE 级联策略。
    主表的修改会被同步到子表中。
    1.2. NO ACTION 无动作策略。
    要删改主表,必须要先删改子表对应数据。
    在这里插入图片描述

    1.3 RSTRICT 主表约束策略。
    此策略,对主表的约束跟NO ACTION一样。即删、更新主表前的主键,必须要先删、更新子表中对应的。
    1.4 SET NO 置空策略。
    使用此策略时,当主表主键删改,则子表中的外键 设置为NULL。
    但如果子表的外键是主键,或者子表外键设置NOT NULL,则此时就相当于NO ACTION策略。
    在这里插入图片描述

    1. 多对多
      老师和学生,多对多关系。一个老师可以对应多个学生,一个学生可以对应多个老师。
      CREATE TABLE teachers(
      id int,
      name varchar(100),
      salary float(8,2),
      PRIMARY KEY(id)
      );
      CREATE TABLE students(
      id int,
      name VARCHAR(100),
      grade varchar(100),
      PRIMARY KEY(id)
      );
      CREATE TABLE tch_stu(
      t_id INT,
      s_id INT,
      PRIMARY KEY(t_id,s_id),
      CONSTRAINT tch_fk FOREIGN KEY(t_id) REFERENCES teachers(id),
      CONSTRAINT stu_fk FOREIGN KEY(s_id) REFERENCES students(id)
      );

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    1. 一对一
      在开发中,一对一,设计到一张表中。
    展开全文
  •  显然按照题目的意思并不能直接将关系salaried_worker的属性name和关系hourly_worker的属性name都定义为关系address的外键(foreign key)。因为我们只希望要求每个出现在address中的名字必须出现在salaried_worker...

    《数据库系统概论》有如下题目:

           显然按照题目的意思并不能直接将关系salaried_worker的属性name和关系hourly_worker的属性name都定义为关系address的外键(foreign key)。因为我们只希望要求每个出现在address中的名字必须出现在salaried_workerhourly_worker,而不是salaried_workerhourly_worker都要出现。

           我们不妨考虑建立新表worker_name,其中的属性name(主键)取遍关系salaried_worker和关系hourly_worker的属性name的所有值。然后关系address以关系worker_name的属性name作为外键即可。

           实现代码如下所示(SQL Server):

    /*建立新表worker_name*/
    select name
    into worker_name
    from salaried_worker
    union 
    select name
    from hourly_worker;
    
    /*将name定义为worker_name的主键*/
    alter table worker_name
    add primary key (name);
    
    /*address以worker_name的name属性作为外键*/
    alter table address
    add foreign key (name) references worker_name;

     

    展开全文
  • 定义参照完整

    千次阅读 2020-03-31 22:32:54
    定义参照完整的概念: 现实世界中的实体之间往往存在着某种联系,在关系模型中实体及实体之间的联系都是用关系来描述的,因此可能存在着关系关系间的引用。 例如:学生实体和专业实体可以用下面的关系模式表示,...
  • 参照完整约束:如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值;意义:如果关系R2的某个元组t2参照关系R1的某个元组t1,则t1必须存在;例如关系...
  • 当我们把2张表建立联系的时候,这2个表肯定是有关系的。它可以是一对一的关系;如果是多对多的关系,这是不允许出现的...参照完整规则要求:1、不允许在“多端”的字段中输入1个“一端”主键不存在的值;2、如...
  • 关系完整2.1 实体完整2.2 参照完整2.2.1 关系间的引用2.2.2 外码(Foreign Key)2.2.3 参照完整规则2.3 用户定义的完整 1. 关系操作 常用的关系操作 查询操作:选择、投影、连接、除、并、差、交、笛卡尔...
  • 参照完整约束

    2021-06-21 20:46:39
    参照完整是指通过定义一张表中外键与另一张表中主键之间的引用规则来约束这两张表之间的联系。 参照完整相关术语 从表:含有外键且参照其他表的表,如车辆表。从表亦称作“子表”或“参照表”。 主表:被...
  • 关系数据库——关系的完整约束

    千次阅读 2019-04-09 08:38:38
    介绍关系型数据库完整约束——实体完整参照完整、用户自定义完整
  • 试述关系模型的完整规则。在参照完整中,什么情况下外码属性的值可以为空值?
  • 数据库定义参照完整

    千次阅读 2020-05-18 11:03:18
    关系模型的参照完整在CREATE TABLE 中用FOREIGN KEY 短语定义哪些列为外码,用REFERENCES短语指定这些外码参照哪些表的主码。 例如:关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码,Sno...
  • 参照完整以及实例

    千次阅读 2020-09-07 15:12:58
    参照完整 参照完整是对外键取值有效得限制,以确保数据在另一个参照表得取值范围内。参照完整要求外键得取值只能取参照表中得有效值或空值。如果在参考表中某一记录得主键被依赖表中得外部键参考,那么这一...
  • 文章目录关系数据库关系操作基本关系操作关系数据库语言的分类关系模型的完整实体完整(Entity Integrity)参照完整(Referential Integrity)用户定义完整(User-defined Integrity)E-R图向关系模型的转换...
  • 数据完整分为实体完整、域完整参照完整。 2.1实体(行)完整 (实体完整中的实体指的是表中的行,因为一行记录对应一个实体) 实体完整规定表的一行在表中是唯一的实体,不能出现重复。 实体完整...
  • 实体完整规则是指若属性A是基本关系R的主属性 ,则属性A不能取空值。若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为...
  • SQL语句(八)参照完整

    万次阅读 多人点赞 2018-07-20 13:07:06
    参照完整主要是定义外码,将一个关系的主码放在另一个关系中,作为该关系的属性,就称其为外码。外码的取值有两种情况,一种为空,另外一种就是被参照表的主码的域。 2.实例 1.创建表时定义参照完整 ①先...
  • MySQL数据库中数据参照完整和一致的设计与实现.pdf
  • mysql-参照完整

    千次阅读 2018-08-20 11:48:44
    MySQL参照完整一般是通过MySQL外键(foreign key)实现的。 外键(仅innoDB支持)所引用表的列必须是主键。 外键声明包括三个部分: A、哪个列或列组合是外键 B、指定外键参照的表和列 C、参照动作[cascade(级联...
  • 关系模型中有3类完整约束:域完整、实体完整参照完整。 1.域(列)完整 也就是用户定义的表字段的完整 通常指数据的有效,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系...
  • 关系模式 关系 关系的完整

    千次阅读 2018-03-06 21:37:30
    关系模式造磨一时刻的状态或内容 动态的、随时间不断变化的关系模式和关系统称为关系,需根据上下文加以区分关系的完整:实体完整参照完整、用户定义的完整 实体完整参照完整关系模型必须满足的...
  • 关系的完整(1)关系的三类完整约束(2) 实体完整(Entity Integrity)(3)参照完整关系间的引用❷ 外码(Foreign Key)❸ 参照完整规则(4)用户定义的完整3.关系代数(1)关系代数运算符(2)...
  • 原因可能有:b表外键字段数据 与 a表主键字段数据不符。  解决办法:使b表外键字段数据 与 a表主键字段数据一致。 例如下图;红色圈画出表b中 有字段值“ab” ...将“ab”改成“aa”,先关闭数据表,重新编辑关系即可
  • 关系的完整关系型数据模型结构中的另一组成部分,它分为实体完整参照完整和用户定义完整三类。在关系数据库中一个关系对应现实世界的一个实体集,关系中的每一个元组对应一个实体。在关系中用主关键字来...
  • 关系的完整-实体完整

    千次阅读 2019-06-29 09:19:32
    关系模型中有三类完整的约束:实体完整参照完整,用户定义的完整。 1.实体完整 实体完整定义: 若属性A(一个或一组属性)是基本关系R的主属性,则A不能取空值。 所谓空值就是“不知道”或“不...
  • 针对这种参照关系的维持,目前实时协同中尚未有相关的研究,因此提出了CRSCM(create relation semantic consistency maintenance)语义一致维护策略。该策略首先根据参照操作的语义信息,构建参照实体与目标实体...
  • 关系模型的完整约束

    千次阅读 2018-07-29 00:11:11
    关系模型的完整规则是对关系的某种约束条件。...参照完整:维护实体之间的引用关系,外键可以为空,或者其值为参照关系对应的主键值; 用户定义的完整:由应用环境决定,针对具体关系数据库的约束条件。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,913
精华内容 41,565
关键字:

关系参照性