我有一个名字是address_book的表。
我有字段 id、user_id、...、default_address、address_type
address_type是布尔值(0:送货地址 - 1:发票地址)default_address是布尔值(0:非默认地址 - 1:默认地址)
认为一家公司有 8 个地址。五个地址用于交货,三个地址用于发票。
但与此同时,只有一个默认值取决于address_type。一个默认交货地址 一个默认地址用于发票。
如果我查询此语句
alter table address_book add unique index(default_address, address_type)
这不合逻辑。
id | user_id | default_address | address_type|
.. | .. | | |
.. | .. | | |
.. | .. | | |
----------------------------------------------
12 | 10 | 1 | 1 |
----------------------------------------------
13 | 10 | 0 | 1 |
----------------------------------------------
14 | 10 | 0 | 1 |
----------------------------------------------
15 | 10 | 1 | 0 |
----------------------------------------------
16 | 10 | 0 | 0 |
----------------------------------------------
17 | 10 | 0 | 0 |
在这个概念中,每个用户最多可以 2 个default_address一个是发票一个是送货地址。
我如何使用唯一索引,我想对这种情况进行验证。
如何添加两个新表,一个用于默认发票地址,一个用于默认交货。然后,对这两个表的约束将只 address.id 和 user.id。主键是两个字段。