Несколько значений в столбце - PullRequest
3 голосов
/ 28 марта 2010

Мне нужен совет относительно нескольких записей. У меня есть таблица с полями username, message и message_to. Сценарий может быть отправка одного и того же сообщения нескольким пользователям за один раз. Что ты предлагаешь? Будет ли эффективным сохранение всех получателей в одном столбце с разделенными запятыми значениями или добавление нескольких записей?

1 Ответ

10 голосов
/ 28 марта 2010

Нет, нет, нет, нет, нет.

Это было бы серьезным нарушением модели реляционной базы данных. Создайте три таблицы: Users, Messages и MessagesSentToUsers.

  • В таблице Users сохраните значение user_id и пользовательский name.
  • В таблице Messages сохраните значение message_id и сообщение text.
  • В таблице MessagesSentToUsers создать запись для каждого отправленного сообщения. Эта запись должна содержать только user_id для пользователя, который получил сообщение, и message_id, указывающий на текст сообщения, которое они получили.

Вроде следующего:

|       User     |  |      Message      |  |  MessageSentToUsers   |
|---------|------|  |------------|------|  |----------|------------|
| user_id | name |  | message_id | text |  | user_id  | message_id |

Как правило, столбцы идентификаторов в каждой таблице будут иметь тип integer. Наиболее распространенным случаем является назначение СУБД значения для каждой строки (поэтому вам не нужно управлять числами).

...