Реляционная модель данных.
Реляционная модель данных ведет свою историю с публикации в 1970 году работы Эдгара Кодда «Реляционная модель данных для больших совместно используемых банков данных». В этой работе он сформулировал недостатки существующих на тот момент систем управления базами данных и предложил реляционную модель, свободную от них. Рассмотрению реляционной модели посвящена отдельная глава, так что здесь мы только отметим ее основные черты.
В первую очередь, реляционная модель отличается от ранних моделей данных тем, что основывается на математическом «фундаменте». Ключевое понятие реляционной модели, по которому она и получила свое название – отношение (англ. Relation) определено в терминах теории множеств. Соответственно, операции над отношениями также основываются на операциях над множествами.
Сам Кодд предложил восемь операций, которые, в совокупности с отношениями, образуют реляционную алгебру. Предложенный набор операций избыточен, так как часть операций может быть выражена через другие. Но множество операций выбрано исходя из соображений удобства их использования.
|
|
Уже из приведенного описания понятно, что реляционная модель ориентирована на работу с множествами записей, а не с отдельными экземплярами. Этим она радикально отличается от остальных моделей данных. Простота и мощь реляционной модели позволили реализующим ее СУБД завоевать первенство на рынке средств управления базами данных и вытеснить остальные решения на периферию. До сегодняшнего дня реляционные СУБД держат первенство, но оно уже не так бесспорно после появления различных нереляционных систем, речь о которых пойдет дальше.
Объектно-ориентированный подход к проектированию и разработке программного обеспечения завоевал большую популярность и сегодня является, пожалуй, основным из используемых подходов. Это положение неизбежно должно было отразиться и в сфере технологий баз данных. В конце 80-х – начале 90-х годов прошлого века вокруг объектно-ориентированных СУБД был определенный энтузиазм и некоторые исследователи заявляли, что объектно-ориентированные СУБД смогут всерьез конкурировать с реляционными и даже вытеснить их.
По прошествии лет стало ясно, что объектно-ориентированные СУБД заняли определенную нишу, но о вытеснении ими реляционных систем речь не идет. В этом разделе мы вкратце рассмотрим основные идеи объектно-ориентированных СУБД и поясним, почему они так и не получили широкого распространения.
Основное преимущество объектно-ориентированного подхода как такового – повышение уровня абстракции. Используя объектно-ориентированный подход, программист оперирует понятиями, взятыми из предметной области, что позволяет более адекватно отобразить ее в программный код, облегчает понимание программы и облегчает работу программиста. Предполагается, что применение объектно-ориентированных СУБД позволит получить эти же преимущества в сфере работы с базами данных.
|
|
В самом деле, между объектно-ориентированными языками программирования и реляционными базами данных имеется несоответствие – эти области оперируют разными терминами и используют разные подходы. Соответственно, для преодоления этого несоответствия необходимо прикладывать усилия. Чаще всего, это выливается в создание некоторой объектно-ориентированной «прослойки», скрывающей за собой детали работы с реляционными данными. Очевидно, что это усложняет систему и снижает производительность. Избавление от нее за счет использования СУБД, работающей в объектно-ориентированной парадигме, выглядит очень привлекательно.
Однако реализация и использование объектно-ориентированных СУБД наталкивается на ряд трудностей. В первую очередь, стоит отметить, что, несмотря на довольно длительный период развития, объектно-ориентированный подход не вполне устоялся в теоретическом плане, ключевые понятия разные специалисты могут определять по-своему, а каждый язык программирования реализует их со своей спецификой. Соответственно, говорить о твердом теоретическом основании для объектно-ориентированных баз данных не приходится.
Второй проблемой на пути создания и использования объектно-ориентированных баз данных является проблема производительности. ООСУБД отстают от реляционных систем по эффективности, и разрыв этот вряд ли будет преодолен.
Наконец, возможно главным возражением является то, что объектно-ориентированные СУБД вообще не являются СУБД. В самом деле, основной целью создания баз данных как таковых было отделение данных от использующих их приложений. То есть, предполагается, что данными в базе данных можно воспользоваться из различных приложений для решения различных задач. Очевидно, что для объектно-ориентированных СУБД это вряд ли выполнимо – далеко не все приложения написаны на объектно-ориентированных языках, а если даже и написаны – не исключено, что какие-то положения объектно-ориентированного подхода реализованы в них иначе.
Кроме того, одной из основных возможностей СУБД является возможность выполнения произвольных запросов к данным. Для объектно-ориентированных баз данных, где навигация по записям определена объектной моделью, а операции – реализованными методами, написание нерегламентированных запросов может оказаться попросту невозможным.
Наконец, имеются и серьезные вопросы с реализацией ограничений целостности данных. Их не всегда можно сформулировать на уровне базы данных, а реализация их на уровне приложения делает данные уязвимыми для возможных ошибок, если доступ осуществляется помимо приложения.
Так что, можно сказать, что объектно-ориентированные СУБД не реализуют функции, которые разработчики привыкли требовать от систем управления базами данных, и в этом, пожалуй, и заключается причина их низкой популярности.
И наконец, надо отметить, что потенциал реляционных СУБД в части определения и использования собственных типов данных еще далеко не исчерпан. Полноценная реализация работы с доменами вполне может заменить объектно-ориентированный подход. Достаточно подробно этот вопрос разбирает Дейт, так что интересующиеся могут обратиться к [1].
Поэтому, в настоящем курсе объектно-ориентированные СУБД подробно не рассматриваются, хотя некоторые нереляционные СУБД частично реализуют объектно-ориентированный подход, что будет показано при рассмотрении этой темы.