在此示例中,有两个ShowCookieBox
和companies
。这是addresses
关系。公司必须至少有一个地址,但它可以有更多。同样,地址可以绑定到多个公司(认为它们位于同一建筑物内)。
所以有一个连接表。我想知道给定公司的默认地址是什么,所以我认为该表有三列:many-to-many
,company_id
,address_id
。
我的问题更多是关于is_default
列。知道该列中有许多行is_default
,然后默认为0
,这是一种可接受的方式来处理注意哪个地址是默认的?
我想我可以使用1
和company_id
列添加一个唯一约束,但是想知道是否有人会看到is_default
列的低基数问题。这个问题在一般意义上更为重要,因为我知道这取决于具体情况,而且我只提供了一些细节。但另外需要注意的是,表中也不会有大量的行。
提前致谢。
答案 0 :(得分:1)
低基数不会成为问题。您的属性是布尔值,因此每条记录只需要一位,因此考虑到硬件价格,即使数十亿条记录也没有任何区别。
在更新和查询方面,有一种替代方案可能更实用:为您的公司添加一个额外的default_address_id
列,其中包含默认地址记录的ID。如果你创建not null
,你可以确保每个公司只有一个默认地址,而不会过度强调MySQL不太强大的约束系统。但不管你怎么决定,它都不会打破你的脖子。