SQL 关系中哪个是父级,哪个是子级?

问题描述 投票:0回答:7

sql 关系中什么是父级,什么是子级?

就我而言,我有一个零件(例如螺钉)和产品材料。为了便于论证,一种产品材料(例如钢)只能属于一个零件(但不属于现实世界)。所以这是 1:n。该零件将在 ProductMaterial 表中将其 pk 作为 fk。

在这种情况下,哪个是父级,哪个是子级?

sql database-design
7个回答
13
投票

关系数据库(例如 SQL)实际上没有父/子关系的概念 - 这是您作为程序员对数据的解释。有些架构明确地声明和使用这种关系,例如分层(以及在某种程度上面向对象)数据库。


3
投票

您可以这样解释数据库中的 1:n 关系:子级始终是保存外键的模型,因为这表明它所属的位置。
当然,如果您有自引用模型/表格,您必须以不同的方式看待它。


2
投票

通常在一对多关系中,“一个”记录是父记录,“多”记录是子记录。

当然,有些情况下谈论亲子关系是没有任何意义的。在你的例子中,它至少有某种意义。在其他示例中,您甚至可能会发现相反的情况,即一个孩子有很多父母,但这样描述它并不是很有用。


1
投票

在本例中,Part 是父级,ProductMaterial 是子级。

父母可以有无限数量的孩子(可怕的想法 - 2 对我来说就足够了!),而孩子只能有有限数量的父母 - 用 DB 术语来说,只有 1!


0
投票

除了 David M. 所说的之外,另一种看待这个问题的方法是从 ORM 实现的角度(例如 Linq to SQL)。您有两个实体:零件和产品材料。每个零件实体都有一组 ProductMaterial 实体(子实体或 EntitySet)。每个 ProductMaterial 实体都有零个或一个 Part 实体(父实体或 EntityRef)。

兰迪


0
投票

我想说,任何与一个或多个其他表具有一对多关系的表都可以被视为这些其他表的父表。自加盟?这是一个模棱两可的术语,我认为没有人能理解。


0
投票

在 Product_ProductMaterial 关系或关联中,“产品”是父级,“产品材料”是子级。

如果删除了孩子,父母可以继续生活。如果删除父母,孩子就会成为孤儿或失去身份,这是不好的。如果在删除 B 之前不能删除 A,则 A 是父级,B 是子级。

如果我猜对了,在你的情况下,在Product_ProductMaterial关系中,如果你删除Product,ProductMaterial将被分配给任何人,成为孤儿,身份危机。但如果你删除了ProductMaterial,Product仍然可以存在,不需要身份支持。

抱歉,如果我的措辞不好。

© www.soinside.com 2019 - 2024. All rights reserved.