На странице профиля сайта содержит эти виды полеев для любого пользователяСтраница профиль Use Case
- один к одному полею - имя, возраст, пол
- One для многих областей - История работы, образование
- многие ко многим полям - Язык, премии, комитет
Tools - MYSQL и PHP [но открыты для изменения]
Я решил создать одну пользовательскую таблицу.
tbl_user -> PK - user_id , FK - profile_id
Все поля, которые происходят за один раз для пользователя, добавить их в качестве атрибутов таблицы tbl_user_profile.
tbl_user_profile -> PK - profile_id
Тогда, чтобы удовлетворить один ко многим видам relatioships Я создаю кучу таблиц - Это легко может расти в течение периода времени ..
tbl_user_jobs , tbl_user_education
FK - user_id [ INNO DB ]
А потом я создаю кучу таблиц в виде таблиц реф для MANY_TO_MANY моделирования -
tbl_ref_awards, tbl_ref_languages, tbl_ref_committee
PK = REF_ID
tbl_user_languages, tbl_user_awards, tbl_user_committee
FK - user_id , REF_ID
Теперь я должен отобразить страницу профиля с, как многие де только что упомянутые хвосты. На странице загружается каждый раз, мне нужно присоединить таблицы tbl_user_ * таблицы с tbl_user и заполнить страницу.
Я размышляю, если этот дизайн в порядке в первую очередь? Во-вторых, с таким количеством таблиц, которые соединяются [7 раз] на странице, я вижу перетаскивание уже при загрузке страницы, и было бы очень приятно услышать о возможном улучшении дизайна базы данных в приведенном выше примере использования. Уже есть индексы и FK. Кэш еще не добавил нигде.
спасибо Невиллу, я рассмотрю это и разберу. Если я вижу, что производительность по-прежнему снижается, опубликуйте план на форуме для медленного запроса. – fortm