-1

多对多表连接两个实体表。我需要多对多表中的一个附加列来表示极性,它应该只有两个值,一个代表正,第二个代表负。

为了实现这一点,我计划添加一个名为的表,该表sign将有一个名为的列sign(这也是表的主键),并且该表将仅包含两个值,一个代表正数,另一个代表负数。

然后可以将上述多对多表sign.sign作为外键包含在内,并且只允许两个值。

如果这是一个糟糕的解决方案,请评论您为什么会有这种感觉以及什么可能是更好的解决方案。

如果一个可接受的解决方案,那么这两个值应该是什么?可能的答案是:

  • 正面和负面(不会使用)
  • p 和 n(可能不是)
  • 1 和 0
  • 1 和 -1

我特意包含了这个php标签,以表明我将使用 PHP,因为一种解决方案优于另一种解决方案可能会简化 PHP 实现。

4

2 回答 2

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 ('+', '-'))
)

就个人而言,我认为“积极”和“消极”的最佳符号+-

于 2018-03-24T15:32:00.380 回答
1

如果希望在查询中使用符号算术,那么 1/-1 可能是最佳选择。

于 2018-03-25T02:30:26.483 回答