在具有外键约束的相关表中使用空值

jps*_*ook 5 sql database-design

我有以下表格:

Cateogories

  • CategoryID(int)主键
  • CategoryName(varchar)

项目

  • ItemID(int)主键
  • CategoryID(int)
  • ItemName(varchar)

Items.CategoryID上有一个外键约束.创建新项目时,可能不会分配任何类别.

是否更好的设置Items.CategoryID以允许空值并处理我的代码中的空值或更好地不允许空值,将默认的CategoryID设置为1,并在Categories表中创建一个名为"Uncategorized"的虚拟记录,然后处理我的代码中的虚拟类别?

Mon*_*ong 7

逻辑上正确的方法是,当项目没有类别时,CategoryID列为NULL.

如果你被任何与使用NULL相关的陷阱所困,那很可能表明设计没有考虑到物品不能有类别的事实.修复设计.NULL将确保您坚持解决正确的问题.