Как структурировать SQL-таблицу для нескольких авторов для одного сообщения?

Я зашел достаточно далеко, когда понял, что мне нужна связь между двумя таблицами.

У меня все работает, кроме этого сценария:

Скажем, одна таблица называется «сообщения», а другая - «авторы». у них обоих есть ключи и все такое хорошее.

Что, если «сообщение» написано двумя или более «авторами»? Кажется, я не могу понять, как я могу сделать ссылку «сообщение» на несколько ключей «автор».

т.е. PostID | postText | дата | и т. д. | authorkey1, authorkey2, authorkey3 ...

Мне очень жаль, если на этот вопрос уже был дан ответ, но я просмотрел stackoverflow и другие онлайн-источники и не нашел ничего, что применимо к моему сценарию.


person gwurr3    schedule 12.04.2015    source источник
comment
Обратите внимание, что тип таблицы, которую вы ищете, называется xref (перекрестная ссылка).   -  person Millie Smith    schedule 12.04.2015


Ответы (1)


что, если «сообщение» написано двумя или более «авторами»?

Вам понадобится еще одна таблица, если у вас может быть несколько авторов на сообщение.

Вы можете иметь:

  • 1 автор на сообщение (две таблицы, Авторы / Сообщения,)
  • 2 автора на сообщение (две таблицы, авторы / сообщения, как вы описали)
  • * авторов на сообщение (три таблицы, авторы / сообщения и авторы сообщений)

Я настоятельно рекомендую третий. Если вы выберете второй подход, он будет работать, но вы столкнетесь с проблемами масштабирования. Что делать, если у вас 3 автора? Или 10?

Если вы добавите новые столбцы для каждого, ваша таблица быстро станет беспорядочной. Но если ваша таблица PostAuthors содержит только сообщения и авторов, вы можете иметь столько записей в этой таблице, сколько захотите.

person enderland    schedule 12.04.2015
comment
Я вижу сейчас. Благодаря тонну. Я продолжал думать в формате двух таблиц, ожидая своего рода возможности создания многомерных строк. Значит, это 3-й стол. - person gwurr3; 12.04.2015
comment
Я пытался проголосовать за ваш ответ, но не смог; извиняюсь. Еще раз спасибо за лечение моего психического блока. - person gwurr3; 12.04.2015
comment
@ gwurr3, вы можете поставить галочку рядом с ответом, чтобы принять его :) - person enderland; 12.04.2015