数据库父 - >孩子“长子”关系

时间:2012-06-20 12:24:52

标签: sql sql-server entity-framework

我遇到了数据库设计问题。为了说明我的问题想象如下:

一个简单的父 - >子关系:

[Parent] 1-----* [Children]

现在每个父母(妈妈或爸爸)在有孩子时都有一个长子。我需要从父母到初生儿童的数据库中建立强有力的关系

[Parent] 1-----1 [Children]

我可以简单地将一个FirstbornChildId添加到父表中,但我不喜欢这种方法,因为它可能导致数据不一致。 (FirstbornChildId链接到ParentId链接到另一个父级的Child ...)

实体框架应该映射关系,以便每个Parent-Entity都有一个链接到特定Child的FirstbornEntity属性。

在Microsoft SQL 2008 R2中有没有很好的方法来实现这一目标?

2 个答案:

答案 0 :(得分:2)

两种可能的解决方案

三张桌子:

  • 父表
  • 儿童表
  • FirstBorns表
      父母
    • id
    • 儿童身份

儿童表中的

列WasFirstBorn (是/否或1/0)

答案 1 :(得分:2)

我认为你的方法很好。您必须防止应用程序层中的数据损坏。您可以使用数据库约束来做很多事情。您至少可以使用FirstbornChildId的外键来确保孩子确实存在(无论父母是否存在)。

这种“长子”属性无论如何都是非规范化的:它可以源自孩子们的“生日”属性。我很欣赏您出于性能原因而明确存储它,并且没有问题。但是如果你想让数据库完全处理完整性,那确实会让事情变得棘手。