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

时间:2011-02-15 08:44:01

标签: database-design

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

2 个答案:

答案 0 :(得分:2)

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

此主题之前出现过。 (See sample discussion)。

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

答案 1 :(得分:0)

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

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

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

相关问题