Народ,
Уже n-й раз подряд я снова сталкиваюсь с той же проблемой. Речь идет о том, «как безболезненно отобразить структуры ООП в таблицы базы данных».
Вот сценарий: у меня есть несколько типов «действующих лиц» в моей системе - работники, работодатели, контакты. У них есть определенные общие функции; другие части очень разные. Субъектами, с которыми имеют дело все участники, являются «сообщения», «заметки» (администраторы любят оставлять заметки для клиентов) и некоторые другие. Есть тонны типов других сущностей, с которыми имеет дело каждый тип актера, в то время как другие не делают.
В настоящее время моя схема базы данных содержит таблицы для:
Актеры:
- рабочий
- работодатель
- контакт
Сущность:
Таблицы связей между сущностями и субъектами:
- рабоче-коммуникационно-Assn
- работодатель-коммуникационно-Assn
- рабочие струны-Assn
- и т. Д., Вы получаете упражнение.
Для меня это похоже на "кодовый запах". Всякий раз, когда клиент меняет свою роль (т. Е. Повышается с «контакт» до «работодатель»), необходимо запустить кучу сумасшедших сценариев. Тьфу ... С другой стороны, если бы я работал в мире, ориентированном исключительно на ООП, это было бы намного проще - иметь базовый класс для всех сущностей с общими свойствами и покончить с этим ...
В мире БД этот вариант кажется теоретически возможным, но звучит очень грязно ... Т.е. если я правильно понимаю, у меня будет новая таблица base_actor, и у каждого другого актера будет base_actor_id, и тогда ассоциации будут между base_actor и сущностями ... Но тогда как мне выполнять запросы обратной ассоциации? То есть "покажи мне все связи только с актерами типа работник"?
Есть совет? Какие-нибудь общие мысли на тему «отображения ООП-структур на реляционные БД»?