2009-07-19 2 views
2

При программировании программы OO с использованием базы данных базы данных SQL атрибуты объектов соответствуют строкам в таблицах? Или более того? Я не совсем понимаю, как атрибуты объектов относятся к данным в таблицах. Спасибо за помощь.OO-программа и база данных SQL

ответ

7

Это действительно зависит от того, который ORM вы используете, однако, в целом идея:

class = > table 
instance => row 
attribute => column 
0

Вы должны быть более конкретными, и, возможно, сделать немного исследований о том, что доступно на выбранный Платформа. Хотя существуют способы сопоставления различных объектно-ориентированных языков в базах данных, не существует подхода «один размер подходит всем».

+0

Не могли бы вы представить пример «положительного» («сделать это»)? Ваш ответ является своего рода «негативным». –

+0

* Никто еще не понял. Некоторые из самых умных людей в отрасли пробовали и провалились. Отрицательный ответ - единственный, кто искренен. Вы могли бы сказать: «Просто используйте Hibernate, и все будет хорошо», за исключением того, что этого не произойдет, и вы будете лгать. –

+0

@ Jörg W Mittag: Некоторые люди очень успешны, что они делают, что работает? «Ни один размер, который подходит всем», всегда верен для всех проблем с архитектурой программного обеспечения. Однако некоторый намек на то, что лучше или менее рискованно или более полезно, может быть более полезным, чем повторение очевидного «ни одного размера подходит всем». –

6

ennuikiller упомянул некоторые вещи, но объект может также храниться на нескольких строках и таблицах, потому что не может быть никакой корреляции из-за того, как данные моделируются и нормализуются.

Это не просто ... некоторые чтение Object-relational impedance mismatch (Википедия)

+0

спасибо gbn, я забыл упомянуть о сложности модели данных. – ennuikiller

+0

Я попытался прочитать эту статью (на самом деле, прежде чем я разместил этот вопрос), но я не мог этого понять. Может кто-нибудь обобщить его или есть простой пример, который его иллюстрирует? – ChrisC

2

Почитайте о Object-relational_mapping

метод программирования для преобразования данных между системами несовместимых типа в реляционных базах данных и объектно-ориентированных языков программирования , Это создает, по сути, «базу данных виртуальных объектов», которая может использоваться из языка программирования. Доступны как бесплатные, так и коммерческие пакеты, которые выполняют объектно-реляционное сопоставление, хотя некоторые программисты предпочитают создавать свои собственные инструменты ORM.

Для Java или .NET проект hibernate обеспечивает реляционную настойчивость.

Hibernate - это мощный, высокопроизводительный объект/реляционная персистенция и служба запросов. Hibernate позволяет разрабатывать постоянные классы по объектно-ориентированной идиоме, включая ассоциацию, наследование, полиморфизм, состав и коллекции. Hibernate позволяет вам выражать запросы в своем собственном переносном расширении SQL (HQL), а также в собственном SQL или объектно-ориентированном критерии и пример API.

В отличие от многих других решений настойчивости, Hibernate не скрывает от вас силу SQL и гарантирует, что ваши инвестиции в реляционные технологии и знания так же актуальны, как всегда.

2

Ответов нет.

Целью проекта OO является оптимизация для удобства указания поведения программы. Целью проектирования базы данных является оптимизация для удобства хранения/извлечения данных. Эти цели очень различны и могут и будут приводить к очень разным разложениям проблемной области.

Можно сопоставить один с другим, но тогда вы столкнетесь с несоответствием импеданса, как упомянули другие, что в основном является техническим следствием различных целей двух моделей.

Jorg упомянул статью «Vietnam of computer science» в комментариях, которую стоит прочитать. Вы можете пропустить исторический материал во Вьетнаме, если вы не успели.

+0

Не так ли распространено иметь программу OO с SQL-back-end? – ChrisC

+1

Да, это так. Также широко распространено множество проблем. Фактически, объектно-реляционное картографирование получило широкое название как «Вьетнам компьютерных наук», потому что мы находились в этой войне десятилетиями, без конца. –

Смежные вопросы