外键 - 儿童父母关系

时间:2018-01-15 11:19:17

标签: mysql relational-database

我是SQL的新手。我很难理解孩子的父母关系。在书中"数据库系统由Thomas Conally" 提到"如果子表中的forign键为null,则子表的参与已满在一段关系" 。当外键为空时,子表的参与如何填满? 请任何人都可以解释这个概念。 谢谢!

1 个答案:

答案 0 :(得分:0)

首先,我假设您熟悉主键,外键,父表和子表,是吗?

所以,你有一个parent_table: PK IDnumber,    名称,    地点,    ******中国。

还有一个child_table: FK parent_table.IDnumber, PK LocNumber,    办公室位置,    OfficeAddress,    OfficeCity。

你有一些一般类型的关系:一对一,一多,多对(用于表和字段。)和特定的关系:拒绝,限制,级联,无效,设置默认。一般关系基本上是parent_table中有多少记录与child_table中的记录数相关联,或与相同表中其他字段相关的字段相关。具体关系说明当我们使用相同的键(IDnumber)添加/修改/删除parent_table记录时,child_table中的相关记录会发生什么。

根据这种理解,“子表的完全参与”是因为子表必须参与父进程中发生的操作。这通常通过将外键字段设置为NOT NULL / minimum = 1来完成。因此,记录中parent_table中的操作将影响具有匹配外键的所有child_table记录。

例如,如果删除ID为123的父表记录,那么对于外键为IDnumber = 123的所有记录,您希望在子表中执行哪些操作?删除(或Cascade),保留但标记为非活动(拒绝),如果存在具有匹配外键的子表记录(限制),则不允许删除父表?使用Restrict关系通常是最佳实践。

关系有更多的规则和指南,但我希望这能回答你的问题。