Что делает таблица только с двумя внешними ключами?

Я исследовал MySQL и столкнулся с этим интересным ERD. Я понимаю все это, кроме user_chat столик здесь Имеет 2 внешних ключа, ссылающихся на таблицу chat а также user, Что это делает в любом случае? Означает ли это, что:

  1. Мне пришлось INSERT INTO message, chat, user_chat по мануалу, когда появляется новый чат?
  2. Я могу только сделать SELECT заявление с этим user_chat Таблица?
  3. user_chat не может содержать другие столбцы, такие как favorite если люди хотят быстро получить к нему доступ?
  4. Могу ли я удалить строку в user_chat стол, так как они не unique?

Я самообучаюсь и все еще начинаю изучать эту тему, так что это может многое значить, если это можно объяснить, чтобы помочь мне понять это. Очень признателен!

введите описание изображения здесь

3 ответа

Решение

Между многими существует связь user а также chatэто означает, что один пользователь может участвовать в нескольких чатах, и в каждом чате может участвовать несколько пользователей.

Такого рода отношения невозможно представить напрямую, используя FOREIGN KEY ограничения, которые могут обеспечить только отношение один-ко-многим. Чтобы обойти это, разработчики базы данных используют таблицу "сущность пересечения", такую ​​как user_chatчто позволяет уменьшить отношение "многие ко многим" до отношения "один ко многим к одному".

Когда вы создаете новый чат, вы вставляете запись в user_chat для каждого участника и для любых новых участников, которые присоединяются к чату в процессе. Основное использование этого пересечения в этом примере - позволить вам легко найти всех участников чата (например, для уведомления их о новых сообщениях) или найти все разговоры, в которых участвовал конкретный пользователь.

Да, таблицы этого типа, имеющие только 2 внешних ключа, в основном используют для входа в систему. это просто связь / отношение ничего другого. это помогает легко извлекать данные больше ничего

В реляционных базах данных невозможно реализовать отношение "многие ко многим". В этом случае Chat а также User иметь отношения многие ко многим. Нам нужно разбить отношение "многие ко многим" на отношения "один ко многим", введя " ассоциативную сущность", которая содержит 2 столбца в качестве внешних ключей для каждой из таблиц. В этом случае user_chat выступает в качестве ассоциативного субъекта.

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