database - ERD 中的关系问题

标签 database database-design

我为一个文化网站创建了一个简单的 ERD。这些关系正确吗?

cul_categories ( ||-----|<- ) cul_pages//旅行至少有一页

cul_categories ( ||-----O-<- ) sub_categories//例如艺术---->音乐、绘画等,或者可以有,例如没有子类别的旅行。

sub_categories ( ||-----|<- ) cul_pages//如果我们有音乐,那么至少需要一页。

enter image description here

最佳答案

很难确定它是否正确,但有一个问题。您无法强制执行有关“页面”属于类别或子类别的规则,因为您无法使外键列不为空。

为了避免这种情况,您可以按如下方式更改模型:

TABLE: Category
-------------------
CategoryID (PK)
ParentCategoryID (FK)
Name

TABLE: Page
--------------
PageID (PK)
CategoryID (FK)
...

这允许您创建从页面到类别的 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

关于database - ERD 中的关系问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068531/

相关文章:

Python/Psycopg2/PostgreSQL Copy_From 循环在进行时变慢

android - 如何从数据库中获取数据并显示在ListView上?

database - 存储来自多个查找表的用户配置文件数据。如何?

mysql - 如何获取用户聊天信息

database-design - 在数据库模式中链接应付账款和总账

java - 部署一个带有数据库的Java App,用户需要安装什么?

mysql - 根据日期范围更改 MySQL 表中的值

mysql - 如何从逗号分隔的字符串中获取find_in_set的记录。[MySql]

php - 如何设置1 :many relationships in MySQL

三个模型之间的Django关联