【问题标题】:This should be simple. But how do I design this?这应该很简单。但是我该如何设计呢?
【发布时间】:2011-06-27 10:47:15
【问题描述】:

我有2种业务单位;部门和部门。业务单位必须是其中之一,但不能两者兼而有之。 所以这很容易。有一个 BusinessUnit 表和一个包含部门和部门的 BusinessUnitType 查找表。 但是,只有部门可以包含团队。每个部门都有一对多的团队。部门没有团队。 那么我应该在这里做什么?也许我应该在 BusinessUnitType 表上有一个名为 hasTeam 的标志? 这是组织这些数据的最佳方式吗? 我不确定这个特殊的设计是否有名字。

【问题讨论】:

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

标签: database-design


【解决方案1】:

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

这个话题之前已经提出过。 (See sample discussion)。

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

【讨论】:

    【解决方案2】:

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

    1. 如果这是一个新项目,并且您不受技术限制,我建议使用 OR/M(我个人使用 nHibernate)。您可以轻松配置它以满足您的需求,而无需担心底层数据库。

    2. 否则- 看来您最初的想法是个好主意。根据您使用的数据库,如果您愿意,您可能可以创建一个约束来强制执行该逻辑(我个人不建议这样做,因为它会将您的业务逻辑带入您不属于的数据库)。 希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      相关资源
      最近更新 更多