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

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

Всем привет!

Насмотревшись уроки Елисеева Дмитрия, а конкретно по независимым модулям Стал задумываться как все построить?

Разрабатываю на YII. Изначально делил ВСЕ на модули

Модуль USER
Отвечает за авторизацию и хранение основных настроек: авторизация, восстановление пароля, регистрация...

Таблица user
Таблица profile

Модуль DISCIPLINE
Отвечает за хранение данных дисциплин

Модуль ORGANIZATION
Раздел организаций (школы танцев, коллективы, музыкальные школы...) отвечает за хранение информации об организациях, статистика организаций, Контакты, отзывы.

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

Модуль EVENT
Модуль мероприятий отвечает за работу с мероприятиями и календаря

Мероприятия могут организовывать организаторы и организации.

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

Таблица оргкомитет.

Модуль REGISTRATION
Отвечает за регистрацию участников на мероприятие, ведёт статистику, рейтинг, приём оплаты, подсчёт финансов, выгрузка различных отчетов и списков.

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

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

Немного подумав понял, что модулей слишком много. Много относится к одному модулю организации. Поэтому разумнее обьединить часть модулей в модуль организации.

Вот что получается, если объединить по организации:

МОДУЛЬ USER

user
- email
- password
- password_hash
- vizit_at

people
- id
- user_id
- last_name
- first_name
- middle_name
- birthday
- gender

friend
- from_id
- to_id
- status

message
- from_id
- to_id
- text

МОДУЛЬ ДИСЦИПЛИН

discipline (дисциплины)
- id
- name

МОДУЛЬ ОРГАНИЗАЦИИ

organization
- id
- name
- type (тип организации: Школа танцев, музыкальная школа, спортивная школа....)
- event_count
- people_count

org_rewiew (отзывы)
- id
- people_id (может быть Null)
- text
- active

org_people люди организации)
- org_id
- people_id
- role (директор, танцор, руководитель, тренер, певец спортсмен...)

org_people_director
- id
- people_id
- position (должность)

org_people_dancer
- id
- people_id
- nickname (ник)

- org_people_dancer_mentor (наставники танцора)
- dancer_id (id people)
- mentor_id (id people)
- role (тренер, руководитель, педагог)

/// и так по всем ролям, где нужны дополнительные поля

organization_event (мероприятия организации)
- id
- org_id (Организация)
- name
- date_from
- date_to
- type (фестиваль, мастер-класс, лагерь...)

org_evt_discipline (дисциплины для регистрации)
- event_id
- discipline_id
- active

org_evt_request (заявки)
- id
- event_id
- discipline_id
- reg_number
- cost
- cost_payd
- cost_discount_percent
- cost_dicount_amount
- participant_count
- mentor_count
- contact_email
- contact-phone
- status (ждёт оплаты, оплачено, выполнена, отменена, отменена участником)

org_evt_req_participant (участники, связь заявки и людей)
участниками могут быть все люди без привязки к организации
- request_id
- people_id
- role (танцор, певец, спортсмен)

org_evt_req_mentor (наставники, связь заявки и людей)
Наставниками могут быть все люди
- request_id
- people_id
- role (директор, руководитель, тренер, педагог)

Правильно ли я спроектировал таблицы? Модули не полноценные и имеют связи между собой. Но к независимости не стремлюсь. Можно сказать что это просто структура проекта, а не модули.

Основное это понять правильно ли спроектировал базу ? Какие подводные камни? Какие нюансы? Нормальные формы? Любая критика будет полезна!

Пример подобного проекта вот: https://godance.tv
Но там нет функционала регистрации.
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
sim3x
@sim3x
- password
- password_hash
не смешно

Убрать
org_people_director
org_people_dancer
org_people_dancer_mentor


Все что нужно уже есть в
org_people люди организации)
- org_id
- people_id
- role (директор, танцор, руководитель, тренер, певец спортсмен...)


Все остальное довольно мутно, тк нет тз в вопросе, а анализировать тот сайт я конечно же не буду

Ах и да
Уберите профайл как вам уже три раза писали и перенесите все в юзер
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы