Mysql交叉表引用 - 这是正确的方法吗?

时间:2010-02-15 07:53:33

标签: mysql database

我有一个包含USERS的表和另一个包含RSS FEED URL的表。两者都是InnoDB类型。

每个用户可以订阅任意数量的Feed。

我正在努力找出记录用户订阅的Feed的最佳方式。

一种方法是在users表中有一个feed_ids varchar列,并将每个列分开。有更好的方法还是可以的?

USERS TABLE
+---+----------+
|id | feed_ids |
+---+----------+
|1  | 1,2,3    |
+---+----------+
|2  | 2,3      |
+---+----------+
|3  | 1,2      |
+---+----------+

1 个答案:

答案 0 :(得分:3)

最好在表格中为每个关系创建一个新条目。 所以:

USERS-FEEDS TABLE
+---+----------+---------+
|id | user_id  |feed_id  |
+---+----------+---------+
|1  | 1        |1        |
+---+----------+---------+
|2  | 1        |2        |
+---+----------+---------+
|3  | 1        |3        |
+---+----------+---------+
|4  | 2        |2        |
+---+----------+---------+
|5  | 2        |3        |
+---+----------+---------+
|6  | 3        |1        |
+---+----------+---------+
|7  | 3        |2        |
+---+----------+---------+

您还可以定义此表与用户和供稿表之间的关系,以确保完整性(即,用户列只能包含用户表中ID的值,并且将被更新,删除或设置如果在更新或删除用户行时允许,则为null。