Цель
Найдите идеальную гибкую схему для хранения множества различных типов объектов с широким спектром ссылок между ними в базе данных реляционной.
Проблема
EAV является обходным путем к нормальным ограничениям РСУБД.
Если бы вы нормализовали схему EAV, это было бы уродливо.
Идея
Если EAV был нормализован, это было бы уродливо.
Означает ли тот факт, что мы традиционно поддерживаем эту схему вручную, ограничивает их сложность и мощность?
Но если это было поддержано и запрошено программно, что бы это значило?
Графы
Если у вас есть n
разные объекты в n
разных таблицах, почему не, пусть ваш код генерирует таблицы ссылок n(n+1)/2
и запросы между ними? Не приведет ли это к истинному графику в нормализованной схеме?
В сильно взаимосвязанной базе данных всегда будет экспоненциально больше ребер, чем вершин. Почему бы не сосредоточиться на создании правильных, нормализованных вершин (n
таблиц сущностей), и пусть наш код поддерживает ребра ( n^x
таблицы ссылок)?
Заключение
Может ли система нормализовать EAV и поддерживать результирующую сложную схему?
Можно ли хранить сложные графы в (и оставаться верными) реляционным базам данных?
Я уверен, что это было сделано раньше, но я никогда не видел его. Что мне не хватает?
Пример проблемы
Сохранение печатных работ и их библиографических данных
- Многие свойства, которые могут быть не просто строками, а целыми объектами.
- В мире библиотеки нет простой (и реляционной) схемы, которая может хранить данные без потерь без чрезвычайно сложных схем.
- Много разных типов ассоциаций и связанных объектов
- И их соответствующие свойства (которые могут сильно различаться).
- И их многочисленные отношения, разных типов, между собой.
Вопросы
"Какую проблему вы пытаетесь решить?"
-Piet
Я ищу нормализованное решение для EAV, графиков и полиморфных отношений в системе реляционных баз данных.
"Я бы не хотел быть парнем, который должен понять или поддерживать его после того, как он вступил в производство".
-Эндрю
Это "традиционное обслуживание" - это то, о чем я говорю, мы должны автоматизировать. Разве это не ворчит?