0

address_book という名前のテーブルがあります。

フィールド id、user_id、......、default_address、address_type があります。

address_type は boolean (0: 配送先住所 - 1 : 請求先住所) default_address は boolean (0: デフォルトの住所ではない - 1 : デフォルトの住所)

会社には8つの住所があると考えてください。5 つの住所は配送先、3 つの住所は請求先です。

しかし同時に、address_type に依存するデフォルト値は 1 つだけです。配送用の 1 つのデフォルトの住所 請求書用の 1 つのデフォルトの住所。

このステートメントをクエリすると

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 を使用できます。1 つは請求書、もう 1 つは配送先住所です。

この状況の検証が必要な場合に一意のインデックスを使用するにはどうすればよいですか。

4

1 に答える 1

0

デフォルトの請求先住所用とデフォルトの配送用に 1 つずつ、2 つの新しいテーブルを追加するのはどうでしょうか。次に、これらの 2 つのテーブルに対する制約は、address.id と user.id だけになります。主キーは両方のフィールドです。

于 2013-10-01T14:39:12.583 に答える