我为一个文化站点创建了一个简单的 ERD。这些关系正确吗?
cul_categories ( ||-----|<- ) cul_pages // 旅行至少有一页
cul_categories (||-----O-<-) sub_categories //eg Arts---->Music, painting etc.,或者可以有,例如,没有子类别的Travel。
sub_categories ( ||-----|<- ) cul_pages // 如果我们有音乐,那么至少有一页。
我为一个文化站点创建了一个简单的 ERD。这些关系正确吗?
cul_categories ( ||-----|<- ) cul_pages // 旅行至少有一页
cul_categories (||-----O-<-) sub_categories //eg Arts---->Music, painting etc.,或者可以有,例如,没有子类别的Travel。
sub_categories ( ||-----|<- ) cul_pages // 如果我们有音乐,那么至少有一页。
很难确定它是否正确,但有一个问题。您不能强制执行有关“页面”在类别或子类别中的规则,因为您不能使外键列不为空。
为避免这种情况,您可以按如下方式更改模型:
TABLE: Category
-------------------
CategoryID (PK)
ParentCategoryID (FK)
Name
TABLE: Page
--------------
PageID (PK)
CategoryID (FK)
...
这允许您创建从 Page 到 Category 的 NOT NULL 外键关系;ParentCategoryID 为 NULL 的类别是“顶级”类别,而 parentCategoryID 的类别是子类别。
样本数据:
Category
CategoryID ParentCategory Name
-----------------------------------------
1 null Arts
2 1 Painting
3 1 Music
4 null Travel
Page
PageID CategoryID Name
-------------------------------------
1 2 Page about painting
2 3 Page about music
3 3 Another page about music
4 4 Page about travel