【发布时间】:2009-06-05 09:20:32
【问题描述】:
考虑一个包含表 Products 和Employees 的数据库。对当前的产品经理进行建模有一项新要求,即作为负责产品的唯一员工,并指出有些产品足够简单或成熟,不需要产品经理。也就是说,每个产品可以有零个或一个产品经理。
方法 1:更改表 Product 以添加一个新的 NULLable 列 product_manager_employee_ID,这样没有产品经理的产品将由 NULL 值建模。
方法 2:创建一个新表ProductManagers,其中包含非NULLable 列product_ID 和employee_ID,对product_ID 具有唯一约束,因此没有产品经理的产品由此表中没有一行。
还有其他方法,但这是我最常遇到的两种。
假设这些都是合法的设计选择(我倾向于相信)并且仅仅代表不同的风格,他们有名字吗?我更喜欢方法 2,并且发现很难在不使用实际示例的情况下向喜欢方法 1 的人传达风格上的差异(就像我在这里所做的那样!)如果我可以说,“我更喜欢inclination-towards-6NF(或其他)风格。”
假设其中一种方法实际上是一种反模式(我只是怀疑方法 1 的情况可能是通过将两个实体之间的关系建模为其中一个实体的属性)这种反模式是否具有名字?
【问题讨论】:
标签: sql design-patterns database-design anti-patterns