Нормализация базы данных

Имеется база данных с единственной таблицей условного приложения "Напоминания" со следующими полями:

  1. ID
  2. Name
  3. Description
  4. Category

Хотелось бы понять как удачнее реализовать функционал "корзины". Рассматривал вариант переноса выполненных напоминаний в отдельную таблицу аналогичную первой. Альтернативный вариант - создание нового поля "IsCompleted" и выводить относительно значения False.

Рассматриваю разницу с визуальной точки зрения и скорости обработки (выгрузки таблицы). Элементы являются независимыми по отношению друг к другу.


Ответы (1 шт):

Автор решения: Герман Борисов

С точки зрения нормализации разницы нет. В одном случае у нас две сущности: "активные задания" и "выполненные задания", в другом одна сущность "задания" со свойством "признак исполнения"

С точки зрения производительности разница возникает при большом количестве записей.

Если это напоминалка для одного человека, то я бы выбирал между одной таблицей и отсутствием СУБД - хранением простым текстом (CSV, XML, JSON) в одном файле с обработкой на клиенте.

Если хочется сделать универсальную БД с возможностью расширения, то стоит озаботиться API: Процедур добавления, изменения, пометки исполненной; Процедуры/Преставления для выборки всех, исполненных, не исполненных.

При таком API легко менять способ хранения с одного на другой, то есть разделить таблицу на две, когда появятся тормоза при выборке.

→ Ссылка