简述主键与外键的关系,主外键约束

(3359 www.cn blogs.com/Chen xiaohei/p/6909318.html数据库(理解外键及其约束)一)首先定义外键

如果一个表(表1 )中的字段x不是主键,另一个表)中的字段x不是主键,则字段x称为表2中的外键。 也就是说,如果关系模型R1的属性集是关系模型R2的主键,而不是关系模型R1的主键,则该属性集被称为关系模型R1的外键。

2 :了解主键表和外键表

(1)以公用键为主键的表为主键表(父表、主表) )。

)使用公共关键字作为外键的表作为外键表(从表到外观) )。

举个例子:

这里有两张表(student和depart )学生表和系表。 这里的字段departNum是学生表的外键。 这里的外键表是学生表,主键表是系表。

(四)外键作用

各种书籍和网络资料大多是抽象空洞的解释。 保证数据的完整性和一致性。

个人理解和下面的外键约束一起说。

(五)外键约束

在Mysql下,设置外键:

on delete规则:

1、级联

(1)级联删除是指在删除主键表的同时,也同时删除外键表。

)在上面的示例中,如果删除了有系表的系,则在学生表中查找与此删除的系号对应的院信息时会出错。 由于该系已不存在,因此在删除系表(主键表)时,必须删除其他与其相关的表。 在此说明外键的作用,保持数据的完整性、完整性。 当然反过来说,删除学生表的记录也不会影响院系表的数据。 即使查了本科号码也能正确地查出来。 因此,从外键表中删除数据不会影响主键表。

2、NO ACTION (非活动、默认)、RESTRICT :约束/限制

如果值为No Action或Restrict,则从主键表中删除相应记录时,首先检查是否存在与该记录对应的外键,如果存在,则不允许删除。 也就是说,外键表约束主键表

3、设置空值

如果值为Set Null,则在从主键表中删除相应记录时,首先检查是否存在与该记录对应的外键,如果存在,则将子表的外键值设置为null。 (同样,外键表约束主键表,但必须允许外键为空。

NO ACTION与RESTRICT之间的区别:只有在和单独的情况下,前者在其他受约束的操作之后执行,后者是最高优先级的执行。

6 .实用化

模型中的数据如下:

package org.model;

公共类事件{

私有字符串常量;

私有字符串stuname;

span style=’color:#FF0000;’ 私有部门部门; /span

公共字符串获取三星

返回三星;

}

公共字符串获取stuname

返回稳态;

}

公共部门获取部门

返回部件;

}

publicvoidsetstunum (字符串常量)。

this.stuNum=stuNum;

}

公共语音设置名称(字符串名称)。

this.stuName=stuName;

}

publicvoidsetdepart (部门部门)。

this.depart=depart;

}

}

在此设计对象模型时,属性是整个depart对象,而不是将其设计为名为DepartNum的外键。 这具有以下优点:查询不需要通过外键或连接查询再次执行查询

要使用外键进行咨询,请:

span style=’font-size:18px;’ query query=session.create query (fromstudentasstudwherespanstyle=’ color : # ff 0000;’ stud.depart.depart num=: num/span ‘; query.setstring(‘num )、’ 890 ); /span

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注