Re: Языки запросов в объектно-ориентированных СУБД
От: lextasy Украина www.mira-tech.com.ua
Дата: 06.09.04 14:14
Оценка: 8 (2)
Здравствуйте, avpet, Вы писали:

A>Может ли кто-то привести аргументы в пользу ассоциативного доступа (т.е. доступа с помощью языка запросов) к объектно-ориентированным базам данным по сравнению с основным методом доступа к ним — навигационным? В принципе используется он в реальности или языки типа OQL представляют пока только академический интерес?


Насколько я своим умом дошел, полноценный доступ с помощью языка запросов возможен только к тем структурам данных, которые специально предназначены для организации такого доступа. В принципе, использование реляционного языка запросов делает невозможной инкапсуляцию данных, и как следствие — полиморфизм. ИМХО для ООБД лучше подходит метод, подобный службе коммерции в CORBA. Т.е. будет лучше всего, если параллельно с объектной моделью будет существовать более простая реляционная модель, используемая следующим образом:

1) Каждая таблица из реляционной модели однозначно ассоциирована с некоторым абстрактным интерфейсом, а не с конкретным классом объектов (экстентом).
2) Набор полей таблицы определяется набором свойств интерфейса, которые объекты публикуют в этой таблице.
3) Язык запросов позволяет только читать данные из таблиц, и строить по ним представления. Писать в таблицы имеют право только объекты, публикующие в них некоторые свои свойства. Соответственно, никакие "referential integrity", "constraints", и т.п. для реляционного предстваления не так уж и нужны, т.к. они автоматически соблюдаются объектной моделью.
4) Главное: каждый отдельный экземпляр любого класса объектов БД волен самостоятельно решать, когда ему публиковаться в реляционной модели, а когда — нет, и на какое время.
5) Каждая запись таблицы имеет поле OID, для связи с объектом. Соответственно, над результатом SELECT можно производить некоторые манипуляции, активизируя опубликованные объекты и вызывая их методы.

Получается такая себе реляционная "витрина" к объектной модели данных. В качестве способа доступа к ней так и просится язык вроде SQL.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.