一尘不染

MySQL中的外键和NULL

sql

是否可以在我的值表(值)中将一列引用为knownValues表的外键,并在需要时让其为NULL,如示例中所示:

表:值

 product     type     value     freevalue
 0           1        NULL      100
 1           2        NULL      25
 3           3        1         NULL

表:类型

 id    name     prefix
 0     length   cm
 1     weight   kg
 2     fruit    NULL

表:knownValues

id    Type     name
0     2        banana

注意:表valuesknownValues中的类型当然会引用到types表中。


阅读 161

收藏
2021-03-17

共1个答案

一尘不染

外键中的NULL是完全可以接受的。处理外键中的NULL非常棘手,但这并不意味着您将此类列更改为NOT NULL并在引用表中插入伪记录(“ N / A”,“Unknown”,“ No Value”等)。

在外键中使用NULL通常需要您使用LEFT / RIGHT JOIN而不是INNER JOIN。

2021-03-17