Здравствуйте.
Подскажите как правильно соединить таблицы в базах данных. Имеется таблица Users и 3 отдельные таблицы с профилями юзеров. Например: Визажист, парикмахер и стилист. У каждой группы хранятся разные данные с информацией.
Как я понимаю нужно создать промежуточную таблицу для связи Users->Table->(profile_1, profile_2, profile_3) или проставлять ID каждой таблицы в основной таблице Users.
При авторизация мы получаем запрос с хранящимся индикатором к какому профилю авторизовался пользователь.
- 23.01.2016 14:38
- Регистрация: 03.09.2009
- Сообщений: 97
- Репутация: 10
- 23.01.2016 15:06
Не совсем. Лучше в юзерс сделать что юзер имеет один из трех типов: Визажист, парикмахер и стилист, конечно тип лучше писать циферкой :) Если юзер может быть нескольких типов сразу, то можно например так сделать: 122 или 221 где 122 значит что второй и третий тип присутствуют, а первый нет. Ну или через битовые маски, но с ними я дела не имел.
Ну и в таблицах профилей просто указывать что он относиться к такому то пользователю. И если 1 пользователь с двумя специализациями, то все будет нормально, просто в двух таблицах будут строки ссылающиеся на пользователя из юзерс. - 24.01.2016 12:01
- Регистрация: 03.09.2009
- Сообщений: 97
- Репутация: 10
brainix,
Например если создать таблицу Users:
id, email, password, usergroup (1,2,3), profile_id, created_at
Получается нужно в profile_id подставлять id с разных 3 таблиц и группировать к какому профилю идет обращение через usergroup??
Я правильно понимаю? - 24.01.2016 13:13
- Регистрация: 28.07.2012
- Сообщений: 59
- Репутация: 20
В таблицах Визажист, Парикмахер и Стилист нужно сделать поле user_id. Поле id в таблице user будет primary, а user_id в таблицах визажист и т.д. будет foreign.
- 24.01.2016 13:48
На мой взгляд, проще сделать одну таблицу под специальности, добавить там поле type ENUM(1,2,3), и нужные поля для каждой специальности (по возможности не плодить поля).
Какого рода разная информация по каждой специальности хранится? Может ее можно обобщить при создании полей, если нет, то оставлять поля пустыми, если в данной специальности они не задействованы. Проще будет выбирать данные по пользователю и редактировать их. Ведь сущность одна, просто данные разные, зачем плодить под них таблицы. - 24.01.2016 14:08
Спасибо сказали:
OKyJIucT(24.01.2016), - 26.01.2016 08:19
- Регистрация: 03.09.2009
- Сообщений: 97
- Репутация: 10
У парикмахера будет полей с информацией примерно 10 и визажиста 5 и стилиста вообще только ФИО и контактные данные, но email и будет храниться в таблице юзерс как логин в системе для авторизации. Тогда может есть смысл вынести в таблицу юзерс поля first_name и last_name, но в таком случае для стилиста нет смысла создавать отдельную таблицу с профилем. Хотя если в будущем понадобиться расширить профиль для стилиста тогда косяк.
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Автоматическая синхронизация таблиц баз данных | Web программирование | 1 | 17.08.2015 17:22 |
Создать базу данных на основе работающих таблиц EXEL | Другая работа | 6 | 15.10.2014 01:02 |
Вывод данных из базы в две колонки | Web программирование | 11 | 04.09.2013 16:41 |
Как вывести подборку последних материалов из всех таблиц одной базы | Web программирование | 3 | 15.10.2012 18:40 |