![]() |
1
0
我不认为空是最好的方法,但您可以使用单独的tinyint列来指示myrelatedtable中的行与mytable中的所有内容相关,例如myrelatedtable.relatedall。这将使其他必须维护它的人更加明确。然后您可以执行某种联合查询,例如
|
![]() |
2
13
我想你可能会同意使用这个号码是不好的 三 表示另一个值 三 . 根据同样的推理,使用空来表示除缺少值之外的任何东西是一个坏主意。 如果您不同意并将空值转换为其他目的,那么在您之后出现的维护程序员将不会感激。 |
![]() |
3
1
这不是一个好主意,因为在SQL查询中根本不能使用“与所有条目相关”的事实。在某种程度上,你可能想/需要这样做。 |
![]() |
4
1
理想情况下,根本不应该有空值。应该有另一个表来表示关系。 如果您要分配特殊的含义,但是空值应该只意味着“未分配”——即不存在任何关系,使用负数,即-1,如果您想触发一些业务层欺骗。对于任何将来遇到这种情况的开发人员来说,很明显-1是一个不应该被视为正常值的非凡值。 |
![]() |
5
0
是的,原因很简单
如果外键只是一个简单的整数,并且它是自动生成的,那么您可以使用0来表示“magic”值。 |
![]() |
6
0
您发布的内容,即外键中的空断言与被引用表中所有行的关系,是非常不标准的。从我的头顶上看,我认为这充满了危险。 在fks中使用nulls的大多数人的意思是,它断言与被引用表中的任何行都没有关系。这在可选关系的情况下很常见,这种关系可以发生零次。 示例:我们有一个HR数据库,其中有一个名为“Employees”的表。我们有两列,分别称为“empid”和“supervisorid”。(许多人将第一列简单地称为“id”)。表中的每个员工都有一个受监督的条目,公司CEO除外。CEO在supervisorid列中有一个空值,这意味着CEO没有主管。首席执行官对董事会负责,但监管部门不代表首席执行官。 您所指的与引用表中所有行的关系是:有问题的行与引用表中的任何一行之间可能存在关系。当你开始思考现实世界中的事实,但数据库不知道这些事实的问题时,你就会打开一大罐蠕虫。 |
![]() |
developer · 带外键的SQL表设计 7 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 8 月前 |
![]() |
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 1 年前 |
![]() |
robertspierre · 在多对多关系中自动删除未引用的行 1 年前 |
![]() |
Michael Samuel · MYSQL在以下情况下自动创建索引 7 年前 |