Как классифицировать эту схему? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть такая схема: enter image description here

Суть этой схемы заключается в организации точки входа для всех продуктов какой-либо компании, что дает некоторую гибкость.

Как это работает:

  1. Мы создаем список таблиц в таблице «таблицы» (где name - это имя таблицы в базе данных, pk_name - это имяпервичный ключ этой таблицы)
  2. Мы создаем список продуктов в «products» (где table_id - идентификатор таблицы в «tables», pk_value - значение первичного ключа)
  3. Кроме того, мы создаем таблицы типа «some_product», «another_product» и т. Д. Они содержат различные поля для конкретного продукта

Вопросы:

  1. Кактакие схемы называются?Например, EAV также предназначен для гибкости базы данных, но в столбцах EAV хранятся как записи в базе данных.
  2. Поэтому я не могу понять, целесообразно ли сравнивать эту схему с EAV или нет?
  3. Какие есть аналогии этой схемы, чтобы понять, что лучше использовать?
  4. Какие недостатки этой схемы?

Я новичок в БД, поэтому янадеюсь, что мои вопросы не глупы.

Спасибо!

1 Ответ

0 голосов
/ 01 октября 2018

В приведенном примере таблицы some_product и another_product имеют одинаковые атрибуты и типы.В этом случае было бы лучше иметь одну таблицу продуктов.Если разные атрибуты применяются к разным типам товаров в разных таблицах, то это пример подтипа .

Атрибуты, которые являются общими для всех товаров, будут помещены в общую таблицу products ( супертип таблица).Я ожидаю увидеть атрибут типа продукта в этой таблице, чтобы различать различные типы продукта.

Таблица tables не нужна.Все СУБД предоставляют доступ к метаданным о таблицах и первичных ключах, поэтому нет причин записывать их в свою таблицу.

...