Какой метод хранения данных лучше всего подойдет для моих нужд?

Как лучше всего хранить связи между продуктами, коллекциями и другими сущностями (widgets и popups) в базе данных, учитывая их структуру и возможность привязки? Рассматриваются два варианта: 1) использование таблицы "resources" с полем JSON для хранения данных о продуктах или коллекциях и определения принадлежности к ним по полям "type" (product или collection) и "entity_id"; 2) использование подхода, описанного в Laravel, с отдельными таблицами для продуктов и коллекций и таблицами связей. Какой подход предпочтительнее, учитывая возможные ограничения и проблемы с JSON в базе данных?
  • 5 апреля 2024 г. 11:39
Ответы на вопрос 2
Оба подхода имеют свои плюсы и минусы, и выбор зависит от конкретных требований и особенностей вашего проекта. 

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

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

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

Если нет очевидной нужны делать первый вариант, нужно делать второй.
Похожие вопросы