Схема без таблицы базы данных SQL - практический компромисс - PullRequest
3 голосов
/ 01 августа 2010

Этот вопрос является попыткой найти практическое решение для этого вопроса .

Мне нужна схема без схемы для моей базы данных SQL.Тем не менее, я могу ограничить гибкость включения ее во всю парадигму SQL.Переход на схемы без баз данных может стать вариантом в будущем, но сейчас я застрял с SQL.

У меня есть таблица в базе данных SQL (назовем ее Foo).Когда к этому добавляется строка, она должна иметь возможность хранить произвольное количество «мета» полей вместе с этим.Примером может служить возможность прикрепления произвольных метаданных, таких как теги, соавторы и т. Д. Все поля являются необязательными, но проблема заключается в том, что они имеют разные типы.Некоторые могут быть числовыми, некоторые могут быть текстовыми и т. Д.

Простой дизайн, связывающий Foo с таблицей OptionalValues с такими полями, как name, value_type, value_string, value_int,value_date и т. Д. Кажется прямым, хотя он спускается во всю модель EAV , о которой Алекс упоминает в последнем ответе, и выглядит довольно расточительно.Кроме того, я думаю, что запросы из этого, когда он будет расти, будут довольно медленными.Я не ожидаю искать или сортировать что-либо в этой таблице, хотя.Все, что мне нужно, это то, что когда я получаю строку из Foo, эти дополнительные атрибуты также должны быть доступны.

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

1 Ответ

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

Добавьте строковый столбец «Метаполя» в таблицу «Foo» и сохраните там свои метаданные в виде строки XML или JSON.

...