Запросы на модификацию данных, или управляющие запросы
Тема 4 Эксплуатация баз данных
Транзитивная функциональная зависимость
Полная функциональная зависимость
Функциональная зависимость
В отношении R атрибут Y функционально зависит от атрибута X (X и Y могут быть составными) в том и только в том случае, если каждому значению X соответствует в точности одно значение Y: XðY.
Функциональная зависимость Y от X называется полной, если атрибут Y не зависит функционально от любого подмножества X.
Функциональная зависимость Y от X называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости X ðZ и Z ð Y и отсутствует функциональная зависимость ZðX.
Процесс нормализации
Первая нормальная форма
Отношение удовлетворяет условиям первой нормальной формы, если удовлетворяются все перечисленные ранее фундаментальные свойства отношений и введен ключ:
1.Все атрибуты атомарны;
2.Все атрибуты функционально зависят от ключа;
3.Отсутствие упорядоченности кортежей;
4.Отсутствие упорядоченности атрибутов.
Вторая нормальная форма
Отношение R находится во второй нормальной форме (2НФ) в том и только в том случае, когда:
1.отношение R находится в 1НФ;
2.каждый неключевой атрибут функционально полно зависит от ключа.
Третья нормальная форма
Отношение R находится в третьей нормальной форме (3НФ) в том и только в том случае, если:
1) R находится в 2НФ
2) Каждый неключевой атрибут из R не может транзитивно зависеть от ключа
Условие 2) можно формулировать иначе: любой неключевой атрибут не может функционально зависеть от другого неключевого атрибута.
Лекция 7.
Запросы к базам данных
СУБД предоставляет широкие возможности работы с информацией в технологии баз данных. Не только информационные потребности порождают желание получить ответы на вопросы по базе данных, а сама осознанная, усвоенная технология получения таких ответов порождает новые информационные потребности.
Что же такое запрос? Запрос - сформулированный особым образом вопрос к базе данных. С помощью запросов выполняются операции по извлечению, созданию, изменению или удалению данных в базе данных. Существуют два основных типа запросов.
1) запросы на выборку;
Запросами на выборку называют запросы, выполняющие извлечение данных, предназначенных для отображения, с помощью инструкции SQL SELECT или интерактивных средств СУБД.
Управляющими запросами называют сохраненные процедуры, выполняющие вставку, изменение или удаление данных с помощью инструкций SQL или интерактивных средств СУБД.
Запросы на выборку никак не влияют на сохраняемую в базе коллекцию данных. Модифицирующие запросы вносят новые данные, удаляют или изменяют данные, содержащиеся в БД.
Запрос на выборку
является наиболее часто используемым типом запроса. Запросы этого типа получают данные из одной или нескольких таблиц и отображают их в виде таблицы, записи в которой можно обновлять (с некоторыми ограничениями).
Частные случаи:
1) Запросы на выборку можно использовать для итоговых операций: группировки записей и вычисления сумм, средних значений, подсчета записей и нахождения других типов итоговых значений.
2) Запрос с параметрами — это запрос, при выполнении отображающий в собственном диалоговом окне приглашение ввести данные, например условие для выбора записей или значение, которое требуется вставить в поле. Запросы с параметрами также удобно использовать в качестве основы для форм, отчетов и страниц доступа к данным.
3) Запрос на вычисления – запрос, который позволяет получить новые столбцы с помощью вычислений с использованием других полей, операторов, функций, констант и арифметических и логических операций.
4) Многотабличный запрос с вычислениями в условиях отбора
Запросы на изменение
Запрос на добавление.
Запрос на обновление записей
Запрос на удаление.
Запрос создание таблицы.
Термин “запрос по образцу”. Это определение используется для того, чтобы обозначить способ создания запроса, сводящийся к заполнению для запроса так называемого образца, содержащего критерии для выборки. Конструктор запросов предлагает пользователю заполнить специальный бланк, расположенный в нижней части окна Конструктора запросов. В верхней части этого окна располагаются в виде схемы те таблицы базы данных, на основе данных из полей которых берутся сведения для ответа на вопрос. Заполненный бланк называют образцом. Запрос на выборку является наиболее распространенным типом запроса. В таком запросе по условиям, задаваемым пользователем, извлекаются данные из одной или нескольких таблиц, и результаты отображаются в режиме таблицы. Результаты запроса на выборку не сохраняются СУБД в виде новых таблиц, а всякий раз выполняются вновь, сохраняется только “инструкция” в виде заполненного бланка запроса. Этим достигается актуальность результатов запроса: используются последние данные, сохраненные в базе данных.
Лекция 8.
Тема 5 СУБД в архитектуре "клиент-сервер"
Архитектура локальной сети "клиент-сервер"
Применительно к системам баз данных архитектура "клиент-сервер" интересна и актуальна главным образом потому, что обеспечивает простое и относительно дешевое решение проблемы коллективного доступа к базам данных в локальной сети. В некотором роде системы баз данных, основанные на архитектуре "клиент-сервер", являются приближением к распределенным системам баз данных, конечно, существенно упрощенным приближением, но зато не требующим решения основного набора проблем действительно распределенных баз данных.
Открытые системы
Реальное распространение архитектуры "клиент-сервер" стало возможным благодаря развитию и широкому внедрению в практику концепции открытых систем. Основным смыслом подхода открытых систем является упрощение комплексирования вычислительных систем за счет международной и национальной стандартизации аппаратных и программных интерфейсов. Главным для пользователя является независимость от конкретного поставщика. Практической опорой системных и прикладных программных средств открытых систем является стандартизованная операционная система. В настоящее время такой системой является UNIX. Фирмам-поставщикам различных вариантов ОС UNIX удалось придти к соглашению об основных стандартах этой операционной системы. Сейчас все распространенные версии UNIX в основном совместимы по части интерфейсов, предоставляемых прикладным (а в большинстве случаев и системным) программистам. Как кажется, несмотря на появление претендующей на стандарт операционной системы Windows NT, именно UNIX останется основой открытых систем в ближайшие годы.
Технологии и стандарты открытых систем обеспечивают возможность производства системных и прикладных программных средств со свойствами мобильности (portability) и интероперабельности (interoperability). Свойство мобильности означает простоту переноса программной системы в широком спектре аппаратно-программных средств, соответствующих стандартам. Интероперабельность означает упрощения комплексирования новых программных систем на основе использования готовых компонентов ПО со стандартными интерфейсами.
Преимуществом для пользователей является то, что они могут постепенно заменять компоненты системы на более совершенные, не утрачивая работоспособности системы. В частности, в этом кроется решение проблемы постепенного наращивания вычислительных, информационных и других мощностей компьютерной системы.
Клиенты и серверы локальных сетей
В основе широкого распространения локальных сетей компьютеров лежит известная идея разделения ресурсов. Высокая пропускная способность локальных сетей обеспечивает эффективный доступ из одного узла локальной сети к ресурсам, находящимся в других узлах.
Развитие этой идеи приводит к функциональному выделению компонентов сети: разумно иметь не только доступ к ресурсами удаленного компьютера, но также получать от этого компьютера некоторый сервис, который специфичен для ресурсов данного рода и программные средства для обеспечения которого нецелесообразно дублировать в нескольких узлах. Так мы приходим к различению рабочих станций и серверов локальной сети.
Рабочая станция предназначена для непосредственной работы пользователя или категории пользователей и обладает ресурсами, соответствующими локальным потребностям данного пользователя.
Сервер локальной сети должен обладать ресурсами, соответствующими его функциональному назначению и потребностям сети. В связи с ориентацией на подход открытых систем, правильнее говорить о логических серверах (имея в виду набор ресурсов и программных средств), которые располагаются не обязательно на разных компьютерах. Если по соображениям эффективности сервер целесообразно переместить на отдельный компьютер, то это можно проделать.
Примерами сервером могут служить:
1. сервер телекоммуникаций, обеспечивающий услуги по связи данной локальной сети с внешним миром;
2. вычислительный сервер, дающий возможность производить вычисления, которые невозможно выполнить на рабочих станциях;
3. дисковый сервер, обладающий расширенными ресурсами внешней памяти и предоставляющий их в использование рабочим станциями и, возможно, другим серверам;
4. файловый сервер, поддерживающий общее хранилище файлов для всех рабочих станций;
5. сервер баз данных фактически обычная СУБД, принимающая запросы по локальной сети и возвращающая результаты.
Сервер локальной сети предоставляет ресурсы (услуги) рабочим станциям и/или другим серверам.
Системная архитектура "клиент-сервер"
Чтобы прикладная программа, выполняющаяся на рабочей станции, могла запросить услугу у некоторого сервера, как минимум требуется некоторый интерфейс (ПО), поддерживающий такого рода взаимодействие. Из этого вытекают основные принципы системной архитектуры "клиент-сервер".
Система разбивается на две части, которые могут выполняться в разных узлах сети, - клиентскую и серверную части. Прикладная программа или конечный пользователь взаимодействуют с клиентской частью системы, которая в простейшем случае обеспечивает просто надсетевой интерфейс. Клиентская часть системы при потребности обращается по сети к серверной части. Заметим, что в развитых системах сетевое обращение к серверной части может и не понадобиться, если система может предугадывать потребности пользователя, и в клиентской части содержатся данные, способные удовлетворить его следующий запрос.
Интерфейс серверной части определен и фиксирован. Поэтому возможно создание новых клиентских частей существующей системы (пример интер-операбельности на системном уровне).
Основной проблемой систем, основанных на архитектуре "клиент-сервер", является то, что в соответствии с концепцией открытых систем от них требуется мобильность в как можно более широком классе аппаратно-программных решений открытых систем. Даже если ограничиться UNIX-ориентированными локальными сетями, в разных сетях применяется разная аппаратура и протоколы связи. Попытки создания систем, поддерживающих все возможные протоколы, приводит к их перегрузке сетевыми деталями в ущерб функциональности.
Еще более сложный аспект этой проблемы связан с возможностью использования разных представлений данных в разных узлах неоднородной локальной сети. В разных компьютерах может существовать различная адресация, представление чисел, кодировка символов и т.д. Это особенно существенно для серверов высокого уровня: телекоммуникационных, вычислительных, баз данных.
Общим решением проблемы мобильности систем, основанных на архитектуре "клиент-сервер" является опора на программные пакеты, реализующие протоколы удаленного вызова процедур (RPC - Remote Procedure Call). При использовании таких средств обращение к сервису в удаленном узле выглядит как обычный вызов процедуры. Средства RPC, в которых, естественно, содержится вся информация о специфике аппаратуры локальной сети и сетевых протоколов, переводит вызов в последовательность сетевых взаимодействий. Тем самым, специфика сетевой среды и протоколов скрыта от прикладного программиста.
При вызове удаленной процедуры программы RPC производят преобразование форматов данных клиента в промежуточные машинно-независимые форматы и затем преобразование в форматы данных сервера. При передаче ответных параметров производятся аналогичные преобразования.
Если система реализована на основе стандартного пакета RPC, она может быть легко перенесена в любую открытую среду.
СУБД архитектуры "клиент-сервер"
Термин "сервер баз данных" обычно используют для обозначения всей СУБД, основанной на архитектуре "клиент-сервер", включая и серверную, и клиентскую части. Такие системы предназначены для хранения и обеспечения доступа к базам данных.
Хотя обычно одна база данных целиком хранится в одном узле сети и поддерживается одним сервером, серверы баз данных представляют собой простое и дешевое приближение к распределенным базам данных, поскольку общая база данных доступна для всех пользователей локальной сети.
Принципы взаимодействия между клиентскими и серверными частями
Доступ к базе данных от прикладной программы или пользователя производится путем обращения к клиентской части системы. В качестве основного интерфейса между клиентской и серверной частями выступает язык баз данных SQL.
Это язык по сути дела представляет собой текущий стандарт интерфейса СУБД в открытых системах. Собирательное название SQL-сервер относится ко всем серверам баз данных, основанных на SQL. Соблюдая предосторожности при программировании, некоторые из которых были рассмотрены на предыдущих лекциях, можно создавать прикладные информационные системы, мобильные в классе SQL-серверов.
Серверы баз данных, интерфейс которых основан исключительно на языке SQL, обладают своими преимуществами и своими недостатками. Очевидное преимущество - стандартность интерфейса. В пределе, хотя пока это не совсем так, клиентские части любой SQL-ориентированной СУБД могли бы работать с любым SQL-сервером вне зависимости от того, кто его произвел.
Недостаток тоже довольно очевиден. При таком высоком уровне интерфейса между клиентской и серверной частями системы на стороне клиента работает слишком мало программ СУБД. Это нормально, если на стороне клиента используется маломощная рабочая станция. Но если клиентский компьютер обладает достаточной мощностью, то часто возникает желание возложить на него больше функций управления базами данных, разгрузив сервер, который является узким местом всей системы.
Одним из перспективных направлений СУБД является гибкое конфигурирование системы, при котором распределение функций между клиентской и пользовательской частями СУБД определяется при установке системы.
Преимущества протоколов удаленного вызова процедур
Упоминавшиеся выше протоколы удаленного вызова процедур особенно важны в системах управления базами данных, основанных на архитектуре "клиент-сервер".
Во-первых, использование механизма удаленных процедур позволяет действительно перераспределять функции между клиентской и серверной частями системы, поскольку в тексте программы удаленный вызов процедуры ничем не отличается от удаленного вызова, и следовательно, теоретически любой компонент системы может располагаться и на стороне сервера, и на стороне клиента.
Во-вторых, механизм удаленного вызова скрывает различия между взаимодействующими компьютерами. Физически неоднородная локальная сеть компьютеров приводится к логически однородной сети взаимодействующих программных компонентов. В результате пользователи не обязаны серьезно заботиться о разовой закупке совместимых серверов и рабочих станций.
Типичное разделение функций между клиентами и серверами
В типичном на сегодняшний день случае на стороне клиента СУБД работает только такое программное обеспечение, которое не имеет непосредственного доступа к базам данных, а обращается для этого к серверу с использованием языка SQL.
В некоторых случаях хотелось бы включить в состав клиентской части системы некоторые функции для работы с "локальным кэшем" базы данных, т.е. с той ее частью, которая интенсивно используется клиентской прикладной программой. В современной технологии это можно сделать только путем формального создания на стороне клиента локальной копии сервера базы данных и рассмотрения всей системы как набора взаимодействующих серверов.
С другой стороны, иногда хотелось бы перенести большую часть прикладной системы на сторону сервера, если разница в мощности клиентских рабочих станций и сервера чересчур велика. В общем-то при использовании RPC это сделать нетрудно. Но требуется, чтобы базовое программное обеспечение сервера действительно позволяло это. В частности, при использовании ОС UNIX проблемы практически не возникают.
Требования к аппаратным возможностям и базовому по клиентов и серверов
Из предыдущих рассуждений видно, что требования к аппаратуре и программному обеспечению клиентских и серверных компьютеров различаются в зависимости от вида использования системы.
Если разделение между клиентом и сервером достаточно жесткое (как в большинстве современных СУБД), то пользователям, работающим на рабочих станциях или персональных компьютерах, абсолютно все равно, какая аппаратура и операционная система работают на сервере, лишь бы он справлялся с возникающим потоком запросов.
Но если могут возникнуть потребности перераспределения функций между клиентом и сервером, то уже совсем не все равно, какие операционные системы используются.
Основы современных баз данных
С.Д. Кузнецов, информационно-аналитические материалы
Центра Информационных Технологий