- •Введение
- •Глава 1. Основные понятия баз данных
- •1.1. История возникновения баз данных
- •1.2. Модели данных
- •1.2.1. Иерархическая модель данных
- •1.2.2. Сетевая модель базы данных
- •1.2.3. Реляционная модель базы данных
- •1.2.4. Другие модели баз данных (ООСУБД)
- •2.1. История появления и развития SQL
- •Глава 2. SQL
- •2.2. Стандарты SQL
- •2.2.1. Стандарты ANSI/ISO
- •2.2.2. ODBC и консорциум SQL Access Group
- •2.2.3. JDBC и серверы приложений
- •2.3. SQL и переносимость
- •2.4. SQL и сети
- •2.4.1. Централизованная архитектура
- •2.4.2. Архитектура файлового сервера
- •2.4.3. Архитектура “клиент/сервер”
- •2.4.4. Многоуровневая архитектура
- •2.4.5. SQL и мэйнфреймы
- •2.4.7. SQL и UNIX
- •2.4.8. SQL и персональные компьютеры
- •2.4.9. SQL, хранилища данных и интеллектуальные ресурсы предприятия
- •2.4.10. SQL и интернет-приложения
- •2.5. Основы SQL
- •2.5.1. Использование SQL для извлечения информации из таблиц
- •2.5.2. Команда SELECT
- •2.5.3. Создание более сложных предикатов в предложении SELECT
- •2.5.4. Формирование вывода запросов
- •2.5.5. Агрегатные группы
- •2.6. Запросы к нескольким таблицам
- •2.6.1. Подзапросы
- •2.6.2. Использование операторов ANY, ALL и SOME
- •2.6.3. Использование предложения UNION
- •2.6.4. Ввод, удаление и изменение значения поля
- •2.7. DDL (Язык описания данных)
- •2.7.1. Создание таблиц
- •2.7.2. Индексы
- •2.7.3. Изменение структуры таблицы после ее создания
- •2.8. Ограничение данных
- •2.8.1. Ограничение таблиц
- •2.8.2. Установка значений по умолчанию
- •2.9. Поддержка целостности данных
- •2.9.1. Первичные ключи
- •2.9.2. Пользовательские представления
- •2.10. Модификация данных с помощью представлений
- •2.11. Разграничение доступа в базе данных
- •Глава 3. Математические основы реляционных баз данных
- •3.1. Отношения и их схемы
- •3.2. Реляционные операторы
- •3.2.1. Булевы операции
- •3.2.2. Оператор выбора
- •3.2.3. Оператор проекции
- •3.2.4. Оператор соединения
- •3.2.5. Другие операции на отношениях
- •3.2.6. Оператор деления
- •3.2.7. Оператор переименования атрибутов
- •3.2.8. Оператор эквисоединения
- •3.2.9. Расширения для сравнения на доменах
- •3.2.9.1. Расширение выбора
- •3.3. Реляционная алгебра
- •3.3.1. Дополнительные операторы
- •3.3.1.1. Оператор расщепления
- •3.3.1.2. Оператор FACTOR
- •3.4. Функциональные зависимости
- •3.4.1. Определение
- •3.4.2. Аксиомы вывода
- •3.4.3. Применение аксиом вывода
- •3.4.4. Выводы на основе аксиом вывода
- •3.4.6. Направленные ациклические графы вывода
- •3.4.7. Проверка принадлежности к замыканию множества функциональных зависимостей
- •3.5. Покрытия функциональных зависимостей
- •3.5.1. Покрытия и эквивалентность
- •3.5.2. Неизбыточные покрытия
- •3.5.3. Редуцированные покрытия
- •3.5.3.1. Посторонние атрибуты
- •3.5.3.3. Алгоритм построения редуцированного покрытия
- •3.5.3.4. Канонические покрытия
- •3.5.3.5. Структура неизбыточных покрытий
- •3.5.4. Минимальные покрытия
- •3.5.4.1. Прямая определяемость
- •3.5.4.2. Вычисление минимальных покрытий
- •3.5.4.3. Оптимальные покрытия
- •3.5.5. Составные функциональные зависимости
- •3.5.6. Кольцевые покрытия
- •3.6. Многозначные зависимости и зависимости соединения
- •3.6.1. Многозначные зависимости
- •3.6.2. Многозначные и функциональные зависимости
- •3.6.3. Аксиомы вывода для многозначных зависимостей
- •3.6.4. Только многозначные зависимости
- •3.6.5. Функциональные и многозначные зависимости
- •3.6.6. Зависимости соединения
- •3.7. Синтез схем реляционных баз данных
- •3.7.1. Базы данных и их схемы
- •3.7.2. Нормальные формы баз данных
- •3.7.2.1. Первая нормальная форма
- •3.7.2.2. Вторая нормальная форма
- •3.7.2.4. Нормальная форма Бойса - Кодда (НФБК)
- •3.7.2.5. Четвертая нормальная форма
- •3.7.2.3. Третья нормальная форма
- •3.8. Алгоритмы синтеза схем баз данных
- •3.8.1. Нормализация через декомпозицию
- •3.8.2. Недостатки нормализации через декомпозицию
- •3.8.3. Нормализация посредством синтеза
- •Глава 4. Система управления базами данных PostgreSQL
- •4.1. Установка
- •4.2. Запуск и останов сервера PostgreSQL
- •4.2.1. Утилита psql
- •4.2.2. Создание базы данных
- •4.3. Объекты базы данных
- •4.4. Функции и операторы
- •4.4.1. Логические операторы
- •4.4.2. Операторы сравнения
- •4.5. Клиентские приложения PostgreSQL
- •4.5.1. clusterdb
- •4.5.2. createdb
- •4.5.3. createuser
- •4.5.4. dropdb
- •4.5.5. dropuser
- •4.5.6. ecpg
- •4.5.7. pg_basebackup
- •4.5.8. pgbench
- •4.5.9. pg_config
- •4.5.10. pg_dump
- •4.5.11. pg_dumpall
- •4.5.12. pg_isready
- •4.5.13. pg_receivewal
- •4.5.14. pg_restore
- •4.5.15. psql
- •4.5.16. reindexdb
- •4.5.17. vacuumdb
- •4.6. Серверные приложения PostgreSQL
- •4.6.1. initdb
- •4.6.2. pg_archivecleanup
- •4.6.3. pg_checksums
- •4.6.4. pg_controldata
- •4.6.6. pg_resetwal
- •4.6.7. pg_rewind
- •4.6.8. pg_test_fsync
- •4.6.9. pg_test_timing
- •4.6.10. pg_upgrade
- •4.6.11. pg_waldump
- •4.6.12. postgres
- •4.6.13. postmaster
- •4.7. Серверное программирование
- •4.7.1. Расширение SQL
- •4.7.2. Триггеры
- •Заключение
- •Библиографический список
Министерство науки и высшего образования Российской Федерации
Рязанский государственный радиотехнический университет им. В.Ф. Уткина
А.И. БАРАНЧИКОВ
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ
Учебное пособие
Рекомендовано научно-методическим советом ФГБОУ ВО «Рязанский государственный радиотехнический университет им. В.Ф. Уткина в качестве учебного пособия для студентов высших учебных заведений всех форм обучения по направлениям подготовки:
02.03.03 «Математическое обеспечение и администрирование информационных систем» (уровень – бакалавриат), 09.03.01 «Информатика и вычислительная техника» (уровень – бакалавриат), 38.03.01 «Экономика» (уровень – бакалавриат), 38.03.02 «Менеджмент» (уровень – бакалавриат), 38.03.05 «Бизнес-информатика» (уровень – бакалавриат) и специальности 27.05.01 «Специальные организационно-технические системы» (уровень – специалитет)
Рязань 2023
УДК 004.65
Теоретические основы реляционных баз данных: учеб. пособие/А.И.Баранчиков; Рязан. гос. радиотехн. ун-т. Рязань, 2023. 160 с.
ISBN 978-5-7722-0367-5
Дается общий обзор различных типов баз данных и соответствующих методов их использования. Описываются реляционная модель баз данных, основные конструкции языка SQL, методы проектирования структуры баз данных, основанные на принципах нормализации. Приведены основные понятия о транзакциях в базах данных. В заключение рассмотрен общий подход к технологиям «клиентсервер» на примере СУБД PostgreSQL.
Предназначено для студентов очной, заочной и очно-заочной форм обучения по направлениям 27.05.01 «Специальные организационнотехнические системы», 38.03.01 «Экономика», 38.03.02 «Менеджмент», 38.03.05 «Бизнес-информатика», 02.03.03 «Математическое обеспечение и администрирование информационных систем», 09.03.01 «Информатика и вычислительная техника».
Библиогр.: 17 назв.
Базы данных, реляционная модель данных, SQL, PostgreSQL
Печатается по решению научно-методического совета Рязанского государственного радиотехнического университета.
Рецензенты: зав. кафедрой ВТ ТулГУ д-р техн. наук, проф. А.Н. Ивутин; зав. кафедрой ЭВМ РГРТУ д-р техн. наук, проф. Б.В. Костров
Б а р а н ч и к о в Алексей Иванович Теоретические основы реляционных баз данных
Редактор Р.К. Мангутова Корректор И.В. Черникова
Подписано в печать 04.04.23. Формат бумаги 60х84 1/16. Бумага писчая. Печать трафаретная. Усл. печ. л. 10,0.
Тираж 30 экз. Заказ 4219.
Рязанский государственный радиотехнический университет. 390005, Рязань, ул.Гагарина, 59/1.
Редакционно-издательский центр РГРТУ.
ISBN 978-5-7722-0367-5 |
© Рязанский государственный |
|
радиотехнический университет, 2023 |
Введение
Нет никакой необходимости говорить о важности баз данных в современном мире. Мы сталкиваемся с ними буквально на каждом шагу: когда оплачиваем коммунальные услуги, платим налоги, покупаем билеты на поезда и самолеты, бронируем номера в отелях и так далее.
Поэтому курс “Базы данных” по праву считается одним из основных для направлений обучения, связанных с информационными технологиями, информатикой и вычислительной техникой.
На эту тему написано большое количество учебной и учебнометодической литературы, и возникает вполне закономерный вопрос: чем данное пособие отличается от ранее изданных?
Во-первых, в нем дается в большем объеме теория реляционных баз данных. В большинстве современной методической литературы этому вопросу уделяется недостаточно, на наш взгляд, внимания. Хорошее знание теории реляционных баз данных позволяет формировать целостное и научное представление о том, каким образом строится база данных как адекватное отображение предметной области. Результатом будет создание базы данных, структура которой позволит избавиться от проблемы аномалии данных, появление которых в значительной мере отрицательно сказывается на работе.
Во-вторых, особенное внимание уделяется связи операторов реляционной алгебры и языка SQL, что позволяет учащимся лучше понять принципы обработки данных в современных реляционных базах данных.
В-третьих, важное внимание уделяется вопросам импортозамещения касательно программного обеспечения – систем управления базами данных. Примеры практического применения баз данных используют СУБД Postgres Pro, включенную 18.03.2016 года под номером 104 в Единый реестр российских программ для электронных вычислительных машин и баз данных.
В-четвертых, СУБД Postgres фактически является одним из лидеров в данной области, особенно это касается вопросов производительности, надежности и защищенности.
Глава 1. Основные понятия баз данных
Здесь будут даны основные понятия о базах данных. Более подробно эти понятия будут рассмотрены в последующих главах, а данная глава является кратким введением в теорию и практику баз данных.
-4 -
1.1.История возникновения баз данных
Надо однозначно понимать, что появление баз данных было предопределено ходом исторического развития.
Под базой данных следует понимать в современном мире набор данных, хранящихся в электронном виде и предназначенных для хранения и обработки информации. Под это понятие подходят и текстовые (структурированные и не структурированные) файлы, файлы электронных таблиц, собственно файлы баз данных, да и многое другое. Изначально не существовало разницы между физическим (как непосредственно расположены данные на носителе информации) и логическим (как данные представлены с точки зрения предметной области) представлениями данных. При этом на прикладную программу полностью возлагались задачи физической и логической обработки данных. Отдельно появилась и проблема защищенности данных, связанная с тем, что можно было предоставить доступ к данным исключительно целиком, без разделения на части и не учитывая конкретных пользователей и пользовательских групп. Все это и привело к необходимости создания систем управления базами данных (СУБД), которые и позволили решить эти задачи.
СУБД явились той промежуточной прослойкой между логическим и физическим представлениями данных, которая позволила прикладному программисту сосредоточиться исключительно на проблематике предметной области. С другой стороны, СУБД позволили реализовать четкий и понятный механизм разделения полномочий между пользователями баз данных по принципу «запрещено все, что не разрешено», в отличие от того, что нам привычно в обычной жизни «разрешено все, что не запрещено». СУБД разрешает конкретному пользователю или группе пользователей только те действия, которые администратор базы данных разрешил ему (чтение данных из конкретной таблицы, удаление данных из конкретной таблицы, возможность создания таблицы и так далее). Все действия, которые выходят за пределы полномочий пользователей, им запрещены.
В литературе по базам данных принято делить историю их развития на четыре этапа или периода.
Первый этап или этап становления баз данных датируется началом 60-х — началом 70-х годов. Именно на этом этапе и появился сам термин «база данных». Появляются первые системы баз данных. Основным требованием первоначально было обеспечение совместного доступа к данным со стороны нескольких пользователей.
-5 -
Ктому времени появилась и возможность реализации баз данных — были разработаны большие компьютеры с магнитными дисками для хранения информации. Среди появившихся в то время СУБД следует отметить IMS фирмы IBM. IMS поддерживала иерархическую структуру данных, о которой мы еще будем вести разговор позднее. В 1963 году была разработана первая промышленная база данных IDS (Integrated Data Store). Ее создатель Чарльз Уильям Бахман (англ. Charles William Bachman), часто именуется отцом баз данных, является одним из основоположников сетевой модели баз данных.
Важную роль в развитии баз данных сыграла ассоциация CODASYL, которая в 1967 году организовала рабочую группу по базам данных DBTG (DataBaseTaskGroup).
Наиболее ярким представителем систем, поддерживающих DBTG, стала Integrated Database Management System (IDMS), ориентированная на машины фирмы IBM.
Этим периодом датируется появление термина «информационноуправляющая система (MIS)», как система баз данных, осуществляющая поиск данных и дающая возможность работы с использованием удаленного терминала.
Второй период развития — 70-е годы. Значительно повышаются характеристики компьютеров, и успешно внедряются системы, базирующиеся на иерархической и сетевой структурах данных.
DBTG CODASYL специфицирует систему языков для баз данных, в которую входят:
•Язык описания данных ЯОД (Data Definition Language - DDL).
•Средства базы данных языка Кобол. Представляют собой средства обеспечения интерфейса языка Кобол с базой данных, описанной в DDL.
•Средства базы данных языка Фортран. Представляют собой средства обеспечения интерфейса языка Фортран с базой данных, описанной в DDL.
•Средства конечного пользователя. Определяют интерфейс пользователя в случае, когда такой пользователь управляет базой данных, описанной в DDL.
•Язык описания хранения данных ЯОХД (Data Stored Definition Language - DSDL). Представляет собой язык, который отображает концептуальную схему, описанную в DDL, во внутреннюю схему.
В 1975 г. появился отчет рабочей группы ANSI/X3/SPARC Американского национального института стандартов. Группа пришла к
- 6 -
выводу, что если и ставить вопрос о стандартизации, то только относительно интерфейсов, которые могут существовать между различными компонентами СУБД.
Именно в этот период появилась реляционная модель данных, которая была предложена в 1970 году сотрудником фирмы IBM в СанХосе Эдгаром Франком Коддом, британским ученым, внесшим также существенный вклад и в другие области информатики. В 1976 году Эдгар Кодд был удостоен почетного звания «Человек IBM», в 1981 – награжден престижной премией Тьюринга, в 2002 его реляционная модель данных, по версии авторитетного журнала «Форбс», включена в список наиважнейших инноваций за последние 85 лет. Его теоретические исследования привели к созданию формальной теории баз данных и к появлению первых промышленных реляционных баз данных.
Третий период или период зрелости относится к 80-м годам. Именно тогда разработаны крупные реляционные СУБД Oracle, Informix и ряд других. Реляционные базы данных широко распространяются во всех сферах человеческой деятельности и закономерно вытесняют с рынка баз данных СУБД иерархического и сетевого типа.
В течение этого периода базы данных в основном развиваются по следующим направлениям.
Удобство использования. Появление персональных компьютеров стало причиной повышенных требований к пользовательскому интерфейсу программного обеспечения, в том числе и к базам данных.
Многоплановость. Расширение сферы использования баз данных, которые до этого были связаны с обработкой текстовой и числовой информации (экономика, статистика, банковское дело и др.), до систем автоматизированного проектирования, издательского дела, геоинформационных систем привело к необходимости хранения и обработки изображений, звуков и полнотекстовой информации.
Для этого периода характерно появление баз знаний, на которых базируются экспертные системы.
Четвертый или постреляционный период - это начало 90-х годов, и связан он с интенсивным развитием дедуктивных и объектноориентированных баз данных.
Следует отметить значительный вклад в развитие объектноориентированных баз данных группы по управлению объектными базами данных ODMG (ObjectDataManagementGroup)
Происходит широкомасштабное внедрение баз данных в Интернет. Разрабатываются web-серверы для баз данных,
