多个外键

6 database-design normalization

我的数据库设计以前是相当线性的,所以我很难理解这可能是一个非常容易解决的问题.

我有一个"POSTS"表,其中包含可能是"CATEGORY"或"TOPIC"子项的帖子.定义"POSTS"表的外键的最佳方法是什么?

我想我可以有一个名为POST_CATEGORY_ID的列和一个名为"POST_TOPIC_ID的字段,它可以是可空的,但这听起来不对.当然有一个我想念的简单解决方案!

And*_*ite 2

您可以在 POST 和 CATEGORY 以及 POST 和 TOPIC 之间建立多对多关系:

POST
----
ID
Text ...
...

CATEGORY
--------
ID
Name

TOPIC
-----
ID
Name

POST_CATEGORY
-------------
POST_ID (FK)
CATEGORY_ID (FK)

POST_TOPIC
----------
POST_ID (FK)
TOPIC_ID (FK)
Run Code Online (Sandbox Code Playgroud)

这样,帖子就可以与任意数量的类别和主题相关联。