Кудравцев Создание баз данных 2010
.pdfМинистерство образования и науки РФ
Национальный исследовательский ядерный университет «МИФИ»
К. Я. Кудрявцев
СОЗДАНИЕ БАЗ ДАННЫХ
Учебное пособие
Москва 2010
УДК (004.738.5(075) ББК (32.973.202я7) К88
Кудрявцев К.Я. Создание баз данных. Учебное пособие. М.:
НИЯУ МИФИ, 2010.– 155 с.
Рассмотрены теоретические вопросы проектирования баз данных, особенности применения редактора ERWin, приведено большое количество практических примеров построения концептуальных моделей (ER-диаграмм) различных предметных областей.
Представлены реляционная модель данных, нормализация отношений, математический аппарат реляционной алгебры и реляционного исчисления.
Описаны подходы к созданию сложных интерфейсов (форм) для работы с данными, а также структура семейств и объектов для манипулирования данными с
помощью VBA в СУБД MS Access.
Рассмотрены особенности архитектуры, системы безопасности и механизмы аутентификации и авторизации в клиент-серверных СУБД MySQL и PostgreSQL. Дано описание программного интерфейса для соединения и доступа к серверу базы данных. Приведены примеры сеансов работы по созданию базы данных.
Описана структура языка SQL, подробно рассматривается построение сложных SQL-запросов.
Предназначено для студентов, обучающихся по специальности 010501 – «Прикладная математика и информатика», изучающих курс «Базы данных и экспертные системы» (ОПД.Ф.11), а также всех желающих узнать больше о технологии разработки баз данных.
Рецензент В.С. Лаврентьев |
|
ISBN 978-5-7262-1302-6 |
Рекомендовано к изданию |
|
редсоветом НИЯУ МИФИ |
|
в качестве учебного пособия |
© Национальный исследовательский ядерный университет «МИФИ», 2010 г.
2
ОГЛАВЛЕНИЕ |
|
ВВЕДЕНИЕ ...................................................................................................... |
7 |
Глава 1. КОНЦЕПТУАЛЬНОЕ МОДЕЛИРОВАНИЕ .......................... |
10 |
ТИПЫ МОДЕЛЕЙ ДАННЫХ ....................................................................... |
10 |
Иерархическая модель данных ........................................................ |
12 |
Сетевая модель данных ................................................................... |
14 |
Реляционная модель данных ............................................................ |
15 |
ПОСТРОЕНИЕ КОНЦЕПТУАЛЬНОЙ МОДЕЛИ ............................................ |
15 |
CASE-СРЕДСТВА ПОСТРОЕНИЯ КОНЦЕПТУАЛЬНЫХ МОДЕЛЕЙ.............. |
18 |
СОЗДАНИЕ ER-ДИАГРАММ С ПОМОЩЬЮ ERWIN .................................. |
21 |
РЕЛЯЦИОННЫЕ СХЕМЫ И ER-ДИАГРАММЫ ........................................... |
29 |
ПРИМЕРЫ ER-ДИАГРАММ ...................................................................... |
34 |
ER-диаграмма «Обменный пункт валюты» .................................. |
34 |
ER-диаграмма «Родственные отношения»................................... |
35 |
ER-диаграмма «Теннисный турнир» .............................................. |
36 |
ER-диаграмма «Библиотека» ......................................................... |
37 |
КОНТРОЛЬНЫЕ ВОПРОСЫ ....................................................................... |
39 |
Глава 2. РЕЛЯЦИОННАЯ МОДЕЛЬ ДАННЫХ.................................. |
40 |
БАЗОВЫЕ ПОНЯТИЯ РЕЛЯЦИОННОЙ МОДЕЛИ ДАННЫХ .......................... |
41 |
Тип данных ........................................................................................ |
42 |
Связанные отношения ..................................................................... |
46 |
Внешние ключи отношения ............................................................. |
47 |
Условия целостности данных ......................................................... |
48 |
Типы связей между таблицами ...................................................... |
50 |
РЕЛЯЦИОННАЯ АЛГЕБРА И РЕЛЯЦИОННОЕ ИСЧИСЛЕНИЕ ....................... |
51 |
РЕЛЯЦИОННАЯ АЛГЕБРА ......................................................................... |
52 |
Операции реляционной алгебры ...................................................... |
52 |
3
Теоретико-множественные операции реляционной алгебры ...... |
54 |
Специальные реляционные операции .............................................. |
55 |
РЕЛЯЦИОННОЕ ИСЧИСЛЕНИЕ.................................................................. |
58 |
Целевые списки и выражения реляционного исчисления .............. |
62 |
Реляционное исчисление доменов.................................................... |
62 |
НОРМАЛИЗАЦИЯ ОТНОШЕНИЙ ............................................................... |
64 |
Аномалия обновления ....................................................................... |
64 |
Аномалия удаления ........................................................................... |
65 |
Аномалия ввода................................................................................. |
65 |
Первая нормальная форма (1НФ)................................................... |
65 |
Функциональные зависимости ........................................................ |
66 |
Вторая нормальная форма (2НФ) .................................................. |
68 |
Третья нормальная форма (3НФ) .................................................. |
69 |
Многозначные зависимости ............................................................ |
71 |
КОНТРОЛЬНЫЕ ВОПРОСЫ ....................................................................... |
73 |
Глава 3. РАБОТА с MS ACCESS ............................................................... |
74 |
АРХИТЕКТУРА ПРИЛОЖЕНИЯ MS ACCESS.............................................. |
74 |
Обобщенная модель ядра приложения........................................... |
74 |
Модель Data Access Object............................................................... |
76 |
Ссылки на семейства, объекты и свойства .................................. |
78 |
Работа с объектными переменными ............................................. |
79 |
ПРАКТИЧЕСКИЕ АСПЕКТЫ РАБОТЫ С MS ACCESS.................................. |
80 |
Динамическое изменение «Поля со списком» ................................ |
80 |
Динамическое изменение «Текстового поля» ............................... |
83 |
Параметрические запросы в формах. ............................................ |
84 |
Отображение взаимосвязанной информации ............................... |
85 |
Многопараметрические запросы .................................................... |
89 |
КОНТРОЛЬНЫЕ ВОПРОСЫ ....................................................................... |
92 |
4
Глава 4. КЛИЕНТ-СЕРВЕРНЫЕ СУБД .................................................. |
93 |
СУБД MYSQL ....................................................................................... |
95 |
Запуск и работа с MySQL................................................................ |
95 |
Структура хранения данных в MySQL........................................... |
97 |
Система безопасности MySQL ...................................................... |
98 |
СУБД POSTGRESQL............................................................................. |
103 |
Запуск и работа с PostgreSQL ...................................................... |
104 |
Структура хранения данных в PostgreSQL ................................. |
105 |
Система безопасности PostgreSQL ............................................. |
106 |
ПРОГРАММНЫЙ ИНТЕРФЕЙС ДЛЯ РАБОТЫ С СЕРВЕРОМ БД ................. |
108 |
API для MySQL................................................................................ |
108 |
API для PostgreSQL......................................................................... |
110 |
ТРАНЗАКЦИИ ........................................................................................ |
113 |
ХРАНИМЫЕ ПРОЦЕДУРЫ....................................................................... |
117 |
ТРИГГЕРЫ ............................................................................................. |
121 |
КОНТРОЛЬНЫЕ ВОПРОСЫ ..................................................................... |
123 |
Глава 5. ЯЗЫК SQL.................................................................................... |
124 |
CТРУКТУРА ЯЗЫКА SQL ....................................................................... |
124 |
ОПРЕДЕЛЕНИЕ СХЕМЫ ДАННЫХ. ОПЕРАТОР CREATE........................ |
126 |
ВЫБОРКА ДАННЫХ. ОПЕРАТОР SELECT ............................................. |
129 |
ТАБЛИЧНОЕ ВЫРАЖЕНИЕ ОПЕРАТОРА SELECT .................................. |
131 |
Раздел FROM .................................................................................. |
132 |
Раздел WHERE................................................................................ |
132 |
Раздел GROUP BY .......................................................................... |
136 |
Раздел HAVING............................................................................... |
136 |
Агрегатные функции...................................................................... |
137 |
ПРИМЕРЫ ПОСТРОЕНИЯ SQL-ЗАПРОСОВ ............................................. |
139 |
База данных туристических поездок ........................................... |
139 |
5
Запрос 1 ........................................................................................... |
140 |
Запрос 2 ........................................................................................... |
142 |
Запрос 3 ........................................................................................... |
144 |
Запрос 4 ........................................................................................... |
145 |
Запрос 5 ........................................................................................... |
145 |
Запрос 6 ........................................................................................... |
146 |
Запрос 7 ........................................................................................... |
148 |
Запрос 8 ........................................................................................... |
149 |
Запрос 9 ........................................................................................... |
150 |
КОНТРОЛЬНЫЕ ВОПРОСЫ ..................................................................... |
153 |
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ ................................. |
154 |
6
ВВЕДЕНИЕ
Развитие компьютерных технологий, связанных с хранением и обработкой данных, привело к появлению с середины 1960-х гг. понятия базы данных и специализированного программного обеспечения, получившего название систем управления базами данных
(СУБД) — DataBase Management Systems, (DBMS) [1].
База данных (БД) — это поименованная совокупность структурированных данных, относящихся к определенной предметной области. По технологии обработки данных базы данных подразделяются на централизованные и распределенные (клиентсерверные).
СУБД — это комплекс программных и языковых средств, необходимых для создания баз данных, поддержания их в актуальном состоянии и организации поиска в них необходимой информации. СУБД позволяют структурировать, систематизировать и организовывать данные для их компьютерного хранения и обработки. Именно системы управления базами данных являются основой практически любой информационной системы.
Основные функции СУБД:
▪физическое размещение в памяти данных и их описаний;
▪реализация механизмов поиска запрашиваемых данных;
▪разрешение проблем, возникающих при одновременном запросе одних и тех же данных многими пользователями (прикладными программами);
▪обеспечения защиты данных от некорректных обновлений и (или) несанкционированного доступа;
▪ |
поддержания баз данных в актуальном состоянии; |
▪ |
обеспечение целостности и непротиворечивости данных. |
СУБД можно определить как некую систему управления данными, обладающую следующими свойствами:
▪поддержание логически согласованного набора файлов;
▪обеспечение языка манипулирования данными;
▪восстановление информации после разного рода сбоев;
▪обеспечение одновременной работы нескольких пользователей.
В истории развития и совершенствования систем управления базами данных можно выделить три основных этапа.
7
Иерархические и сетевые СУБД
Первый этап был связан с созданием первого поколения СУБД, опиравшихся на иерархическую и сетевую модели данных (на основе спецификаций CODASYL). В этот период времени на рынке вычислительной техники доминировали большие вычислительные машины (mainframe), такие как система IBM 360/370, которые в совокупности с СУБД первого поколения составили аппаратнопрограммную платформу больших информационных систем.
Реляционные СУБД
Началом второго этапа в эволюции СУБД можно считать публикации в начале 70-х годов ряда статей Э. Кодда, в которых выдвигались, по сути, революционные идеи, существенно изменившие устоявшиеся представления о базах данных. Кодд предложил использовать для обработки данных аппарат теории множеств (реляционную алгебру и реляционное исчисление). Одна из главных идей Кодда заключалась в том, что связь между данными должна устанавливаться в соответствии с их внутренними логическими взаимоотношениями, в отличие от иерархических и сетевых СУБД, где для связи записей из разных файлов использовались физические указатели. Это означало, что в том случае, когда в разных файлах хранится логически связанная информация, а физическая связь между этими файлами отсутствует, то для получения выборки (извлечения информации) из такой базы данных необходимо использовать низкоуровневые средства работы с файлами.
В настоящее время реляционные базы данных получили очень широкое распространение, и фактически их можно рассматривать как стандарт СУБД для современных информационных систем.
Объектно-ориентированные СУБД
Развитие реляционных баз данных и обеспечение возможностей решения более сложных задач привели к появлению объектноориентированных баз данных. Для них характерны использование идей объектно-ориентированного подхода, управления распределенными базами данных, активного сервера базы данных, языков программирования четвертого поколения, фрагментации и парал-
8
лельной обработки запросов, технологии тиражирования данных, многопоточной архитектуры и других революционных достижений в области обработки данных.
Несмотря на все достоинства объектно-ориентированных СУБД, их использование далеко не всегда оправданно. Нередко декомпозиция данных объекта не вызывает никаких проблем и вполне логична. В этом случае использование реляционной модели может быть более эффективно.
В данном пособии будут рассмотрены основные этапы проектирования реляционных баз данных, как наиболее широко используемых в настоящее время.
9
Глава 1. КОНЦЕПТУАЛЬНОЕ МОДЕЛИРОВАНИЕ
Типы моделей данных
В широком смысле слова база данных — это совокупность сведений о конкретных объектах реального мира в какой-либо предметной области [1]. Под предметной областью принято понимать часть реального мира, подлежащего изучению для организации управления и, в конечном счете, автоматизации, например, предприятие, вуз и т.д.
Создавая базу данных, пользователь стремится упорядочить информацию по различным признакам и быстро извлекать данные с произвольным сочетанием признаков. Сделать это возможно, только если данные структурированы.
Структурирование — это введение соглашений о способах представления данных. Неструктурированными называют данные, записанные, например, в текстовом файле.
На рис. 1.1 представлен пример неструктурированных данных, содержащих сведения о студентах (номер личного дела, фамилию, имя, отчество и год рождения). Легко убедиться, что сложно организовать поиск необходимых данных, хранящихся в неструктурированном виде, а упорядочить подобную информацию практически не представляется реальным.
Личное дело № 16493, Сергеев Петр Михайлович, дата рождения 1 января
1986 г.
Л/д № 16593, Петрова Анна Владимировна, дата рожд. 15 марта 1985 г.
№ личн. дела 16693, д.р. 14.04.86,
Анохин Андрей Борисович.
Рис.1.1. Пример неструктурированных данных
10