我是sql的新手。我很难理解孩子和父母的关系。在thomasconally的《数据库系统》一书中,提到“如果子表中的forign键为null,则子表在关系中的参与是完全的”。外键为空时,子表的参与度如何为满?请任何人解释一下这个概念。谢谢!
igetnqfo1#
首先,我假设您熟悉主键、外键、父表和子表,是吗?所以,您有一个父表:pk idnumber,name,location,phonenumber。子表:fk parent\u table.idnumber,pk locnumber,officelocation,officeaddress,officecity。您有一些一般类型的关系:一对一、一对多、多对多(这是表和字段的关系)和特定的关系:拒绝、限制、级联、空化、设置默认值。一般关系基本上是父表中有多少条记录与子表中有多少条记录或与同一表中其他字段相关的字段相连接/相关。特定关系表示当我们添加/修改/删除具有相同键(idnumber)的父表记录时,子表中的相关记录会发生什么情况。有了这种理解,“子表的完全参与”是因为子表必须参与父表中发生的操作。这通常通过将外键字段设置为notnull/minimum=1来实现。因此,父表中对记录的操作将影响所有具有匹配外键的子表记录。例如,如果删除idnumber为123的父表记录,则对于外键为idnumber=123的所有记录,希望在子表中执行什么操作?同时删除(或级联),保留但标记为不活动(拒绝),如果存在具有匹配外键的子表记录,则不允许删除父表(限制)?使用限制关系通常是最佳实践。有更多的规则和准则的关系,但我希望这回答了你的问题。
1条答案
按热度按时间igetnqfo1#
首先,我假设您熟悉主键、外键、父表和子表,是吗?
所以,您有一个父表:pk idnumber,name,location,phonenumber。
子表:fk parent\u table.idnumber,pk locnumber,officelocation,officeaddress,officecity。
您有一些一般类型的关系:一对一、一对多、多对多(这是表和字段的关系)和特定的关系:拒绝、限制、级联、空化、设置默认值。一般关系基本上是父表中有多少条记录与子表中有多少条记录或与同一表中其他字段相关的字段相连接/相关。特定关系表示当我们添加/修改/删除具有相同键(idnumber)的父表记录时,子表中的相关记录会发生什么情况。
有了这种理解,“子表的完全参与”是因为子表必须参与父表中发生的操作。这通常通过将外键字段设置为notnull/minimum=1来实现。因此,父表中对记录的操作将影响所有具有匹配外键的子表记录。
例如,如果删除idnumber为123的父表记录,则对于外键为idnumber=123的所有记录,希望在子表中执行什么操作?同时删除(或级联),保留但标记为不活动(拒绝),如果存在具有匹配外键的子表记录,则不允许删除父表(限制)?使用限制关系通常是最佳实践。
有更多的规则和准则的关系,但我希望这回答了你的问题。