Я узнал о моделировании ролей объектов, но не об объектно-реляционном сопоставлении, и я хочу знать, являются ли они двумя способами делать одно и то же и каковы их плюсы и минусы? Для меня моделирование роли объекта имеет гораздо больше смысла. Не могли бы вы сделать краткое, но легкое для понимания сравнение, если их можно сравнить. Ваше здоровье
В чем разница между объектно-ролевым моделированием и объектно-реляционным сопоставлением?
Ответы (3)
Моделирование ролей объектов: нотация моделирования программного обеспечения, специально предназначенная для определения моделей предметной области. Этот язык можно рассматривать как альтернативу использованию диаграмм классов UML для разработки вашей базы данных. Подробнее здесь: http://www.orm.net/
Объектно-реляционное отображение: набор стратегий для преодоления разрыва между объектно-ориентированными программами и реляционными базами данных. Он направлен на обеспечение постоянного хранения объектов в структуре реляционной базы данных.
Моделирование ролей объектов было изобретено командой Control Data примерно в 1973 году и названо Фалькенбергом. Этот метод моделирования основан на лингвистическом анализе и был формализован Терри Халпином как логика первого порядка, см. http://orm.net. а>. Таким образом, ORM является первоначальным пользователем аббревиатуры. ORM и родственные языки моделирования отличаются тем, что не содержат атрибутов. Эти языки содержат только объекты и типы объектов (виды вещей), факты и типы фактов (отношения между отдельными вещами) и ограничения (правила о том, какие вещи и отношения могут существовать). Никакие отношения не имеют характеристику ведущий-ведомый, как сущность-атрибут — это понятие возникает только во время физического сопоставления, поскольку оно не имеет отношения к базовой семантике предметной области.
Объектно-реляционное отображение (которое я всегда называю O/RM) — это название метода или семейства инструментов, которые помогают переводить данные между реляционной формой и объектно-ориентированной формой. Обе эти формы используют агрегированные или составные вещи на основе атрибутов (сущность/атрибут или объект/атрибут), но принципы агрегирования различаются между двумя подходами, поэтому одна и та же базовая семантика приводит к разным структурам данных; отсюда и потребность в инструментах, помогающих автоматизировать перевод. Кроме того, в ER или OO-анализе необходимость принимать ранние решения о том, какие вещи являются объектами/сущностями, а какие атрибутами, является вынужденной, и это приводит к целому классу ошибок моделирования, которые просто не возникают с ORM.
Конечно, как реляционная, так и о-о модель могут быть автоматически получены из модели ORM, и отображение между производными формами также происходит автоматически и безболезненно. Я полагаю, что это не делается чаще, потому что это сделало бы жизнь слишком легкой.
Вы сравниваете яблоки с апельсинами. Объектно-реляционное сопоставление — это попытка преодолеть несоответствие импеданса между миром объектов и реляционными базами данных.
Activerecord, например, представляет собой ORM, который упаковывает строку в базу данных. Hibernate — еще одна популярная ORM.
Просто google for ORM wikipedia объясняет это намного лучше
http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch