符号极性的自然键
Natural key for sign polarity
多对多 table 连接两个实体 table。我需要在多对多 table 中增加一个列来表示极性,它应该只有两个值,一个代表正,第二个代表负。
为了实现这一点,我计划添加一个名为 sign
的 table,它将有一个名为 sign
的列(这也是 table 的主要列键),table 将只包含两个值,一个代表正数,另一个代表负数。
前面提到的多对多table可以包含sign.sign
作为外键,并且只允许两个值。
如果这是一个糟糕的解决方案,请评论您为什么有这种感觉以及什么可能是更好的解决方案。
如果接受table解,那么这两个值应该是多少?可能的答案是:
- 正负(不会用)
- p 和 n(可能不是)
- 1 和 0
- 1 和 -1
我特意包含了 php
标签,以表明我将使用 PHP,希望一个解决方案优于另一个解决方案可以简化 PHP 实施。
我不是严格意义上的 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 ('+', '-'))
)
就我个人而言,我认为 "positive" 和 "negative" 以及 +
和 -
的最佳符号。
如果希望在查询中使用登录算法,那么 1/-1 可能是最佳选择。
多对多 table 连接两个实体 table。我需要在多对多 table 中增加一个列来表示极性,它应该只有两个值,一个代表正,第二个代表负。
为了实现这一点,我计划添加一个名为 sign
的 table,它将有一个名为 sign
的列(这也是 table 的主要列键),table 将只包含两个值,一个代表正数,另一个代表负数。
前面提到的多对多table可以包含sign.sign
作为外键,并且只允许两个值。
如果这是一个糟糕的解决方案,请评论您为什么有这种感觉以及什么可能是更好的解决方案。
如果接受table解,那么这两个值应该是多少?可能的答案是:
- 正负(不会用)
- p 和 n(可能不是)
- 1 和 0
- 1 和 -1
我特意包含了 php
标签,以表明我将使用 PHP,希望一个解决方案优于另一个解决方案可以简化 PHP 实施。
我不是严格意义上的 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 ('+', '-'))
)
就我个人而言,我认为 "positive" 和 "negative" 以及 +
和 -
的最佳符号。
如果希望在查询中使用登录算法,那么 1/-1 可能是最佳选择。