Я занимаюсь разработкой веб-приложения на PHP и MySQL. У меня есть сущность с именем «Пользователь», которая имеет внутри себя множество отношений «один ко многим» (с другими объектами) (список адресов, список адресов электронной почты, список номеров телефонов и т. Д.). Эти многочисленные адреса, электронные письма, телефонные номера предоставляются пользователю через соединительные таблицы в базе данных (user_link_addresses, user_link_emails и т. Д.).
Сейчас я пытаюсь создать эффективный DAO для сущности User, в частности методы readUserById ($ userId) и readAllUsers (). Однако, так как я любитель sql и паттернов DAO, у меня возникают проблемы с правильным созданием этого DAO.
Мне сказали, что для эффективности сети важно держать ваш DAO в одном запросе, который считывает всю информацию за раз, а затем может быть соответствующим образом сопоставлен с этим объектом. Это имеет смысл, но у меня возникают проблемы при генерации одного запроса, который содержит всю необходимую информацию и может быть правильно сопоставлен с моей сущностью.
Прямо сейчас я могу получить эту информацию, выполнив несколько запросов в цикле после получения пользователей ... Мне просто не нравится эта идея (и я уверен, что она не верна). Кроме того, я знаю, как делать соединения с таблицами соединений - просто не с чем-то таким сложным, и это также должно быть правильно сопоставлено.
НАЗВАНИЯ И ПОЛЯ
ТАБЛИЦА: пользователь
ПОЛЯ: user_id, имя пользователя, пароль
ТАБЛИЦА: адрес
НАПРАВЛЕНИЯ: address_id, улица, город, штат, почтовый индекс, тип
ТАБЛИЦА: электронная почта
ПОЛЯ: email_id, email, введите
ТАБЛИЦА: номер телефона
ПОЛЯ: номер_телефона_ид, код_области, номер_фона, тип
- СОЕДИНИТЕЛЬНЫЕ СТОЛЫ ДЛЯ АССОЦИАЦИЙ -
TABLE: user_link_address
ПОЛЯ: user_id, address_id
TABLE: user_link_email
ПОЛЯ: user_id, email_id
TABLE: user_link_phone_number
ОБЛАСТИ: user_id, phone_number_id
Во всяком случае, вся помощь очень ценится,
Steve