Ind*_*ial 18 mysql sql database-design foreign-keys database-relations
我可以将我的值表(值)中的列作为knownValues表的外键引用,并在需要时将其设置为NULL,如下例所示:
表:值
product type value freevalue
0 1 NULL 100
1 2 NULL 25
3 3 1 NULL
Run Code Online (Sandbox Code Playgroud)
表:类型
id name prefix
0 length cm
1 weight kg
2 fruit NULL
Run Code Online (Sandbox Code Playgroud)
表:knownValues
id Type name
0 2 banana
Run Code Online (Sandbox Code Playgroud)
注:该类型的表values&knownValues当然是引用到的types表.
Sal*_*n A 23
外键中的NULL是完全可以接受的.与外键NULL的处理很棘手,但这并不意味着你改变这种列NOT NULL并插入假("N/A","未知","没有价值"等)记录在您的参考表.
在外键中使用NULL通常需要使用LEFT/RIGHT JOIN而不是INNER JOIN.
虽然你可以使外键列可以为空,但我建议通常更好的设计没有可空外键的表.Nulls总是导致某些含糊不清和不正确的结果,但如果所涉及的列预计会受到某些限制,则这是一个双重问题.