В Java, множественных запросах на выборку или присоединении, какой из них будет лучше? - PullRequest
1 голос
/ 04 мая 2020

У меня есть пять таблиц в базе данных MySQL, каждая из которых имеет взаимно-однозначное отношение с таблицей User, в которой хранятся имя пользователя и пароль, в таблице User есть поле user_id в качестве внешнего ключа для всех другие таблицы.

Если мне нужно реализовать функцию «Логин» с помощью Java, чтобы получить все данные определенного пользователя из всех этих пяти таблиц, было бы хорошей практикой использовать JOIN для запроса этих пять столов одновременно?

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

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

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

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

0 голосов
/ 04 мая 2020

Как общий принцип, отношения 1 к 1 должны находиться в одной и той же таблице.

Исключения могут включать:

  • разделение привилегий - mysql пользователи имеют разные уровни доступа к таблице.
  • разделение блокировок, одна таблица как особенно высоко обновленное поле, чем для идентификатора пользователя, который должен быть отделен от другой таблицы обновлений с высоким идентификатором.
  • производительность - размер строки - одна таблица имеет большое количество столбцов, которые не нужны часто, поэтому держите их в пуле буферов innodb, сохраняя эти столбцы в другой таблице.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...