За последние 24 часа нас посетили 20704 программиста и 1008 роботов. Сейчас ищут 342 программиста ...

Отдельные таблицы для предпринимателей и клиентов

Тема в разделе "PHP для новичков", создана пользователем виталий032, 27 мар 2020.

  1. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Делаю систему, в которой будут админы, владельцы бизнеса, их работники и клиенты.

    Казалось бы, классика, users - users_roles - roles.
    Однако, для владельцев бизнеса и клиентов поле "телефон" обязательное.
    А для работников и админов поле "телефон" не обязательное.

    Поле "email" для владельцев бизнеса, работников и админов обязательное, а для клиентов не обязательное.

    Я думаю создать отдельные таблицы: admins, business_owners, employees, clients, так как поля имеют разные ограничения и в будущем могут добавляться новые, для каждого типа отдельно.
    Стоит ли создавать отдельные таблицы?

    Ну и еще дело в том, что business_owners и admins не будут привязываться к должности, к оказываемой услуге, к записям на прием.
     
    #1 виталий032, 27 мар 2020
    Последнее редактирование: 27 мар 2020
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    нет
    создайте отдельную таблицу для телефонов
     
    виталий032 нравится это.
  3. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Тогда нельзя будет в таблице users делать ограничение not null для phone_id. Так как для клиентов может быть это ограничение, а для других пользователей может и не быть.
     
  4. qdevelopment

    qdevelopment Новичок

    С нами с:
    13 окт 2019
    Сообщения:
    41
    Симпатии:
    13
    Зачем в таблице users поле phone_id? Не легче в таблице phones добавить user_id?
     
    виталий032 нравится это.
  5. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Так, с телефоном понятно, user_id добавить в таблице "phones". А как быть с email? Он, по задумке, not null и unique для всех, кроме клиентов. Но БД не позволит сделать запись с пустым email для клиента.
     
  6. qdevelopment

    qdevelopment Новичок

    С нами с:
    13 окт 2019
    Сообщения:
    41
    Симпатии:
    13
    Тоже самое, что и с phones
     
    виталий032 нравится это.
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    В БД ставишь null, а при валидации уже выясняешь, кто какого типа.
     
  8. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Не совсем понял, что вы имели ввиду. Но, в общем, проблема разрешилась.
    Я просто забыл, что две записи с null не будут считаться нарушением уникального индекса.

    email оставил nullable, unique.
    password оставил nullable, так как может быть только привязка к телефону, и вход по отправленному на него четырехзначному коду, а коды будут в отдельной таблице.
    А телефоны вынес в отдельную таблицу.
     
    #8 виталий032, 30 мар 2020
    Последнее редактирование: 30 мар 2020