Нормализация базы данных
Имеется база данных с единственной таблицей условного приложения "Напоминания" со следующими полями:
- ID
- Name
- Description
- Category
Хотелось бы понять как удачнее реализовать функционал "корзины". Рассматривал вариант переноса выполненных напоминаний в отдельную таблицу аналогичную первой. Альтернативный вариант - создание нового поля "IsCompleted" и выводить относительно значения False.
Рассматриваю разницу с визуальной точки зрения и скорости обработки (выгрузки таблицы). Элементы являются независимыми по отношению друг к другу.
Ответы (1 шт):
С точки зрения нормализации разницы нет. В одном случае у нас две сущности: "активные задания" и "выполненные задания", в другом одна сущность "задания" со свойством "признак исполнения"
С точки зрения производительности разница возникает при большом количестве записей.
Если это напоминалка для одного человека, то я бы выбирал между одной таблицей и отсутствием СУБД - хранением простым текстом (CSV, XML, JSON) в одном файле с обработкой на клиенте.
Если хочется сделать универсальную БД с возможностью расширения, то стоит озаботиться API: Процедур добавления, изменения, пометки исполненной; Процедуры/Преставления для выборки всех, исполненных, не исполненных.
При таком API легко менять способ хранения с одного на другой, то есть разделить таблицу на две, когда появятся тормоза при выборке.