考虑一个包含表 Products 和Employees 的数据库。对当前的产品经理进行建模有一个新的要求,他们是负责产品的唯一员工,并指出有些产品足够简单或成熟,不需要产品经理。也就是说,每个产品可以有零个或一个产品经理。
方法一:alter tableProduct
添加一个新的NULL
able 列product_manager_employee_ID
,这样一个没有产品经理的产品就可以通过这个NULL
值来建模。
方法 2:创建一个新表ProductManagers
,其中包含不可NULL
列的列,product_ID
并且employee_ID
对 具有唯一约束product_ID
,因此没有产品经理的产品通过该表中缺少行来建模。
还有其他方法,但这是我最常遇到的两种。
假设这些都是合法的设计选择(我倾向于相信)并且仅仅代表不同的风格,他们有名字吗?我更喜欢方法 2,并且发现很难在不使用实际示例的情况下向喜欢方法 1 的人传达风格上的差异(就像我在这里所做的那样!)如果我可以说,“我更喜欢倾向6NF(或其他)风格我自己。”
假设其中一种方法实际上是一种反模式(我只是怀疑方法 1 可能是通过将两个实体之间的关系建模为其中一个实体的属性)这种反模式有名称吗?