1

私はテーブルを持っています。

word      singular_only      plural_only
homework       1                  0       #homework has no plural
dog            0                  0       #dog and dogs are both real words
scissors       0                  1       #scissor is not a valid singular noun 
 x             1                  1       #should not be insertable

最初の3行は許可しますが、4行目は許可しません。これに制約を追加するにはどうすればよいですか。singular_onlyとplural_onlyの値はブール値です。列は、単語が複数形または単数形、あるいはその両方を持っているかどうかを意味します(両方のブール値がfalseの場合)。明らかに、何かが単数形にしかなり得ない場合、複数形にすることもできません。MySQLでこれをモデル化するための最良の方法は何ですか。

MySQLにこの制約を追加するか、または上にあるコードがこれらの値を挿入しようとしないようにする方がよいでしょうか。

言い換えると

singular_only NAND plural_only should also be true
4

1 に答える 1

1

一致する値を制約する場合を除いて、別の列に基づいてある列に制約を追加することはできません。これは望ましくありません。「単数/複数」ステータスを設定するには、単一の列を使用する必要があります。整数 (3 つの可能な状態の場合は 0、1、2)、列挙型、さらには別のテーブルを使用するなど、いくつかの解決策があります。どちらを選択するかはあなたにお任せしますが、私は別の表の柔軟性と明快さを好みます。

于 2013-02-21T01:46:41.363 に答える