Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

BSBD_k_ekzamenu / Материал_к_билетам_11-13 / Билет_11_вопрос_1 / Соответсвие Oracle требованиям РБД

.doc
Скачиваний:
11
Добавлен:
05.06.2015
Размер:
113.15 Кб
Скачать

3

Системы управления реляционными базами данных (из книги Вильям Дж. Пэйдж и др. «Использование Oracle8/8i. Изд-во Вильямс, Москва*Санкт-Пеоербург*Киев,2000. Стр. 44-48))

Е.Ф. Кодд (E.F. Codd) в 1970 году сформулировал концепцию реляционной модели (relational model) баз данных. Ранее, до появления на рынке СУРБД , доминирующее положение зани­мали иерархические (IMS) и сетевые (IDMS) модели. До появления этих моделей базы данных строились на базе файлов с последовательным доступом, "плоских" файлов (flat files). Для раз­работки программ доступа к таким базам данных использовались языки третьего поколения. До сих пор еще встречаются построенные по этому принципу специализированные системы, кото­рые функционируют на больших ЭВМ и мини-компьютерах. Группой Database Task Group (DBTG) был разработан стандарт CODASYL на такого рода базы данных (название стандарта представляет собой аббревиатуру от Conference on DAta SYstem Languages — Конференция по языкам обработки данных. — Прим. ред.). Стандарт охватывал сетевые базы данных, сформи­рованные на основе языка COBOL, a IDMS представляла собой реализацию этого стандарта од­ной из фирм. Однако начиная с 70-х годов доминирующее положение на рынке занимает класс систем управления реляционными базами данных, типичными представителями которого явля­ются программные продукты фирм Oracle, Sybase, Informix и Ingres.

В настоящее время на передний план выходят объектно-ориентированные (ОО) СУБД, для которых имеется достаточно много секторов рынка приложений — интегрированные системы автоматизированного проектирования и управления технологическими процессами (САПР/АСУТП, в английской транскрипции — CAD/CAM), системы планирования производ­ства и инжиниринга, мультимедийные системы и т.д. ООСУБД отличаются способностью рабо­тать с данными самых различных типов, наличием мощных средств обработки и совершенно новым механизмом выполнения транзакций. В борьбе за потребителя фирмы — изготовители реляционных СУБД разработали универсальные серверы, обладающие множеством объектно-ориентированных и мультимедийных функций, включая работу с различными типами дан­ных— текстовыми, звуковыми, статическими и динамическими изображениями. Примером может служить Universal Server фирмы Oracle. Кроме того, серверное ядро базы данных можно нарастить путем подключения средств работы с типами данных, определенными пользователем (user-defined), и расширяемыми (extensible) типами. Эти возможности включены и в Oracle. Реляционные СУБД с такими функциями можно рассматривать как гибридные. Далее идут мно­гомерные базы данных (Multi Dimensional Databases — MDD), которые также находят свою нишу на рынке. Базы данных подобного класса предлагают усложненный механизм индексации для приложений с множеством переменных, которые нуждаются в сложном многомерном дос­тупе к данным, что практически невозможно реализовать в традиционных СУБД. Фирмы — производители СУБД, стремясь хоть немного приблизиться к требованиям MDD, предлагают потребителям программное обеспечение с более развитыми возможностями индексного доступа при помощи специальных технологий, в частности— с использованием битовых индексов (bitmapped indexes). Примером такого рода продукции может служить Express фирмы Oracle.

Использование реляционной модели

Вкратце мы уже рассмотрели основные функции, выполнение которых возлагается на СУБД. Теперь, чтобы разобраться, как все это проецируется на системы управления реляцион­ными базами данных, присмотримся внимательнее к сути реляционной модели. Согласно опре­делению реляционная модель имеет два главных свойства:

  • базовые порции данных представляют собой отношения (relations)',

  • операции над таблицами затрагивают только отношения (реляционное выражение — relational closure).

Так что же такое отношение? Это математическая концепция, описывающая, как соотно­сятся между собой элементы двух множеств. Таким образом, корни реляционный модели ле­жат в области математики. Однако для нашей предметной области отношение — это не что иное как таблица с некоторыми специальными свойствами. Реляционная модель предусмат­ривает организацию данных исключительно в виде таблиц. Для потребителя, проектировщи­ка базы данных, администратора базы данных и конечного пользователя данные представля­ются совершенно одинаково — в виде таблиц. Следовательно, таблица — базовый языковой объект (lingua franca) реляционной модели.

Таблица представляет собой множество именованных атрибутов, или столбцов, и мно­жество записей (кортежей— tuples), или строк. Очень часто столбец называется полем (field) таблицы. Пересечение строки и столбца образует ячейку (cell) таблицы. Набор допус­тимых значений столбца — домен (domain) — характеризуется определенным типом данных, например символьным или целым. Строки же представляют собой данные. Табл. 1.1 — при­мер таблицы, имеющей три столбца и четыре строки.

Таблица 1.1, Таблица типов автомобилей

Производитель

Модель

Цена, тыс.

долларов

Toyota

Camry

25

Honda

Accord

23

Ford

Taurus

20

Volkswagen

Passat

20

Реляционная модель предъявляет к таблице определенные требования.

  • Данные в ячейках таблицы должны быть структурно неделимыми. Каждая ячейка может содержать только одну порцию данных. Это свойство часто определяется как принцип информационной неделимости. Недопустимо, чтобы в ячейке таблицы реляционной модели содержалось более одной порции данных, что иногда именуется информационным кодированием (information coding). Примером может служить идентификационный номер транспортного средства (Vehicle Identification Number— VIN). Если записать его в одну ячейку, то будет нарушен принцип неделимости информации, поскольку в ячейке окажутся такие разделяемые данные, как наименование производителя, модели, сведения о местонахождении предприятия-изготовителя и т.д. Хотя на практике решение о том, следовать ли жестко требованиям теории, почти всегда принимает проектировщик, нужно учитывать, что нарушение этих требований может затем отрицательно сказаться на обеспечении целостности данных.

  • Данные в одном столбце должны быть одного типа.

  • Каждая строка должна быть уникальной (недопустимо дублирование строк).

  • Столбцы должны размещаться в произвольном порядке.

  • Строки (записи) должны размещаться в таблице в произвольном порядке.

  • Столбцы должны иметь уникальные имена.

Помимо таблиц и их свойств, реляционная модель имеет еще и собственные операции. Не вдаваясь глубоко в строгие формулировки реляционной математики, отметим только, что эти операции позволяют выполнять некоторые действия над подмножествами столбцов и/или строк, объединять (сливать) таблицы и выполнять другие операции над множествами. Чрез­вычайно важно отметить, что все эти операции используют таблицы в качестве исходных

данных; результатом выполнения операций также являются таблицы. В настоящее время стандартным языком для работы СУБД, "освященным" авторитетом Американского нацио­нального института стандартизации ANSI, является SQL, средства которого позволяют вы­полнять все эти операции.

В данной области до появления SQL конкурировали язык QUEL (или QUEry Language — язык запросов), разработанный фирмой Ingres, и UDL (Unified Data Language — унифицирован­ный язык обработки данных). Американский национальный институт стандартов является го­ловной организацией по стандартизации в Соединенных Штатах, причем его деятельность охва­тывает и область программного обеспечения. И именно с благословения ANSI конкуренция в этой области завершилась тем, что в системах управления реляционными базами данных начал повсеместно использоваться язык SQL. Основными операторами этого языка, обеспечивающи­ми манипулирование данными и доступ к ним, являются SELECT, INSERT, UPDATE и DELETE. Сра­зу же отметим, что любая операция манипулирования данными, осуществляемая этими опера­торами, — не что иное как транзакция, о которой речь шла чуть выше.

Для определения данных и структурированного доступа к ним служат базовые операторы CREATE, ALTER и DROP. Каждый из них сопровождается последовательностью модификаторов (clause), которые позволяют задать конкретный вариант предложения SQL для определения той или иной реляционной таблицы, входящей в структуру базы данных, или для доступа к ней. Таким образом, SQL является одновременно и языком определения данных (Data Definition Language — DDL), и языком управления данными (Data Manipulation Language — DML). Конечно же, объединение в одном языке функций определения и управления очень привлекательно — вместо двух языков (и интерфейсов) пользователь получает один, хотя и более сложный. Но в результате и администратор базы данных, и конечный пользователь применяют одно и то же средство.

И последнее, на чем необходимо остановиться в этом кратком обзоре свойств реляцион­ной модели, — два фундаментальных правила целостности: правило целостности объектов (entity integrity rule) и правило ссылочной целостности (referential integrity rule). Прежде чем их рассматривать, введем два понятия,

  • Первичный ключ (primary key) — это столбец или подмножество столбцов, которые уникально, т.е. единственным образом, определяют строки.

  • Первичный ключ, который содержит более одного столбца, называется множествен­ ным (concatenated), комбинированным (compound) или составным (composite key).

Какая комбинация столбцов наиболее целесообразна и наилучшим образом соответствует смыслу содержащейся в таблице информации, решает проектировщик базы данных. Это от­нюдь не означает, что другие данные не имеет смысла хранить — просто именно выбранное подмножество столбцов будет служить первичным ключом.

Остальные ключи, которые также можно использовать в качестве первичных, называются потенциальными (candidate keys) или альтернативными (alternative keys}. Внешний (foreign) ключ — это столбец (или подмножество столбцов одной таблицы), который может служить в качестве первичного ключа для другой таблицы. Говорят также, что внешний ключ одной таблицы является ссылкой на первичный ключ другой таблицы. Правило целостности объек­тов утверждает, что первичный ключ не может быть полностью или частично пустым, т.е. иметь значение null. Правило ссылочной целостности гласит, что внешний ключ может либо быть пустым (иметь значение null), либо соответствовать значению первичного ключа, на который он ссылается.

Таким образом, система управления реляционной базой данных — это СУБД, которая удовлетворяет сформулированным выше фундаментальным требованиям реляционной моде­ли. Однако с реляционными СУБД, разработанными и введенными в эксплуатацию в конце

70-х— начале 80-х годов, происходило следующее: была предпринята попытка внедрить средства языка SQL в нереляционные системы, а затем их попросту назвали реляционными. Стали они реляционными или нет — здесь критерием могут служить двенадцать правил пол­ноты реляционных систем, сформулированных Коддом, за которыми так и закрепилось на­именование правила Кодда.

Правила Кодда

Двенадцать правил Кодда определяют требования к реляционным СУБД.

  1. Явное представление данных. Информация должна быть представлена в виде данных, хранящихся в ячейках. Как упоминалось ранее, идентификационный но­ мер транспортного средства VIN как содержимое единого столбца противоречит этому правилу.

  2. Гарантированный доступ к данным. К каждому элементу данных должен быть обеспечен доступ с помощью комбинации имени таблицы, первичного клю­ ча строки и имени столбца. Например, возможность обратиться к столбцу, ис­ пользуя массивы или указатели, противоречит этому правилу.

  3. Полная обработка неопределенных значений. Неопределенные значения Null, отличные от любого определенного значения, должны поддерживаться для всех типов данных при выполнении любых операций. Например, если Null рассматри­ вается как число 0 для неопределенного элемента числового типа и как пустая строка ("") для неопределенного элемента символьного типа, это будет противо­ речить сформулированному выше правилу. Значение Null должно рассматривать­ ся только в качестве пропущенного, неопределенного элемента данных и никак иначе. Если же необходимо, чтобы незаданные элементы имели некоторое заранее предопределенное значение, потребитель должен иметь возможность задавать значения по умолчанию (default).

  4. Доступ к описанию базы данных в терминах реляционной модели. Словарь данных активной базы данных должен сохраняться в форме таблицы, и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств доступа к таблицам. Нарушением этого правила является сохранение словаря данных в виде файлов операционной системы.

  5. Полнота подмножества языка. Язык управления данными и язык определения данных должны поддерживать все операции доступа к данным и быть единст­ венным средством такого доступа, кроме, возможно, операций низшего уровня (см. правило 12). Нарушением этого правила является возможность вмешательст­ ва в содержимое файла, хранящего таблицу, средствами, которые не являются операторами языка SQL. (См. также правило 12.)

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

  2. Наличие высокоуровневых операций управления данными. Операции встав­ ки, обновления и удаления должны применяться к таблице в целом. В настоящее время это правило удовлетворяется практически всеми СУБД.

  1. Физическая независимость данных. Прикладные программы не должны зависеть от используемых способов хранения данных на носителях и методов обращения к ним. Если файл, в котором хранятся данные таблицы, перемещается на другой диск или переименовывается, это никак не должно сказываться на приложениях.

  2. Логическая независимость данных. Прикладные программы не должны зави­ сеть от логических ограничений. Если таблица разделяется на две, то представле­ ние должно обеспечивать слияние обеих частей, чтобы это никак не сказывалось на приложениях.

  1. Независимость контроля целостности. Все необходимое для поддержания це­ лостности данных должно храниться в словаре данных. Ограничения на первич­ ные ключи, внешние ключи, пределы допустимого диапазона значений данных, переключатели и другие подобные данные должны храниться в словаре данных.

  2. Дистрибутивная независимость. Реляционная база данных должна быть пере­ носимой и способной к распространению. Это правило представляет собой рас­ ширение правила 8 в том смысле, что база данных должна быть переносимой не только в пределах системы (локально переносимой), но и по сети, объединяющей множество систем (удаленно переносимой).

  3. Согласование языковых уровней. Если реляционная СУБД допускает использо­ вание низкоуровневого языка доступа (элемент доступа — запись), последний не должен совершать операций, противоречащих требованиям правил безопасности и поддержания целостности данных, которые соблюдаются языком более высокого уровня. Средства, обеспечивающие выполнение таких низкоуровневых операций, как формирование резервных копий и загрузка, не должны игнорировать сущест­ вующие в системе правила опознавания пользователей и их привилегий доступа, блокировок и ограничений. Однако зачастую разработчики СУБД пренебрегают этим правилом ради повышения скорости. В таком случае забота о безопасности и целостности базы данных ложится в основном на плечи администратора базы данных, что может рассматриваться в качестве приемлемого компромисса между теорией и практикой. Примером может служить отмена и восстановление ограни­ чений при загрузке сверхбольших баз данных.

СУБД, удовлетворяющая всем фундаментальным требованиям, описанным в этой главе (т.е. соответствующая обеим частям определения, обладающая шестью перечисленными свойствами, поддерживающая реляционные операции и не противоречащая двум правилам целостности), а также всем двенадцати правилам Кодда, может квалифицироваться как сис­тема управления реляционными базами данных. Все это Кодд суммировал в правиле 0: для того чтобы систему можно было квалифицировать как реляционную СУБД, она должна использовать для управления базой данных исключительно реляционные функции.

Является ли Oracle реляционной СУБД

Теперь остановимся на вопросе, является ли Oracle реляционной СУБД. Конечно, продукты Oracle используются достаточно эффективно в роли реляционных СУБД уже на протяжении мно­гих лет. Остается только выяснить, насколько эта система соответствует рассмотренным выше двенадцати правилам Кодда. Оказывается, что не совсем соответствует. В этом нет ничего удиви­тельного, поскольку этим грешат и все ее конкуренты на рынке СУБД.

Попробуем определить суммарный показатель соответствия продукта Oracle правилам Кодда, пользуясь следующей шкалой:

  • 0 баллов добавляется к суммарному показателю, если система противоречит правилу;

  • S балла ( 0<S<1 ) добавляется к суммарному показателю, если система частично противоречит правилу;

  • 1 балл добавляется к суммарному показателю, если система соответствует правилу.

В СУБД для хранения и обработки мультимедийных данных используются большие дво­ичные объекты (Binary Large Objects — BLOB). Как правило, объекты BLOB хранятся вне БД в виде файлов, а в соответствующих столбцах БД имеются указатели на них. Таким образом, использование BLOB нарушает два первых правила, поскольку данные не хранятся в ячейке таблицы и для доступа к ним недостаточно только комбинации таблща+столбец + пер­вичный ключ. И хотя формально это так, мы все-таки не можем сказать, что данное наруше­ние непреодолимо. По этим двум правилам Oracle, как, впрочем, и другие аналогичные про­дукты, вполне заслуживает оценки 2S.

Oracle получает S балла и за выполнение требований правила 3, касающегося обработки значе­ния Null. Нужно все же отметить, что реализация Null в том виде, в каком она существует в ны­нешнем стандарте языка SQL, является камнем преткновения для всех разработчиков СУБД. Ее критиковали и Кодд, и другой пионер в этой области — С.Дж. Дейт (C.J. Date). Кодд предлагал трехзначную логику, а Дейт—вообще исключить Null. У нас нет возможности привести здесь все имеющиеся аргументы "за" и "против" и углубиться в их обсуждение. Главное, чтобы было понят­но, что эта проблема в теории СУБД существует и окончательное ее решение пока не найдено.

Еще 1-S балла Oracle теряет на правиле 4, касающемся доступа к словарю данных при по­мощи стандартных средств SQL. Oracle позволяет использовать только оператор SELECT, a для операторов INSERT, UPDATE и DELETE словарь данных закрыт. Ситуация, в которой требу­ется использование этих операторов, возникает очень редко, да и вряд ли можно считать по­добное вмешательство желательным. Однако, строго говоря, поскольку правило все-таки на­рушается, это будет стоить продукту 1-S балла.

Правила 5 и 7-10 полностью удовлетворяются продуктом Oracle, и на них баллы не теряются.

Правила 6 и 11 отнимают у Oracle no 1-S балла. Правило 6 требует, чтобы все представления были обновляемы. Продукт Oracle7 допускает обновление только некоторых (простых) пред­ставлений. В Oracle8 это исправлено, но не полностью. Правило 11 касается дистрибутивной не­зависимости. В этой части Oracle предлагает связи БД, снимки, симметричную репликацию и распределенные БД с двухфазной фиксацией (two-phase commit— 2РС). Однако у разных поль­зователей сети функционируют по-разному, и механизм 2РС не всегда работает хорошо. От­дельная проблема — репликация. Следует сказать, что большая часть осложнений в реализации правила 11 возникает из-за недостаточного уровня квалификации пользователей.

А вот за правило 12 продукт Oracle получает 0 баллов. Оно нарушается, поскольку в Oracle имеются утилиты, например SQL*Loader и Import, которые позволяют включать в БД данные в обход стандартных правил языка SQL, что может быть потенциальным источником потери достоверности и целостности данных.

В результате мы получаем суммарную оценку в

Правила 1 2 3 4 5 6 7-10 11 12

Оценка S+S+S+S+1+S+ 4+ S+ 0=6S+5

баллов из 12 возможных. Конечно, более строгий анализ может сбросить с этого результата еще один или два балла, но речь не об этом. Главный вывод — в продукте Oracle не выполняются полностью все двенадцать пра­вил Кодда. Но в такой же мере это утверждение справедливо и для продуктов Sybase и Infor­mix. Из всего сказанного не следует, что продукт Oracle нельзя считать реляционной СУБД. Просто фирме (как, впрочем, и ее конкурентам) еще есть над чем поработать.