
- •Лекции по курсу «Базы данных» для студентов факультета вычислительной математики и кибернетики кгу
- •Системы управления базами данных, их состав и назначение. Файловые и клиент-серверные субд.
- •2. Типы базы данных. Реляционные, иерархические, сетевые, объектно-ориентированные базы данных.
- •Основные понятия теории баз данных. Поиск данных и пользовательские запросы.
- •4. Проектирование предметной области. Объекты и атрибуты предметной области. Связи между объектами типа 1:1, 1:m, m:n.
- •Первичные ключи и индексы
- •Реляционные отношения между таблицами Отношение один-ко-многим
- •Отношение один-к-одному
- •Отношение многие-ко-многим
- •Оператор переименования атрибутов.
- •Теоретико-множественные операторы:
- •Объединение
- •Пересечение
- •3. Вычитание
- •4. Декартово произведение
- •Специальные реляционные операторы
- •5. Выборка (ограничение, селекция)
- •Проекция
- •6. Соединение
- •7. Деление
- •Примеры использования реляционных операторов
- •Кросс-таблицы.
- •Ключи отношений. Их роль и использование в базах данных.
- •Связи между отношениями. Внешние ключи. Проблема целостности внешних ключей.
- •Функциональные зависимости. Аксиоматическая система функциональных зависимостей. Теорема полноты.
- •1. Аксиоматика функциональных зависимостей Армстронга.
- •Покрытия функциональных зависимостей. Структура неизбыточных покрытий.
- •Нормальные формы баз данных. Первая, вторая и третья нормальные формы. Нормальная форма Бойса- Кодда.
- •Вторая Нормальная Форма.
- •Отношение сотрудники_отделы
- •Отношение проекты
- •Отношение задания
- •3 Нормальная форма.
- •Отношение сотрудники
- •Отношение отделы
- •Нормализация баз данных. Алгоритм приведения к 3-й нормальной форме с помощью кольцевых зависимостей.
- •Метод «Entity-Relationship». Проектирование структуры баз данных с помощью er-диаграмм. Пример.
- •Физическая организация баз данных.
- •2. Блочный поиск.
- •3. Двоичный поиск.
- •4. Поиск в индексно-последовательном файле.
- •6. Поиск в сбалансированном дереве.
- •7. Перемешивание.
- •8. Комбинация вышеперечисленных способов.
- •Организация баз данных с помощью хеширования. Влияние на эффективность хеширования размеров блока, плотности заполнения и выбора алгоритма хеширования.
- •2. Деление.
- •3. Сдвиг разрядов.
- •4. Преобразование системы исчисления.
- •Язык sql. Команды create, select, insert, alter, update, drop.
- •Простая выборка
- •Использование операторов сравнения
- •Использование in
- •Использование like
- •Выборка с упорядочением
- •Применение агрегатных функций sum, max, min, average в предложении select.
- •Функции без использования фразы group by
- •Фраза group by
- •Использование фразы having
- •19. Организация сложных запросов с помощью команды select.
- •Декартово произведение таблиц
- •Соединение таблицы со своей копией
- •Простые вложенные подзапросы
- •Объединение (union)
- •Организация клиент–серверных бд. Модели технологий «клиент–сервер».
- •Технологии доступа к данным. Система драйверов odbc. Источники данных. Создание dsn-файла.
- •Модели безопасность данных. Мандатный и дискреционный подход к обеспечению безопасности данных. Передача и отзыв привилегий пользователей с помощью предложения grant.
- •26.Безопасность баз данных. Средства защиты бд access.
- •31. Использование внешних данных в Access. Создание страниц доступа к данным и загрузка внешних баз данных. Выполнение sql-запросов к серверу ms sql Server.
- •I. Создание html-страницы доступа к данным
- •II. Загрузка в Access базы данных c сервера и работа с ней.
- •III. Выполнение в Access запросов к внешним таблицам, хранящимся на ms sql Server.
- •Совместная работа Access и ms sql Server, работа с удаленными данными на сервере. Использование утилиты Query Analyzer.
- •Работа с внешними данными с помощью технологии odbc
- •Команды Transact-sql
- •Создание представлений
- •Создание триггеров
- •37. Raid массивы и уровни их организации.
Совместная работа Access и ms sql Server, работа с удаленными данными на сервере. Использование утилиты Query Analyzer.
До сих пор мы вели речь о приложениях, работающих на одном, локальном компьютере. Если речь шла о компьютерной сети, то БД могла располагаться на файл-сервере или нескольких файл-серверах, в качестве которого может использоваться либо специально выделенный компьютер, либо одна из объединенных в сеть наиболее мощных ПЭВМ. Функции файл-сервера заключаются в основном в хранении БД и обеспечении доступа к ним пользователей, работающих на различных компьютерах. Эти функции обеспечиваются, как правило, той же СУБД, которая работает и на компьютерах пользователей.
При небольших объемах данных эта схема вполне удовлетворяет всем современным требованиям, но с увеличением числа компьютеров в сети или ростом БД начинают возникать проблемы, связанные с резким падением производительности. Это связано с увеличением объема данных, передаваемых по сети, так как вся обработка производится на компьютере пользователя. Если пользователю требуется пара строк из таблицы объемом в сотни тысяч записей, то сначала вся таблица с файл-сервера передается на его компьютер, а затем СУБД отбирает нужные записи. В этом случае длительные перерывы в работе можно сильно сократить, перейдя на технологию клиент-сервер.
Технология клиент-сервер разделяет приложение на две части, используя лучшие качества обеих сторон. Front-end (клиентская часть) обеспечивает интерактивный, легкий в использовании, обычно графический интерфейс - находится на компьютере пользователя. Back-end (сервер) обеспечивает управление данными, разделение информации, изощренное администрирование и безопасность - находится на специально выделенных компьютерах или даже мейн-фреймах.
При технологии клиент-сервер клиентское приложение (front-end) формирует запрос к серверу БД (back-end), на котором выполняются все команды. Результаты команд посылаются затем клиенту для использования и просмотра.
Visual FoxPro, Visual Basic и Access обеспечивают средства для создания клиентских частей в приложениях клиент-сервер, которые сочетают мощность, скорость, графический интерфейс, продвинутые средства построения запросов и отчетов.
MS SQL Server является на настоящий момент одним из наиболее мощных серверов БД.
Работа с внешними данными с помощью технологии odbc
Важнейшим этапом в построении приложения клиент-сервер является установка связи клиентского приложения с источником данных, находящимся на сервере БД. В настоящий момент различные средства разработки используют несколько технологий обеспечения доступа к данным. Общепризнанным стандартом, как мы уже писали ранее, является технология ODBC.
В этом параграфе мы рассмотрим основы применения технологии ODBC для установки связи с MS SQL Server.
Открытый доступ к данным - Open Database Connectivity (ODBC) - это общее определение языка и набор протоколов. ODBC позволяет клиентскому приложению, написанному, например, на Access или Visual FoxPro, работать с командами и функциями, поддерживаемыми сервером.
В качестве сервера может выступать любой сервер БД, имеющий драйвер ODBC (MS SQL Server, Oracle и т. д.), или даже настольная база данных, ведь часто может возникнуть необходимость в совместной обработке данных, хранящихся в формате Paradox, приложениями, написанными и на FoxPro и на Delphi. ODBC находится как бы посредине между приложением, использующем данные, и самими данными, хранящимися в формате, которые мы не можем обработать напрямую в приложении, и используется как средство коммуникации между двумя front-end и back-end сторонами.
Для использования ODBC с целью получения данных в сети вам необходимы средства коммуникации между машиной, на которой находятся данные, и станцией, где они будут просматриваться, модифицироваться и, возможно, пополняться. Это специальная программа, которая называется Администратор ODBC на рабочей станции, и драйверы, которые могут работать как с приложением, так и с данными на сервере. Технология ODBC обеспечивает возможность хранить данные на разных серверах БД, причем не обязательно в одном формате. В теории подразумевается, что для этого не надо переписывать ни одной строчки в вашем пользовательском приложении, работающем на клиентской ПЭВМ. На практике так бывает не всегда, из-за различий в структуре различных уровней построения ODBC.
ODBC определяет минимальный набор SQL команд и набор функций вызова с двумя уровнями расширений. Технология ODBC включает также механизм для вызова специфических для сервера возможностей, которые не включены в стандарт ODBC. В целом, это дает возможность разработчику решать самостоятельно, какой уровень функциональности ему достаточен для доступа к серверу баз данных. Разработчик выбирает между наименьшей обеспечиваемой ODBC функциональностью или пытается использовать все возможности сервера.
С минимальным набором функциональности ODBC разработчик может установить связь с источником данных через стандартный интерфейс загрузки, выполнять SQL команды, выбирать данные и получать сообщения об ошибках, если предпринятое действие закончилось неудачей.
С расширенной функциональностью ODBC разработчик может использовать дополнительные возможности стандарта SQL и функции ODBC, чтобы расширить возможности управления внешней СУБД. Расширения ODBC включают в себя такие дополнительные возможности, как асинхронное выполнение запросов, нестандартные в среде приложения типы данных (Timestamp, Binary), прокручиваемые курсоры, SQL команды для скалярных функций, внешние объединения, хранимые процедуры и способность использовать SQL расширения, характерные для конкретного сервера БД.
Если вы используете ODBC драйверы для MS SQL Server, разработанные Microsoft, то вам повезло, так как их расширения предоставляют практически все возможности для полноценной работы с сервером. Если же вы работаете с сервером, отличным от MS SQL Server, или с этим сервером, но драйвер ODBC не разработан фирмой Microsoft, то у вас могут возникнуть трудности ввиду не полной поддержки функциональности сервера драйвером. Если у вас есть сомнение в функциональности драйвера, то для получения полной и содержательной информации о нем используйте функции SQLGetInfo(), SQLGetFunction() и SQLGetStmtOption(). Более подробно о них мы расскажем ниже.
Одна из главных целей создания ODBC - скрыть сложность соединения с сервером и по мере возможности автоматизировать выполнение многочисленных процедур, связанных с получением данных. ODBC требует от разработчика только имени источника данных, при этом функции драйвера, адреса серверов, сети и шлюзы скрыты от пользователя. Возможно, вам как разработчикам захочется знать все тонкости работы ODBC, но учтите, прямая работа с функциями драйвера требует более сложного программирования, что не всегда сопровождается выигрышем в скорости.
Описание основных компонентов ODBC приведено в табл. 8.1.
Таблица 8.1. Основные компоненты ODBC
Компоненты |
Описание |
Приложение |
Использует ODBC для связи с источником данных, отправления и получения данных. Приложение может использовать функцию SQLConnect(), чтобы передать указатель соединения, имя источника данных, идентификатор пользователя и пароль Диспетчеру драйверов. |
Диспетчер драйверов |
Поддерживает связь между приложением и источником данных, обеспечивая информацией приложение и загружая драйверы динамически, по мере необходимости. ODBC позволяет приложению взаимодействовать с источниками данных разных типов посредством драйверов СУБД, используя Администратор ODBC для установки соединения. Диспетчер драйверов и сами драйверы разработаны как библиотеки DLL. Диспетчер драйверов загружает нужную библиотеку, соединяется с сервером с помощью драйвера, который на самом деле и выполняет все вызовы функций из приложения. |
Драйвер |
Выполняет все вызовы ODBC функций, управляет всеми взаимодействиями между приложением и сервером, переводит SQL выражения на синтаксис источника данных. Драйверы обычно поставляются продавцом сервера БД и имеет смысл получить самую последнюю версию, в которой, вероятнее всего, будет наименьшее количество ошибок. Драйвер перехватывает все ошибки программ, переводя их в стандартные ошибки ODBC. Драйвер позволяет узнать информацию об объектах в базе данных, таких как таблицы, поля, индексы и т. п. |
Сервер БД |
Хранит и выводит данные в ответ на запросы со стороны ODBC драйвера. Сервер по запросу возвращает данные или код ошибки, которые передаются в приложение. |
Первые разработчики ODBC столкнулись с проблемой - какой из диалектов SQL поддерживать. Если есть сотни SQL продуктов на рынке, то есть и сотни диалектов SQL. В итоге, чтобы никого не обидеть, разработчики ODBC создали еще один диалект, который называется "ODBC SQL", и компонент, который позволяет программам переводить их собственные диалекты на универсальный диалект и наоборот.
На настоящий момент разработано очень много технологий для доступа к внешним данным. В них немудрено запутаться, и, чтобы этого не произошло, - ни слова о том, что не имеет отношения к рассматриваемым средствам разработки. Кстати, среди них СУБД Access имеет наибольшее число способов взаимодействия с MS SQL Server, поэтому как пример мы хотим кратко описать и перечислить их (см. также рис. 8.1):
Использование связанных таблиц. Всю работу за вас выполняет процессор баз данных Microsoft Access. Самый надежный в плане программирования способ - он не требует вообще никаких дополнительных драйверов. Вы можете заниматься только обработкой данных, связывать таблицы на сервере с локальными таблицами, создавать запросы.
Использование SQL pass-through функций. При этом вы обращаетесь напрямую к серверу, на его языке, минуя процессор баз данных Access. Ваш запрос, хотя и проходит через все компоненты ODBC, ни один из них реально не обрабатывает его.
Прямое обращение к ODBC API. При этом способе вы также минуете процессор баз данных Access и напрямую используете Диспетчер драйверов и сам драйвер для доступа к базе данных. Таким образом, ваш код должен обеспечить всю функциональность, которую, как правило обеспечивает процессор баз данных Access. Сложность написания кода даже для довольно простых запросов заставляет обращаться к этому методу только тогда, когда действительно необходима значительная скорость выборки данных.
Использование Remote Data Objects. Этот четвертый способ является самым дорогим по материальным затратам, так как для его функционирования необходимо, чтобы на вашей рабочей станции была установлена версия Enterprise Visual Basic 4.0 и выше. Технология Remote Data Objects (RDO) - Объекты для доступа к внешним данным - трактует запросы ODBC как объекты. Запросы работают со свойствами этих объектов и используют их методы, чтобы получить данные. В свою очередь, RDO конвертирует все действия в вызовы ODBC API. В принципе то же самое делает процессор баз данных, но во многих случаях RDO работает быстрее. Однако RDO также требует написания многих строчек кода, хотя и не такого сложного, как в случае прямого обращения к ODBC API. Ну и вспомните, что установка Enterprise версии Visual Basic стоит около 1000 долларов.
Использование SQL DMO. За счет использования SQL OLE в этом случае не используются ни процессор баз данных, ни ODBC. В данном случае мы работаем с SQL-DMO. В этой технологии мы можем использовать такие продукты, как Visual Basic for Application, Visual Basic (32 bit), Visual FoxPro и C++ (32 bit), для работы с объектами, которые позволяют нам управлять различными SQL серверами в сети. Этот способ работает только под Windows NT. При этом на рабочей станции вам необходимо иметь клиентскую часть SQL Server. Программирование администрирования SQL Server значительно упрощается благодаря легкому в изучении и использовании объектному языку. Легко можно выполнять все запросы как выборки, так и управления.
После того как вы подсоединитесь к внешнему источнику данных, вы можете задействовать набор SQL - pass through функций. С помощью них вы можете выполнять SQL команды, которые обеспечивают следующие операции:
Выполнение хранимых процедур.
Выполнение запросов на языке сервера.
Создание новых баз данных, таблиц и индексов на сервере.
Создание и выполнение триггеров, значений по умолчанию, правил проверки ввода и хранимых процедур.
Поддержание бюджетов пользователей или выполнение других задач Системного Администратора.
Выполнение множественных операций добавления и обновления в одном наборе команд.
Для того чтобы получить доступ ко всем этим возможностям, вам необходимо наличие Администратора ODBC на вашей рабочей станции. Как правило, большинство приложений фирмы Microsoft устанавливают это приложение, если вы при установке указали, что это необходимо. Нужные драйверы, как правило, поставляются с продуктом, доступ к данным которого вы хотите иметь. Помимо этого их выпускают еще третьи фирмы. Можно написать драйвер и самостоятельно, используя ODBC SDK. После того как вы решили все эти проблемы, можете приступать к созданию хранилищ данных на выбранном сервере баз данных.