@xxxxc

Как правильно спроектировать базу данных?

Здравствуйте, помогите понять, какая должна быть модель базы данных? Я хочу, чтоб каждый пользователь, моего тестового приложения, мог создавать собственный список дел, помимо нескольких стандартных (списков).
Связь, между юзером и его делами, более-менее понятно . А вот, как разбить дела по спискам? Например каждый по стандарту должен иметь такие списки Day, Month, Year и еще иметь возможность создать свой список.
Как я понимаю, должна быть отдельная таблица, а в ней 2 колоки (Id и name) и потом на каждое дело, в таблицу дел, просто присваивать id списка, через FK?

А потом, что мне кажется самым странным. В проекте я создаю класс TaskType (наверно не лучшое название, пробывал TaskList, но с геттерами и сеттерами в классе получается путаница), и если я хочу получить все списки юзера,
я должен создавать в репозитории, сервисе такой метод как List getAll(int userId);
Не смотря, на то что мне нужны просто именна, будет создаваться целый класс? Тоисть в моём проекте, с использование MVC, я ради этого должен создать кучу интерфейсов и кучу классов?
  • Вопрос задан
  • 385 просмотров
Решения вопроса 1
max-kuznetsov
@max-kuznetsov
Главный IT-архитектор
У Вас не сильно нагружена операционная часть (создание, изменение, удаление задач пользователя), поскольку самих задач у пользователя много не бывает. В сутках только 24 часа, и в году только 365 дней. Гораздо бОльшая нагрузка падает на поиск и фильтрацию списка задач (или дел, как Вы это назвали).

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

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

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