我有一个包含各种类别的表格。下面是一个缩小的表结构:
tb_categories
category_id
category_name
category_parent_id
我在 category_id 上的 category_parent_id 上创建了一个外键约束,因此数据完整性可以保存在同一个表中。
第一个问题是,在同一张表上有一个外键是一种好习惯吗?从我的思维方式来看,我认为在这种情况下是的,这是一个很好的做法。
第二个问题是,如何存储全局父实体的最佳方法是什么?
我想出了以下方法:
方法一:category_parent_id可以存储null,唯一的null就是全局父类All
方法2:category_parent_id 不能存储空值,全局parrent ALL 将包含相同的category_id。因此,仅对于这个类别,category_id 和 category_parent_id 都是相同的。没有空值,我不能将此 category_parent_id 插入为 0,因为 0 不作为 category_id 存在
方法3:没有全局父级,会有不同的“父级”。例如,Audio、Visual 作为父级,MP3、WMA 作为 Audio 的子级,MPEG、AVI 作为 Visual 的子级。在整个方法中,方法 1 和 2 的相同原理适用。
方法 4:这是我最喜欢的方法,其中包括没有此外键约束,因此可以将全局父级设置为 0,这在任何其他类别中都不存在。
有什么建议么?因为我正在寻找最佳实践,而不是“行之有效”的东西。