myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Архитектура таблиц. Как лучше сделать?

Всем привет!
Не могу никак додумать как лучше хранить пользователей на сайте.

У меня есть таблица user и profile. В них попадают все зарегистрированные пользователи. Обьязатедьными полями являются пароль и email.

Дальше у меня будет модуль организаций с хранением информации об организациях. У организаций может быть несколько ролей: сотрудники: директор, Руководитель, тренер, хореограф.... Личности организации: танцоры, певцы, спортсмены....

Далее есть модуль мероприятий. У мероприятия могут быть:
Оргкомитет: организатор, ведущий, счётчик, волонтёр, охранник

У каждого мероприятия есть регистрация и в нем:
Наставники: преподаватель, хореограф, тренер... (из модуля организации - сотрудники)
Участники: танцор, спортсмен, певец...(из модуля организации - личности)

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

Кроме как повесть это все на Таблицы: user и profile. Подумал сделать под каждого отдельные Таблицы, но это не разумно. Нужно будет делать синхронизацию данных и этих данных будет слишком много. Что увеличит БД.

Авторизация пользователя по таблице user. Основные данные из profile (фамилия, имя, дата рождения...)

У меня собственно два вопроса:
1. Правильно ли все повесить на две таблицы? Думаю, да. Тогда Второй вопрос.
2. Пользователи могут добавить не все поля, а, например, только нужные для определенного модуля фамилию и имя. Но как мне быть с авторизацией таких пользователей? Ведь авторизация по email. Это обязательное поле Таблицы user. К profile будет привязываться ещё и статистика других модулей, рейтинги, достижения... Все эти данные будут привязаны к user и профилю. Но если в одном месте не заполняют email, то у пользователя появляется возможность создать новый аккаунт и вести новую статистику. Потом он заметит, что вдруг у него два аккаунта и придётся их совмещать. Или же вдруг объявился владелец созданного аккаунта. Например, ребёнок вырос и ему нужно получить доступ. С этим пунктом вопроса я затормозил. И не знаю как пойти дальше и реализовать. Подскажите! Буду очень благодарен!
  • Вопрос задан
  • 384 просмотра
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
Что увеличит БД
этого можно начать побаиваться если пользователей перевалит за миллионы. Ну или если это реализация в наручных часах, где маловато ресурсов)

А так - один из вариантов:
- учетные записи (не совсем юзер)
- контрагенты (люди-организации-семьи)
- контактные данные (разных типов)
- связи (разных типов между контрагентами - муж-жена-работник итп)
- уровней доступа (ролей, профилей)
- статистики и пр

это несколько избыточная структура, но она позволит "обработать" ситуации, когда человек работает в нескольких организациях сразу, пару раз менял семью, члены которой еще оказывается сами работники других организаций в базе.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы