Является ли "таблица соединений" результатом SQL JOIN или таблицей "многие ко многим"?

Это вопрос о том, как правильно называть вещи. В частности, как вы различаете:

  1. таблица "между" в отношениях "многие ко многим" (например, users, users_questions, questions)
  2. (временная) таблица, которая создается во время SQL JOIN (например, "SELECT * FROM users INNER JOIN users_questions.user_id ON users.id WHERE users_question.question_id=37016694;`)

2 ответа

Решение

Многие разработчики баз данных используют термин " таблица соединений" в вашем первом смысле: для реализации отношений "многие ко многим" между сущностями. Это также называется соединительной таблицей, таблицей ассоциации и другими вещами. Больше информации: https://en.wikipedia.org/wiki/Associative_entity

Я никогда не слышал, чтобы использовалось второе чувство. (Но, эй, я не особо ухожу.:-) Если вы пишете документацию или преподаете, я советую вам зарезервировать слово table для обозначения реальной, физической таблицы. Избегайте использования таблицы слов для набора результатов, если вы не квалифицируете ее, произнося виртуальную таблицу или какую-то подобную фразу. Таким образом, ваши читатели и студенты не будут тратить время, пытаясь найти определения этих не совсем таблиц в вашей схеме.

С реляционной точки зрения JOIN Таблица (таблица, которая разрешает отношение " многие ко многим") является реальной физической таблицей. Иначе он не выживет между запросами. На мой взгляд, термин "таблица соединений" был придуман разработчиками MVC "Code First", которые игнорируют физические объекты в области БД, особенно если они не показаны в DbContext.

На мой взгляд, опять же, мы должны соблюдать реляционные реалии.

Помоги мне, Кодд.

Другие вопросы по тегам