我有2个实体
用户可以使用信用卡。你会如何建立关系模型以及为什么?
选项1 :用户拥有可能为null的UserCreditCard外键
选项2 :UserCreditCard的用户外键不能为空
修改
我的错误没有说明该用户将拥有0或1张信用卡,不再有
答案 0 :(得分:5)
我会避免在这里建立双向关系。简单地使用引用您的CreditCard
表的UserID
列对User
表进行建模似乎更有意义。向CreditCardID
添加User
引用只会增加不必要的复杂程度和错误机会。
我建议将参考从 User
移至 CreditCard
,并从 {{1>引用 } 到 CreditCard
不可空和索引。这应该可以为您提供所需的一切。
答案 1 :(得分:2)
我认为你已经说过你应该如何以及为什么要对它进行建模:
用户可以使用信用卡
使用选项1.您可以通过检查外键来判断谁有卡和谁没有,并且您的映射仍然有效,因为如果信用卡外键为空,则信用卡赢了t匹配任何东西,所以它只是为空。但是,当您删除删除用户实体中的映射的信用卡时,您必须小心。
答案 2 :(得分:2)
选择第二选项。它的复杂性较低,它还可以模拟用户拥有多张信用卡或更改信用卡的情况。