什么是父级,sql关系中的子级是什么?
在我的情况下,我有一个部分(说螺丝)和产品材料。为了论证,产品材料(例如钢)只能属于一个部分(但不属于现实世界)。所以这是1:n。该部件将其pk作为ProductMaterial表中的fk。
在这种情况下哪个是父母,哪个是孩子?
答案 0 :(得分:10)
SQL等关系数据库实际上没有父/子关系的概念 - 这是您作为程序员对数据的解释。有些架构明确地陈述和使用这种关系,例如层次结构(以及某种程度上的OO)数据库。
答案 1 :(得分:2)
您可以通过以下方式解释数据库中的1:n关系:子项始终是保存外键的模型,因为它表示它所属的位置。
当然,如果你有自引用模型/表格,你必须以不同的方式看待它。
答案 2 :(得分:1)
在这种情况下,Part是parent,ProductMaterial是child。
父母可以拥有无限数量的孩子(可怕的想法 - 2对我来说足够了!),而孩子只能拥有有限数量的父母 - 而在数据库方面,只有1个!
答案 3 :(得分:1)
通常在一对多关系中,它是作为父级的“一”记录,以及作为子级的“多”记录。
当然,在某些情况下谈论亲子关系没有任何意义。在你的例子中,它至少有一些意义。在其他例子中,你甚至可能会发现相反的情况,即孩子有很多父母,但那样用它来描述它并不是很有用。
答案 4 :(得分:0)
除了David M.所说的另一种方法,就ORM实现而言(例如Linq to SQL)。您有两个实体,Part和ProductMaterial。每个零件实体都有一组ProductMaterial实体(子实体或EntitySet)。每个ProductMaterial实体都有零个或一个Part实体(父实体或EntityRef)。
兰迪
答案 5 :(得分:0)
我想说任何与一个或多个其他表有一对多关系的表都可以被认为是其他表的父表。自我加入?一个模糊的术语,我认为没有人理解。
答案 6 :(得分:0)
在Product_ProductMaterial关系或关联中,“产品”为父级,“产品材料”为子级。
如果删除孩子,父母可以继续生活。如果删除父母,孩子将成为孤儿或无身份,这是不好的。如果在删除B之前不能删除A,则A为父级,B为子级。
如果我猜对了,就您在Product_ProductMaterial关系中的情况而言,如果删除产品,则ProductMaterial不会被分配给任何人,成为孤儿,身份危机。但是,如果您删除ProductMaterial,则Product仍可以存在,不需要身份支持。
对不起,如果我的措辞不好。