Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Трехуровневая архитектура InternetСодержание книги
Поиск на нашем сайте С развитием Internet и особенно World Wide Web архитектура сетевого управления базами данных получила дальнейшее развитие Поначалу WWW являлась средой просмотра статических документов и развивалась независимо от рынка СУБД. Но когда Web-браузеры получили широкое распространение, разработчики подумали о том, что это очень удобный способ обеспечения доступа к корпоративным базам данных. Предположим, к примеру, что торговая компания располагает собственным Web-сервером, на котором клиенты могут найти информацию о товарах, выпускаемых компанией, включая текстовое и графическое описание Логично предположить, что следующим шагом будет предоставление клиентам доступа к информации о наличии выбранного товара в продаже, причем посредством того же интерфейса Web-браузера. Для этого требуется связать последний с базой данных, хранящей такую (постоянно меняющуюся) информацию. Методы связывания Web-серверов и СУБД стремительно развивались в последние годы и в итоге вылились в трехуровневую сетевую архитектуру (рисунок 3.5). Интерфейсом пользователя является Web-браузер, выполняющийся на персональном компьютере или другом “тонком клиенте”. Браузер взаимодействует с Web-сервером, уровень которого можно оценить как прикладной. Если пользователь запрашивает нечто большее, чем просто Web-страницы, Web-cеpвep переадресует запрос серверу приложений, чья роль заключается в анализе запроса Запрос может включать обращение к унаследованной системе, выполняющейся на мэйнфрейме, либо к корпоративной базе данных. Эго уже информационный уровень. В этой архитектуре SQL закрепился как стандартное средство взаимодействия между вторым и третьим уровнями. Все прикладные серверные продукты предоставляют наборы API-функций для доступа к базам данных.
Рисунок 3.5 ─ Место СУБД в трехуровневой архитектуре Internet
СУБД организует данные таким образом, чтобы пользователи и прикладные программы могли извлекать и обрабатывать их. Организация данных и способы доступа к ним, обеспечиваемые конкретной СУБД, называются ее моделью данных. Модель данных определяет "лицо" СУБД и круг приложений, для которых она подходит наилучшим образом SQL является языком работы с реляционными базами данных и основан на реляционной модели данных. Что это такое? В каком виде данные хранятся в реляционной базе данных? Чем реляционные базы данных отличаются от более ранних иерархических и сетевых баз данных? Какими преимуществами и недостатками обладает реляционная модель? В данной главе описана реляционная модель данных, поддерживаемая языком SQL, и приведено ее сравнение с более ранними технологиями организации данных Первые модели данных С ростом популярности СУБД в 70—80-х годах появилось множество различных моделей данных. У каждой из них имелись свои достоинства и недостатки, которые сыграли ключевую роль в развитии реляционной модели данных, появившейся во многом благодаря стремлению упростить и упорядочить первые модели данных Чтобы понять роль SQL и реляционных баз данных и оценить их вклад в развитие СУБД, следует кратко рассмотреть ряд моделей данных, предшествовавших появлению SQL. Системы управления файлами До появления СУБД все данные, которые содержались в компьютерной системе постоянно, хранились в виде отдельных файлов. Система управления файлами, которая обычно являлась частью операционной системы, следила за именами файлов и их расположением. В системах управления файлами модели данных, как правило, не использовались; эти системы ничего не знали о внутреннем содержимом файлов. Для такой системы файл, содержащий документ текстового процессора, ничем не отличается от файла, содержащего данные о начисленной зарплате. Знание о содержимом файла — какие данные в нем хранятся и какова их структура — было уделом прикладных программ, использующих этот файл, что иллюстрирует рис 4.1. В приложении для начисления зарплаты каждая из программ, обрабатывающих файл с информацией о служащих, содержит в себе описание структуры данных (ОСД), хранящихся в этом файле. Когда структура данных изменялась (например, в случае добавления нового элемента данных для каждого служащего), необходимо было модифицировать каждую из программ, обращавшихся к файлу. Со временем количество файлов и программ росло, и на сопровождение существующих приложений приходилось затрачивать все больше и больше усилий, что замедляло разработку новых приложений. Проблемы сопровождения больших систем, основанных на файлах, привели в конце 60-х годов к появлению СУБД. В основе СУБД лежала простая идея: изъять из программ определение структуры содержимого файла и хранить это определение вместе с другой информацией в базе данных. Рис. 4.1. Приложение для начисления зарплаты
Иерархические базы данных Одной из наиболее важных сфер применения первых СУБД было планирование производства в компаниях, занимающихся выпуском продукции Например, если автомобильная компания хотела выпустить 10000 машин одной модели и 5000 машин другой модели, ей необходимо было знать, сколько деталей следует заказать у своих поставщиков. Чтобы ответить на этот вопрос, необходимо выяснить, из каких частей состоит изделие, затем определить, из каких деталей состоят эти части и т.д. Например, машина состоит из двигателя, корпуса и ходовой части; двигатель состоит из клапанов, цилиндров, свеч и т.д. Список составных частей изделия по своей природе является иерархической структурой. Для хранения данных, имеющих такую структуру, была разработана иерархическая модель данных, которую иллюстрирует рис. 4.2. В этой модели каждая запись базы данных представляла конкретную деталь. Между записями существовали отношения предок/потомок, связывающие каждую часть с деталями, входящими в нее. Получая доступ к информации, содержащейся в базе данных, программа могла ■ найти конкретную деталь (левую дверь) по ее номеру; ■ перейти "вниз" к первому потомку (ручка двери); ■ перейти "вверх" к предку (корпус); ■ перейти "в сторону" к другому потомку (правая дверь). Рис.4.2. Иерархическая база данных, содержащих информацию о составных частях Таким образом, для выборки информации из иерархической базы данных требовалось перемещаться по записям, за один раз переходя на одну запись вверх, вниз или в сторону. Одной из наиболее популярных иерархических СУБД была Information Management System (IMS) компании IBM, появившаяся в 1968 году. Ниже перечислены достоинства IMS и реализованной в ней иерархической модели. ■ Простота модели. Принцип построения баз данных в IMS был легок для понимания. Иерархия базы данных напоминала структуру компании или генеалогическое дерево. ■ Использование отношений предок/потомок. СУБД IMS позволяла легко представлять отношения предок/потомок, например: "А является частью В" или "А принадлежит В". ■ Быстродействие. В СУБД IMS отношения предок/потомок были реализованы в виде физических указателей из одной записи на другую, вследствие чего перемещение по базе данных происходило быстро. Поскольку структура данных в этой СУБД отличалась простотой, IMS могла размещать записи предков и потомков на диске рядом друг с другом, что позволяло свести к минимуму количество операций чтения-записи. СУБД IMS все еще является одной из наиболее распространенных СУБД длямэйнфреймов компании IBM. Обладающая очень высокой производительностью, она идеально подходит для приложений, связанных с обработкой большого числа транзакций: управление банкоматами, проверка номеров кредитных карточек и т.п. Хотя за последнее десятилетие производительность реляционных баз данных на порядок возросла, столь же сильно увеличились и требования к производительности приложений указанного выше типа, поэтому роль СУБД IMS по-прежнему велика.
Сетевые базы данных Если структура данных оказывалась сложнее, чем традиционная иерархия, простота организации иерархической базы данных становилась ее недостатком. Например, в базе данных для хранения заказов один заказ мог участвовать в трех различных отношениях предок/потомок, связывающих заказ с клиентом, разместившим его, со служащим, принявшим его, и с заказанным товаром, что иллюстрирует рис. 4.3. Такие структуры данных не соответствовали строгой иерархии IMS.
Рис.4.3 Множественные отношения предок/потомок В связи с этим для таких приложений, как обработка заказов, была разработана новая, сетевая модель данных. Она являлась улучшенной иерархической моделью, в которой одна запись могла участвовать в нескольких отношениях предок/потомок (рис. 4.4). В сетевой модели такие отношения назывались множествами. В 1971 году на конференции по языкам обработки данных (Conference on Data Systems Languages — CODASYL) был опубликован официальный стандарт сетевых баз данных, который известен как модель CODASYL. Компания IBM не стала разрабатывать собственную сетевую СУБД и вместо этого продолжала наращивать возможности IMS. Но в 70-х годах независимые производители программного обеспечения реализовали сетевую модель в таких продуктах, как IDMS компании Cullinet, Total компании Cincom и СУБД Adabas, которые приобрели большую популярность. С точки зрения программиста, доступ к сетевой базе данных был очень похож на доступ к иерархической базе данных. Прикладная программа могла: ■ найти конкретную запись предка по ключу (например, номер клиента); ■ перейти к первому потомку в конкретном множестве (первый заказ, размещенный клиентом); ■ перейти в сторону от одного потомка к другому в конкретном множестве (следующий заказ, сделанный этим же клиентом); ■ перейти вверх от потомка к его предку в другом множестве (служащий, принявший заказ).
И опять программисту приходилось искать информацию в базе данных, последовательно перебирая записи, однако указывая при этом не только направление, но и требуемое отношение. Рис.4.4. Сетевая база данных, содержащая информацию о заказах Сетевые базы данных обладали рядом преимуществ: ■ Гибкость. Множественные отношения предок/потомок позволяли сетевой базе данных хранить информацию, структура которой была сложнее простой иерархии. ■ Стандартизация. Появление стандарта CODASYL увеличило популярность сетевой модели, а такие поставщики мини-компьютеров, как Digital Equipment Corporation и Data General, реализовали сетевые СУБД. ■ Быстродействие. Вопреки своей сложности, сетевые базы данных достигали быстродействия, сравнимого с быстродействием иерархических баз данных. Множества были представлены указателями физических записей на диске, и в некоторых системах администратор мог задать кластеризацию данных на основе множества отношений. Конечно, у сетевых баз данных имелись недостатки. Подобно своим иерархическим предкам, сетевые базы данных были очень "жесткими". Наборы отношений и структуру записей приходилось задавать наперед. Изменение структуры базы данных обычно означало перестройку последней. Как иерархическая, так и сетевая база данных были инструментами программистов. Чтобы получить ответ на вопрос "какой товар наиболее часто заказывает компания X?", программисту приходилось писать программу для навигации по базе данных. Реализация пользовательских запросов часто затягивалась на недели и месяцы, и к моменту появления программы информация, которую она предоставляла, часто оказывалась бесполезной. Недостатки иерархической и сетевой моделей привели к повышению интереса к новой, реляционной модели данных, впервые описанной доктором Коддом в 1970 году. Поначалу она представляла лишь академический интерес. Сетевые базы данных продолжали оставаться важной технологией на протяжении 70-х и в начале 80-х годов, особенно в мини-компьютерных системах, переживавших пик популярности. Но в середине 80-х годов начался взлет реляционной модели. В первой половине 90-х годов сетевые базы данных утратили популярность, и сегодня не играют значительной роли на рынке баз данных. Реляционная модель данных Реляционная модель была попыткой упростить структуру базы данных. В ней отсутствовали явные указатели на предков и потомков, а все данные были представлены в виде простых таблиц, разбитых на строки и столбцы. На рис. 4.5 изображена реляционная версия рассмотренной выше сетевой базы данных, содержащей информацию о заказах.
Таблица PRODUCTS Таблица ORDERS
Таблица CUSTOMERS
Рис.4.5. Реляционная база данных, содержащая информацию о заказах К сожалению, практическое определение понятия "реляционная база данных" оказалось гораздо более расплывчатым, чем точное математическое определение, данное этому термину доктором Коддом в 1970 году. В первых реляционных СУБД не были реализованы некоторые из ключевых частей модели Кодда, и этот пробел был восполнен только впоследствии. По мере роста популярности реляционной концепции реляционными стали называться многие СУБД, которые на деле таковыми не являлись. В ответ на неправильное использование термина "реляционный" доктор Кодд в 1985 году написал статью, где сформулировал 12 правил, которым должна удовлетворять любая база данных, претендующая на звание реляционной. С тех пор двенадцать правил Кодда считаются определением реляционной базы данных. Однако мы начнем с более простого определения:
Реляционной называется база данных, в которой все данные, доступные пользователю, организованы в виде таблиц, а все операции над данными сводятся к операциям над этими таблицами.
Приведенное определение не оставляет места встроенным указателям, имеющимся в иерархических и сетевых СУБД. Реляционная СУБД способна реализовать отношения предок/потомок, однако эти отношения представлены исключительно значениями данных, содержащихся в таблицах.
Использование триггеров
В этом разделе мы рассмотрим механизм триггеров, предлагаемый для инициирования необходимых действий при наступлении определенных событий. Мы рассмотрим возможности стандарта SQL по описанию триггеров, а затем рассмотрим дополнительные его возможности, предлагаемые в Oracle. Что такое триггер базы данных? Существует такое понятие, как событийно управляемые действия. Смысл его заключается в том, что в рассматриваемой предметной области фиксируется множество правил вида «событие -> действие». Интерпретирующая система отслеживает все происходящие в предметной области события, и при наступлении одного из тех, которые приведены в списке, инициируется соответствующее ему действие. В этом случае детерминированная последовательность выполняемых действий отсутствует. Управление такой системой заключается в том, чтобы находиться в состоянии ожидания событий и активировать соответствующие происшедшим событиям действия. Примером может служить следующее описание порядка работы магазина: - в 8.00, что соответствует открытию магазина, сбросить в нулевое состояние счета всех кассовых аппаратов; - в 9.00 подготовить обобщающий отчет о продажах за прошлый день; - при поступлении из любого кассового аппарата информации об оформленной покупке занести эти данные в базу; - в 18.00, что соответствует закрытию магазина, произвести сводную ревизию всех покупок за день. В этом примере три события привязаны к временным вехам и одно к операции покупки/продажи. Нечто подобное существует и в базах данных. Здесь события привязываются к изменению состояния системы баз данных, а действия представляют собой совокупность специальным образом оформленных процедур SQL. Триггер базы данных — это процедура, которая хранится в виде объекта базы данных и выполнение которой неявно инициируется при наступлении определенных событий. Как правило, такими событиями являются изменения в состоянии базы данных, которые инициируются предложениями INSERT, UPDATE или DELETE по отношению к соответствующей таблице базы данных. Однако в общем случае события, активирующие триггеры, могут быть связаны не только с базой данных. Триггеры расширяют стандартные возможности СУБД по управлению базами данных. Список возможных вариантов использования триггеров приводится в конце раздела. Впервые триггеры были введены в стандарт только в 1999 году (SQL3). К этому времени триггеры уже около 20-ти лет существовали в развитых СУБД. Стандарт SQL обобщил те возможности, которые авторы стандарта посчитали полезными. В связи с этим ситуация в настоящий момент такова: общая концепция описания и использования триггеров, поддерживаемая в СУБД, совпадает с предложениями стандарта SQL, однако практически все СУБД имеют свои специфические особенности. В связи с этим мы сначала опишем триггеры согласно стандарту SQL, а затем приведем их специфические особенности в Oracle. ПРИМЕЧАНИЕ Далее при демонстрации примеров функционирования триггеров мы будем использовать их определение в синтаксисе Oracle. Это прежде всего касается тела триггера.
Составляющие триггера Синтаксис определения триггеров в стандарте SQL следующий:
CREATE TRIGGER имя_триггера время_инициирования_триггера событие_триггера ON имя_таблицы [REFERENCING список_переменных_или_таблиц_перехода] [уровень_триггера] [условие_триггера] действие_триггера
Как видим, описание триггера состоит из многих составляющих, которые мы далее и рассмотрим.
Заголовок триггера Заголовок триггера предназначен для идентификации триггера. Он имеет следующий синтаксис: CREATE TRIGGER имя_триггера Триггер — это именованный объект схемы базы данных. Имя триггера должно быть уникальным среди имен триггеров схемы базы данных.
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-05-27; просмотров: 92; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.218.176 (0.008 с.) |