我在两个模型之间有多对多的关系:客户和地址。客户有许多地址,但其中一个地址是默认地址。我认为使用customer_id
,address_id
和default
列创建联结表是可行的方法。 default
列将是一个布尔值。但那是对的吗?大多数值为0,偶尔为1.
另一个人告诉我只保留没有default
列的联结表,而是将customers
表中的默认地址保存为address_id
。该参数是针对存储空间的,因为不需要连接表中的额外列,并且我们不需要额外的连接来获取默认地址ID。
但是,从数据结构的角度来看,我认为在联结表中使用默认标志更有意义。此外,存储不会成为问题。
我希望听到关于此和任何最佳做法的其他意见。提前谢谢。
答案 0 :(得分:0)
只有很多:很多关系("联汇表")"客户CUSTOMER有地址ADDRESS"客户CUSTOMER的默认地址为0或1到0或1" ADDRESS"。从后者到前者的(CUSTOMER,ADDRESS)有一个外键。如果默认地址是可选的,并且您希望将其作为客户的属性,则可以使其为NULL。 (但这引入了一个涉及外键的循环,大多数DBMS不必要地扼杀它。)
尝试优化"没有意义。没有更多的细节,加上气味,加上使用模式,加上目前的选择成本效益,加上(如果完成)验证。你似乎还没有完成这个过程所需的经验。只需做出最直接的设计。