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

我想允许前三行,但不允许第四行。如何为此添加约束。single_only 和plural_only 中的值是布尔值。这些列表示一个词是只有复数形式还是单数形式或两者都有(如果两个布尔值都是假的)。显然,如果某物只能是单数,它就不能是复数。在 MySQL 中对此进行建模的最佳方法是什么。

是在 MySQL 中添加这个约束还是确保上层代码永远不会尝试插入这些值更好。

换句话说

singular_only NAND plural_only should also be true
4

1 回答 1

1

您不能基于另一列对一列添加约束,除非约束匹配值,您不想这样做。您应该使用单列来设置“单数/复数”状态。有几种解决方案,包括使用整数(0、1、2 表示三种可能的状态)、枚举,甚至是另一个表。我将把选择权留给你,但我更喜欢另一张桌子的灵活性和清晰性。

于 2013-02-21T01:46:41.363 回答