Основы использования и проектирования баз данных Владимир Илюшечкин
Принятые сокращения
БД – база данных.
БнД – банк данных.
ДЛМ – даталогическая модель базы данных.
ИЛМ – инфологическая модель предметной области.
ИМ – иерархическая модель данных.
НФ – нормальная форма отношения.
НФБК – нормальная форма Бойса – Кодда.
ОЦ – ограничения целостности.
ПО – предметная область.
РБД – реляционная база данных.
РМ – реляционная модель данных.
СМ – сетевая модель данных.
СП – сущность-потомок.
СР – сущность-родитель.
СУБД – система управления базами данных.
ФЗ – функциональная зависимость.
ФМ – физическая модель базы данных.
ЯОД – язык описания данных.
3GL – Third-Generation Language (язык третьего поколения).
4GL – Fourth-Generation Language (язык четвертого поколения).
ANSI – American National Standards Institute (Американский институт национальных стандартов).
API – Application Programming Interface (интерфейс прикладного программирования).
ASP – Active Server Pages.
BDE – машина баз данных Borland Database Engine.
CASE – Computer Aided Software Engineering.
CGI–Common Gateway Interface.
DDL – Data Definition Language (язык определения данных).
DFD – Data Flow Diagram.
DML – Data Manipulation Language (язык манипулирования данными).
DQL – Data Query Language (язык запросов данных).
ER – Entity-Relationship (сущность-связь).
GUID – Globally Unique Identifier (уникальный идентификационный номер).
HTML – Hypertext Markup Language (язык разметки гипертекста).
HTTP – Hypertext Transfer Protocol (сетевой протокол передачи гипертекста).
ICAM – Integrated Computer Aided Manufacturing (интегрированная компьютеризация производства).
IDEF – методология ICAM DEFinition.
IE – методология Information Engineering.
IIS – Web-сервер Microsoft Internet Information Services.
ISO – International Organization for Standardization (Международная организация по стандартам).
MSDE – машина баз данных Microsoft Data Engine.
OLE – Object Linking and Embedding (технология связывания и внедрения объектов и протокол разработанные компанией «Майкрософт»)
OLTP – Online Transaction Processing (оперативная обработка транзакций).
PHP – Hypertext Preprocessor (Препроцессор Гипертекста – скриптовый язык программирования).
QBE – Query-By-Example (язык запросов по образцу).
SADT – Structured Analysis and Design Technique (метод структурного анализа и проектирования).
SGML – Standard Generalized Markup Language (стандартный общий язык разметки).
SPARC – Standards Planning and Requirements Committee (подкомитет Американского института национальных стандартов).
SQL – Structured Query Language (структурированный язык запросов).
UML – Unified Modeling Language (унифицированный язык моделирования).
URL – Uniform Resource Locator (определитель местонахождения информационного ресурса).
WWW – World Wide Web (Всемирная паутина).
XML – extensible Markup Language (расширяемый язык разметки).
Предисловие
Потребность в информации стала одной из самых насущных в жизни современного цивилизованного человечества. Включая утром радиоприемники и телевизоры, люди с нетерпением ждут новостей о погоде, курсах валют, сообщений о показателях деловой активности и т. д. Приходя на работу, они погружаются в море деловой информации, которую получают через свои служебные компьютеры. Возвращаясь домой, они заходят в супермаркеты за покупками и из кассовых чеков узнают информацию о цене приобретенных товаров.
Источником значительной части информации являются базы данных, в которых содержатся сведения о прогнозах погоды, ежедневных курсах валют, показателях произведенной продукции, ценах и количестве продаваемых товаров, расписаниях движения поездов, отправлении и прибытии самолетов и т. д. Структура баз данных может мало интересовать конечного пользователя, поскольку для него более важны время получения информации, ее актуальность и доступный объем. Создание базы данных, отвечающей всем требованиям пользователей, становится задачей проектировщика, который должен обладать теоретическими знаниями и практическими навыками в области информационных технологий.
Согласно образовательным стандартам высшего профессионального образования подготовка специалиста по направлению «Информатика и вычислительная техника» предусматривает изучение дисциплины «Базы данных», по другим техническим направлениям раздел, посвященный базам данных, включен в общий курс информатики.
Предметом дисциплины «Базы данных» являются база данных как форма организации информационного ядра любой информационной системы, а также языковые и программные средства для работы с базами данных и методы проектирования баз данных. В учебном пособии содержатся основные сведения по этим темам, изложенные в шести главах.
В гл. 1 рассматриваются различные подходы к хранению данных, классификация и архитектура баз данных и систем управления базами данных, а также дается общее описание процесса проектирования баз данных.
Глава 2 посвящена реляционной модели данных, которая служит основой большинства современных баз данных.
В гл. 3 представлены языки, предназначенные для работы с базами данных. Подробно описывается язык SQL, являющийся общепринятым языком взаимодействия с базами данных. Менее детально изложены возможности языка QBE, относящегося к табличных языкам запросов.
В гл. 4 содержатся сведения о таких широко используемых системах управления базами данных, как Access, Oracle, SQL Server и InterBase, с указанием их технических характеристик и поддерживаемых типов данных.
Главы 5 и 6 посвящены вопросам проектирования баз данных. В гл. 5 излагается метод, основанный на принципах нормализации, и приводится пример использования этого метода для получения базы данных, соответствующей нормальной форме Бойса – Кодда.
В гл. 6 представлен инженерный подход к разработке базы данных, включающий этапы концептуального и даталогического проектирования, поддерживаемые существующими системами автоматизации проектирования баз данных, ряду которых дается краткая характеристика. В качестве примера в этой главе описаны приемы работы с одной из таких систем – ERwin.
Подходы, применяемые при использовании и построении баз данных, универсальны и мало зависят от предметной области, информация о которой хранится в базах данных. Чтобы рассматриваемые в пособии примеры были понятны студентам, выбраны предметные области, связанные с повседневной деятельностью людей.
Глава 1
Основные сведения о хранении данных
1.1. Файловые системы хранения данных
Использование компьютерной техники связано с двумя большими областями деятельности человечества [10]. В первой области компьютерная техника применяется для выполнения численных расчетов, которые слишком долго или вообще невозможно производить вручную. Характерной особенностью данной области является наличие сложных алгоритмов обработки, которые применяются к простым по структуре данным, объем которых сравнительно невелик.
Вторая область включает в себя автоматические или автоматизированные информационные системы, представляющие собой программно-аппаратный комплексы, обеспечивающие надежное хранение информации в памяти компьютера, выполнение специфических для данного приложения преобразований информации и вычислений, предоставление пользователям удобного и легко осваиваемого интерфейса.
Обычно такие системы имеют дело с большими объемами информации, имеющей достаточно сложную структуру. Классическими примерами информационных систем являются банковские системы, автоматизированные системы управления предприятиями, системы резервирования авиационных или железнодорожных билетов и т. д.
Вторая область использования вычислительной техники возникла несколько позже первой. Это связано с тем, что в начальный период развития компьютеров их возможности по хранению информации были ограниченными. Поэтому важным шагом в развитии информационных систем явился переход к использованию централизованных систем управления файлами. С точки зрения прикладной программы файл – это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные. Правила именования файлов, способ доступа к данным, хранящимся в файле, и структура этих данных зависят от конкретной системы управления файлами и от типа файла. Система управления файлами обеспечивает распределение внешней памяти, отображение имен файлов в соответствующие адреса во внешней памяти и обеспечение доступа к данным.
Для пользователя файл представляется как линейная последовательность записей, с которой можно выполнять ряд стандартных операций:
– создать файл (требуемого типа и размера);
– открыть ранее созданный файл;
– прочитать из файла некоторую запись (текущую, следующую, предыдущую, первую, последнюю);
– записать в файл на место текущей записи новую;
– добавить новую запись в конец файла.
Структура записи файла была известна только программе, которая с ним работала, но не системе управления файлами, и поэтому для того, чтобы извлечь некоторую информацию из файла, необходимо было точно знать структуру записи файла. Каждая программа, работающая с файлом, должна была иметь у себя внутри структуру данных, соответствующую структуре этого файла. При изменении структуры файла требовалось изменять структуру программы, а это требовало новой компиляции, то есть процесса перевода программы в исполняемые машинные команды. Такая ситуации характеризовалась как зависимость программ от данных. Для информационных систем характерным является наличие большого числа различных пользователей (программ), каждый из которых имеет свои специфические алгоритмы обработки информации, хранящейся в одних и тех же файлах. Изменение структуры файла, которое было необходимо для одной программы, требовало исправления и перекомпиляции и дополнительной отладки всех остальных программ, работающих с этим же файлом. Это было первым существенным недостатком файловых систем, который явился толчком к созданию новых систем хранения и управления информацией.