我的数据库中的4个表需要一个名为“类别”的字段。我怎样才能做到这一点?

时间:2016-05-01 19:55:41

标签: mysql normalization rdbms database-normalization

对于我的RSS聚合器,有四个表代表rss和atom feed以及它们的文章。每种Feed类型和条目类型都将包含零个或多个类别。为了不重复数据,我想只有一个表类别。

我该如何做到这一点?

enter image description here

1 个答案:

答案 0 :(得分:1)

一种方法是将类别保存在一个表中 - 例如category - 为每个需要0个或更多类别关联的实体/表定义X表:

rssFeedXCategory

rssFeedId INT FK -> rssFeed (id)
categoryId INT FK -> category (id)

atomFeedXCategory

atomFeedId INT FK -> atomFeed (id)
categoryId INT FK -> category (id)    

等等。

您可以为每个表中的两个列定义PK,但也可以使用额外的标识列。使用ORM时,我还有一个额外的标识/自动增量列(例如XId INT),因此可以使用单个列来标识行。