单个列的多个外键

Aar*_*ell 25 sql sql-server nhibernate database-design

我正在为客户/订单系统定义一个数据库,其中有两种高度不同类型的客户.因为它们是如此不同,只有一个客户表会非常难看(它充满了空列,因为它们对于一种类型来说毫无意义).

他们的订单格式相同.是否可以CustomerId在我的Order表中有一个列,它有两个客户类型的外键?我已经在SQL服务器中进行了设置,它给我创建关系没有问题,但我还没有尝试插入任何数据.

另外,我打算使用nHibernate作为ORM,通过这样的关系可以引入任何问题吗?

Guf*_*ffa 25

不,您不能将单个字段作为两个不同表的外键.你怎么知道在哪里寻找钥匙?

你至少需要一个字段来告诉它是什么类型的用户,或两个单独的外键.

您还可以将所有用户通用的信息放在一个表中,并为特定于用户类型的信息设置单独的表,以便您拥有一个用户ID为主键的表.

  • 同意 标准化是这里的关键。 (2认同)
  • @Liao:我不认为你理解这种情况......例如,如果你有外键值42,你怎么知道它是表A或表B中的键? (2认同)