代码之家  ›  专栏  ›  技术社区  ›  user1032531

符号极性的自然键

  •  -1
  • user1032531  · 技术社区  · 7 年前

    多对多表连接两个实体表。我需要在多对多表中增加一列来表示极性,它应该只有两个值,其中一个表示正,另一个表示负。

    为了实现这一点,我计划添加一个名为 sign 其中有一列名为 签名 (这也是表的主键),表将只包含两个值,其中一个表示正,另一个表示负。

    上述多对多表可以包括 sign.sign 作为外键,只允许这两个值。

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

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

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

    我故意把 php 标记表示我将使用PHP,希望一种解决方案优于另一种解决方案可以简化PHP实现。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Gordon Linoff    7 年前

    严格来说,我不是 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 ('+', '-'))
    )
    

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

        2
  •  1
  •   user1032531    7 年前

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