【问题标题】:Setting a default flag - Many-to-Many Relationships设置默认标志 ​​- 多对多关系
【发布时间】:2016-04-24 05:35:57
【问题描述】:

在本例中,有两个companiesaddresses。这是many-to-many 关系。一家公司必须至少有一个地址,但它可以有更多。同样,一个地址可以与多个公司相关联(认为它们在同一栋大楼内)。

所以有一个连接表。我想说明给定公司的默认地址是什么,所以我认为该表将包含三列:company_idaddress_idis_default

我的问题更多关于is_default 列。知道该列中将有很多行带有0,然后是默认1,这是处理注意哪个地址是默认地址的可接受的方式吗?

我想我可以使用 company_idis_default 列设置唯一约束,但想知道是否有人会看到 is_default 列的低基数问题。这个问题更笼统地说,因为我知道这取决于情况,我只提供了一些细节。但也要注意,表中的行数也不会很大。

提前致谢。

【问题讨论】:

    标签: mysql database database-design


    【解决方案1】:

    低基数不会成为问题。您的属性是布尔属性,因此每条记录只需要一位,因此考虑到硬件价格,即使数十亿条记录也不会产生任何影响。

    在更新和查询方面,还有一种可能更实用的替代方法:为您的公司添加一个额外的 default_address_id 列,该列采用默认地址记录的 id。如果你这样做not null,你可以确保每家公司都只有一个默认地址,而不会过度强调 MySQL 不太强的约束系统。但无论你如何决定,它都不会伤到你的脖子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2013-05-13
      • 2018-04-25
      • 2023-03-20
      • 2013-06-26
      • 2012-07-16
      • 2014-08-02
      相关资源
      最近更新 更多