Проектирование базы данных. Вопрос о связи таблиц?

(Ответов: 6, Просмотров: 425)
  1. Студент
    • Регистрация: 02.09.2009
    • Сообщений: 97
    • Репутация: 10
    Здравствуйте.

    Подскажите как правильно соединить таблицы в базах данных. Имеется таблица Users и 3 отдельные таблицы с профилями юзеров. Например: Визажист, парикмахер и стилист. У каждой группы хранятся разные данные с информацией.

    Как я понимаю нужно создать промежуточную таблицу для связи Users->Table->(profile_1, profile_2, profile_3) или проставлять ID каждой таблицы в основной таблице Users.

    При авторизация мы получаем запрос с хранящимся индикатором к какому профилю авторизовался пользователь.
    • 0
  2. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Цитата Сообщение от uglik Посмотреть сообщение
    проставлять ID каждой таблицы в основной таблице Users.
    Не совсем. Лучше в юзерс сделать что юзер имеет один из трех типов: Визажист, парикмахер и стилист, конечно тип лучше писать циферкой :) Если юзер может быть нескольких типов сразу, то можно например так сделать: 122 или 221 где 122 значит что второй и третий тип присутствуют, а первый нет. Ну или через битовые маски, но с ними я дела не имел.

    Ну и в таблицах профилей просто указывать что он относиться к такому то пользователю. И если 1 пользователь с двумя специализациями, то все будет нормально, просто в двух таблицах будут строки ссылающиеся на пользователя из юзерс.
    • 0
  3. Студент
    • Регистрация: 02.09.2009
    • Сообщений: 97
    • Репутация: 10
    brainix,

    Например если создать таблицу Users:
    id, email, password, usergroup (1,2,3), profile_id, created_at
    Получается нужно в profile_id подставлять id с разных 3 таблиц и группировать к какому профилю идет обращение через usergroup??

    Я правильно понимаю?
    • 0
  4. Студент
    • Регистрация: 28.07.2012
    • Сообщений: 59
    • Репутация: 20
    В таблицах Визажист, Парикмахер и Стилист нужно сделать поле user_id. Поле id в таблице user будет primary, а user_id в таблицах визажист и т.д. будет foreign.
    • 0
  5. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    На мой взгляд, проще сделать одну таблицу под специальности, добавить там поле type ENUM(1,2,3), и нужные поля для каждой специальности (по возможности не плодить поля).

    Какого рода разная информация по каждой специальности хранится? Может ее можно обобщить при создании полей, если нет, то оставлять поля пустыми, если в данной специальности они не задействованы. Проще будет выбирать данные по пользователю и редактировать их. Ведь сущность одна, просто данные разные, зачем плодить под них таблицы.
    • 0
  6. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Цитата Сообщение от uglik Посмотреть сообщение
    Например если создать таблицу Users:
    id, email, password, usergroup (1,2,3), profile_id, created_at
    Получается нужно в profile_id подставлять id с разных 3 таблиц и группировать к какому профилю идет обращение через usergroup??
    Нет. В таблице "визажист" сделать, как сказали выше, поле user_id в которой ставить айди из таблицы юзерс.

    У вас один профиль пользователя может относится сразу к нескольким типам - Визажист, парикмахер и стилист?
    • 1

    Спасибо сказали:

    OKyJIucT(24.01.2016),
  7. Студент
    • Регистрация: 02.09.2009
    • Сообщений: 97
    • Репутация: 10
    Цитата Сообщение от OKyJIucT Посмотреть сообщение
    Какого рода разная информация по каждой специальности хранится? Может ее можно обобщить при создании полей, если нет, то оставлять поля пустыми, если в данной специальности они не задействованы. Проще будет выбирать данные по пользователю и редактировать их. Ведь сущность одна, просто данные разные, зачем плодить под них таблицы.

    У парикмахера будет полей с информацией примерно 10 и визажиста 5 и стилиста вообще только ФИО и контактные данные, но email и будет храниться в таблице юзерс как логин в системе для авторизации. Тогда может есть смысл вынести в таблицу юзерс поля first_name и last_name, но в таком случае для стилиста нет смысла создавать отдельную таблицу с профилем. Хотя если в будущем понадобиться расширить профиль для стилиста тогда косяк.
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Автоматическая синхронизация таблиц баз данных
Web программирование 1 17.08.2015 17:22
Создать базу данных на основе работающих таблиц EXEL
Другая работа 6 15.10.2014 00:02
Вывод данных из базы в две колонки
Web программирование 11 04.09.2013 15:41
Как вывести подборку последних материалов из всех таблиц одной базы
Web программирование 3 15.10.2012 17:40

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры