Mysql Cross Table Referencing - это правильный путь? - PullRequest
0 голосов
/ 15 февраля 2010

У меня есть одна таблица с ПОЛЬЗОВАТЕЛЯМИ и другая таблица с RSS-каналами. Оба типа InnoDB.

Каждый пользователь может быть подписан на любое количество каналов.

Я пытаюсь выяснить, как лучше вести учет каналов, на которые подписаны пользователи.

Один из способов - создать столбец feed_ids varchar в таблице пользователей и отделить каждый из них. Есть ли лучший способ или это нормально?

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

1 Ответ

3 голосов
/ 15 февраля 2010

Лучше всего создать новую запись в таблице для каждого отношения.Итак:

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        |
+---+----------+---------+

Вы также можете определить отношение между этой таблицей и таблицей ваших пользователей и каналов, чтобы обеспечить целостность (т. Е. Столбец пользователя может содержать только значения, которые являются идентификаторами в таблице пользователей, ибудет обновляться, удаляться или иметь нулевое значение, если вы разрешите это при обновлении или удалении строки пользователя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...