Этот вопрос является попыткой найти практическое решение для этого вопроса .
Мне нужна схема без схемы для моей базы данных SQL.Тем не менее, я могу ограничить гибкость включения ее во всю парадигму SQL.Переход на схемы без баз данных может стать вариантом в будущем, но сейчас я застрял с SQL.
У меня есть таблица в базе данных SQL (назовем ее Foo
).Когда к этому добавляется строка, она должна иметь возможность хранить произвольное количество «мета» полей вместе с этим.Примером может служить возможность прикрепления произвольных метаданных, таких как теги, соавторы и т. Д. Все поля являются необязательными, но проблема заключается в том, что они имеют разные типы.Некоторые могут быть числовыми, некоторые могут быть текстовыми и т. Д.
Простой дизайн, связывающий Foo
с таблицей OptionalValues
с такими полями, как name
, value_type
, value_string
, value_int
,value_date
и т. Д. Кажется прямым, хотя он спускается во всю модель EAV , о которой Алекс упоминает в последнем ответе, и выглядит довольно расточительно.Кроме того, я думаю, что запросы из этого, когда он будет расти, будут довольно медленными.Я не ожидаю искать или сортировать что-либо в этой таблице, хотя.Все, что мне нужно, это то, что когда я получаю строку из Foo
, эти дополнительные атрибуты также должны быть доступны.
Существуют ли лучшие рекомендации для реализации такого рода установки в базе данных SQL, или япросто неправильно смотреть на все это?