Общая таблица БД - PullRequest
       15

Общая таблица БД

2 голосов
/ 13 мая 2009

Есть ли имя для следующей таблицы БД:

В основном у нас есть общие столбцы, представляющие пару ключ / значение.

id | к1 | v1 | к2 | v2 | к3 | v3 | ....

1 | имя | Сэм | last_name | Смит | NULL | NULL | ...

В моем приложении у меня есть много таблиц, в которых есть только одна строка, и я хотел бы объединить их в общую таблицу с числом столбцов X. Каждая строка представляет отдельные строки таблицы.

Заранее спасибо.

Ответы [ 2 ]

10 голосов
/ 13 мая 2009

Entity-Attribute-Value. Также называется «Таблица значений-имен» или «Открытая схема».

Это SQL Antipattern . Он не соответствует многим правилам проектирования реляционных баз данных, и его невероятно сложно поддерживать. Я рекомендую против этого.

См. Больше моих мыслей о EAV в моем ответе на вопрос " Таблица продуктов, многие виды продуктов, каждый продукт имеет много параметров. "

3 голосов
/ 13 мая 2009

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

Пары ключ / значение обычно не являются рекомендуемым методом хранения, но по крайней мере отдельные строки с одним ключом и одним значением являются «правильными».

Если вы поместите несколько пар в один ряд, возникает ряд проблем:

  1. Как найти конкретный ключ?
  2. Может ли этот ключ быть в k1, k2 или k3? Или это всегда в определенном столбце?
  3. Как вы применяете это?
  4. Как сделать его работоспособным?

Моделируйте ваши сущности как сущности с известными атрибутами. Вот для чего нужны базы данных.

...