Этот подход используется Amazon SimpleDB . Вы определяете domains , и у каждого домена есть строки с несколькими парами ключ / значение. Эти данные известны как «полуструктурированные».
У этого подхода есть некоторые сильные стороны. Как и ваша идея, вам не нужно определять схему базы данных. Вы можете вводить новые таблицы ad-hoc, новые столбцы для каждой строки и даже иметь столбцы, имеющие более одного значения (вместо создания отношения has_many с дополнительной таблицей). Если ваша схема изменяется, вы можете вводить эти изменения переходно, а не принудительно.
С другой стороны, вы отбрасываете десятилетия разработки на реляционную модель. У вас будет кровотечение из-за того, что ваша индексация будет либо слишком общей, либо вообще отсутствует. Агрегированные операции (группы, объединения) будут чрезвычайно медленными. Оптимизация запросов будет сложной и т. Д.
Как Amazon SimpleDB, так и Apache CouchDB решают эту проблему, делая свои базы данных высоко распределенными. Хотя это обеспечивает надежность и избыточность, у него есть собственный набор проблем, таких как разрешение конфликтов и устаревшие данные.
Исходя из вашего вопроса, вы, похоже, не можете использовать гибкие методы, поэтому я бы порекомендовал один из этих двух механизмов БД (в зависимости от того, предпочитаете ли вы платить Amazon, хотя и не очень много, или создать свою собственную настройку). Они оба допускают полностью динамическую схему базы данных. Остерегайтесь ловушек.