Database design 这应该很简单。但我该如何设计呢?

Database design 这应该很简单。但我该如何设计呢?,database-design,Database Design,我有两种业务单位;司和部。一个业务单元必须是一个或另一个,但不能同时是两个。 所以这很容易。有一个BusinessUnit表和一个BusinessUnitType查找表,其中包含部门和部门。 但是,只有部门可以包含团队。每个部门都有一对多的团队。各部门没有团队。 那么我应该在这里做什么呢?也许我应该在BusinessUnitType表上有一个名为hasTeam的标志? 这是整理这些数据的最佳方式吗? 我不确定这个特定的设计是否有名称。如果没有更广泛的背景(例如,您正在使用什么技术,这是否是一个新

我有两种业务单位;司和部。一个业务单元必须是一个或另一个,但不能同时是两个。 所以这很容易。有一个BusinessUnit表和一个BusinessUnitType查找表,其中包含部门和部门。 但是,只有部门可以包含团队。每个部门都有一对多的团队。各部门没有团队。 那么我应该在这里做什么呢?也许我应该在BusinessUnitType表上有一个名为hasTeam的标志? 这是整理这些数据的最佳方式吗?
我不确定这个特定的设计是否有名称。

如果没有更广泛的背景(例如,您正在使用什么技术,这是否是一个新项目,您在实施方面是否有任何其他限制等),就有点难以回答。
但一般来说,我会说:

  • 如果这是一个新项目,并且您不受技术限制,我建议使用OR/M(我个人使用nHibernate)。您可以轻松地将其配置为适合您的需要,而无需担心底层数据库

  • 否则,你原来的想法似乎是个好主意。根据您正在使用的数据库,如果您愿意,您可能可以创建一个约束来强制执行该逻辑(我个人不建议这样做,因为它会将您的业务逻辑带到您的数据库中,而它不属于您的数据库)。
    希望这有帮助


  • 您的案例看起来像gen spec设计模式的一个实例。genspec是“泛化-专门化”(generalization-specification)的缩写。理解继承的程序员熟悉genspec模式。但是在关系模式中实现genspec模式可能有点棘手,数据库设计教程经常跳过这个主题

    这个话题以前也提过。()


    幸运的是,网上有一些很好的文章解释了这个主题()。谷歌搜索()会产生更多的文章。

    这是家庭作业吗?如果是,那么正确地标记它。听起来像是一个常规的继承问题。您正在使用ORM?实体框架v4。是的,我可以看到如何使用继承来组织这些类。