多对多表连接两个实体表。我需要在多对多表中使用一个额外的列来表示极性,它应该只有两个值,其中一个表示正数,第二个表示负数。
为了实现这一点,我计划添加一个名为sign
的表,它将有一个名为sign
的列(也是表的主键),并且该表将只包含两个值一个代表积极,另一个代表消极。
上述多对多表可以包含sign.sign
作为外键,只允许这两个值。
如果这是一个糟糕的解决方案,请评论您为什么这样做以及可能是更好的解决方案。
如果是可接受的解决方案,那么这两个值应该是什么?可能的答案是:
我故意包含php
标记,表明我将使用PHP,因为一个解决方案可能会简化PHP实现。
答案 0 :(得分:1)
我并不是bit
的忠实粉丝,但是这样的事情应该做你想做的事情并明确:
create table . . . (
. . .
sign_is_positive bit(1) not null,
. . .
)
另一种方法是使用check
约束,MariaDB的更新版本支持该约束。我可能倾向于这样做:
create table . . . (
. . .
sign char(1) not null,
. . .
constraint chk_t_sign check sign (sign in ('+', '-'))
)
就个人而言,我认为“正面”和“负面”以及+
和-
的最佳符号。
答案 1 :(得分:1)
如果希望在查询中使用符号算法,则1 / -1可能是最佳选择。