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