Разработайте набор атрибутов - PullRequest
0 голосов
/ 05 августа 2010

Мой начальник дал мне кучу требований, которые я не совсем уверен, как их проектировать в СУБД.По сути, пользователь должен описать объект, определяющий его атрибуты старым способом: «ключ» => «значение».Проблема в том, что у пользователя есть «свобода воли» при выборе ключей и значений, поэтому он может написать все, что захочет об этом объекте.Теперь этот объект относится, конечно, к определенным категориям, поэтому, на мой взгляд, даже при режиме свободной воли на я не думаю, что у нас должно быть более 15/20 ключей на категорию (=>объект).

Мой начальник сказал мне структурировать его следующим образом (это всего лишь скелет):

Таблица объектов (id [первичный ключ]), имя)

Таблица пары (id [первичный ключ] , obj_id [внешний ключ к таблице объектов] , ключ,значение)

Но я не совсем уверен.На мой взгляд, это должно быть что-то вроде этого:

Таблица объекты (id [первичный ключ] , имя)

Таблица пары (id [первичный ключ] , obj_id [внешний ключ к таблице объектов] , key_id [внешний ключ к таблице ключей] , значение)

Таблица ключи (id [первичный ключ] , ключ [уникальный] )

И изКонечно, колонка key будет очищена, а избыточность будет ограничена.

Прав ли я, я слишком обдумываю или я просто неправ?

1 Ответ

1 голос
/ 05 августа 2010

Лично я думаю, что вы оба не правы. Я бы пошел с:

Objects 
-------
id (PRIMARY_KEY)
name

Keys
----
id (PRIMARY_KEY)
value

KeyValuePairs
-------------
id (PRIMARY_KEY)
keyId (FOREIGN_KEY(Keys))
value

Objects_KeyValuePairs
---------------------
objectId (PRIMARY_KEY, FOREIGN KEY (Objects))
kvpId (PRIMARY_KEY, FOREIGN KEY (KeyValuePairs))

Теперь у вас есть таблица для хранения пар ключ / значение («ключ» => «значение»), таблица для хранения родительского элемента и таблица для хранения отношения многие / многие, которые могут иметь пары ключ / значение. с объектами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...