
- •1. Введение в курс
- •1.1. Введение в базы данных, содержание и цели курса, основные понятия
- •1.1.1. О чём этот курс
- •1.1.2. Основные определения
- •1.1.3. Способы организации знаний в базах знаний
- •1.1.4. Применение баз знаний
- •1.1.5. Виды моделей баз данных
- •2. Теория баз данных
- •2.1. История развития представлений о базах данных
- •2.1.1. Области применения вычислительной техники
- •2.1.2. Базы данных и информационные системы
- •2.1.3. История развития баз данных
- •2.1.4. Этапы развития баз данных
- •2.2. Основные термины и определения теории бд, виды бд и их отличия
- •2.2.1. Классификация бд
- •2.3. Реляционные бд, понятие сущности и связи
- •2.3.1. Общие определения
- •2.3.2. Факты о реляционной модели данных
- •2.3.3. Достоинства реляционной модели данных
- •2.3.4. Недостатки реляционной модели данных
- •2.3.5. Целостность бд
- •2.3.6. Отношения
- •2.3.7. Кортежи и отношения
- •2.3.8. Связи
- •2.3.9. Ключи отношений
- •2.3.10. Ссылочная целостность
- •2.3.11. Консистентность данных
- •2.4. Многоуровневая архитектура баз данных, понятие физического и логического уровней баз данных
- •2.4.1. Определения
- •2.4.2. Многоуровневая структура баз данных
- •2.4.3. Постоянная и переменная длина записи
- •2.4.4. Способы представления данных
- •2.4.5. Простейший вариант – плоский файл
- •2.4.6. Факторизация по значениям поля
- •2.4.7. Индексирование по полям
- •2.4.8. Комбинация простых представлений
- •2.4.9. Использование цепочек указателей
- •2.4.10. Многосписочные структуры
- •2.4.11. Инвертированная организация
- •2.4.12. Иерархическая организация
- •2.4.14. Промежуточный итог
- •2.4.15. Методы индексирования
- •2.4.16. Индексирование по комбинации полей
- •2.4.17. Селективный индекс
- •2.4.18. Индексация по методу сжатия
- •2.4.19. Фронтальное сжатие
- •2.4.20. Сжатие окончания
- •2.4.21. Символьные указатели
- •2.4.23. Индексно-последовательная организация
- •2.4.24. Сбалансированные деревья
- •2.4.25. Ведение файла
- •2.4.26. Хэширование
- •2.4.28. Итог
- •2.5. Алгоритмы хэширования
- •2.5.1. Введение
- •2.5.2. Хэширование
- •2.5.2. Факторы эффективности хэширования
- •2.5.3. Размер участка памяти
- •2.5.4. Плотность заполнения
- •2.5.5. Алгоритмы хэширования
- •2.5.6. Размещение записей в области переполнения
- •2.5.7. Итог
- •2.6. Механизмы обработки и хранения данных в бд
- •2.6.1. Введение
- •2.6.2. Механизмы обработки и хранения данных в ms-sql 6.0-6.5
- •2.6.3. Механизмы обработки и хранения данных в ms-sql 7.0 и более поздних версиях
- •2.6.4. Метод доступа isam
- •2.6.5. Метод доспута MyIsam
- •2.6.6. Метод доступа vsam
- •2.6.7. Включение записей в *sam-файлы
- •2.6.8. Размещение индексов для *sam-файлов
- •2.6.9. Метод доступа InnoDb
- •2.6.10. Итог
- •2.7. Физическое представление древовидных и сетевых структур
- •2.7.1. Введение
- •2.7.2. Древовидные структуры
- •2.7.3. Сетевые структуры
- •2.7.4. Итог
- •3.1.4. Стандарты разработки бд/субд
- •3.1.5. Sql и его стандарты
- •Часть 1 – sql/Структура (sql/Framework) – определяет общие требования соответствия и фундаментальные понятия sql.
- •3.1.6. Использование методологии idef1x
- •3.1.7. Пример логической и физической схемы в ErWin
- •3.1.8. Минимальный набор стандартных таблиц
- •3.1.8. Итог
- •3.2. Средства автоматизированного проектирования бд
- •3.2.1. Введение
- •3.2.2. Case-технологии
- •3.2.3. Достоинства case-технологий
- •3.2.4. Промежуточные выводы и определения
- •3.2.5. Методологии структурного моделирования
- •3.2.6. Методология sadt (idef0)
- •3.2.7. Методологии информационного моделирования
- •3.2.8. Нотация Чена
- •3.2.9. Нотация Мартина
- •3.2.10. Нотация ide1x
- •3.2.11. Нотация Баркера
- •3.2.12. Язык информационного моделирования
- •3.2.13. Case-средства
- •3.2.14. Процесс создания модели бд в ErWin
- •3.2.15. Процесс создания модели бд в Sparx ea
- •3.2.16. Итог
- •3.3. Особенности проектирования бд на логическом и физическом уровнях
- •3.3.1. Введение
- •3.3.2. Модель бд
- •3.3.4. Банки данных
- •3.3.5. Модели данных
- •3.3.6. Этапы проектирования бд
- •3.3.7. Проектирование бд: внешний уровень
- •3.3.8. Проектирование бд: инфологический уровень
- •3.3.9. Проектирование бд: даталогический уровень
- •3.3.10. Уровни sql
- •3.3.11. Проектирование бд: физический уровень
- •3.3.12. Итог
- •3.4. Прямое и обратное проектирование бд
- •3.4.1. Введение
- •3.4.2. Понятие нормализации
- •3.4.3. Требования нормализации
- •3.4.4. Примеры аномалий
- •3.4.5. Нормальные формы
- •3.4.6. Зависимости
- •3.4.6. Первая нормальная форма
- •3.4.7. Вторая нормальная форма
- •3.4.8. Третья нормальная форма
- •3.4.9. Нормальная форма Бойса-Кодда
- •3.4.10. Четвёртая нормальная форма
- •3.4.11. Пятая нормальная форма
- •3.4.12. Доменно-ключевая нормальная форма
- •3.4.13. Ещё раз, кратко, все нормальные формы
- •3.4.14. Ещё раз, кратко, в ErWin
- •3.5.2. Показатели качества бд
- •3.5.3. Итог
Министерство образования Республики Беларусь
Учреждение образования
"Белорусский государственный университет
информатики и радиоэлектроники"
Факультет компьютерных систем и сетей
Кафедра программного обеспечения информационных технологий
УЧЕБНОЕ ПОСОБИЕ
по курсу "Базы данных" (часть 1)
Автор: Куликов Святослав Святославович,
доцент кафедры ПОИТ
Минск 2009
Содержание
1. Введение в курс 5
1.1. Введение в базы данных, содержание и цели курса, основные понятия 5
1.1.1. О чём этот курс 5
1.1.2. Основные определения 5
1.1.3. Способы организации знаний в базах знаний 6
1.1.4. Применение баз знаний 8
1.1.5. Виды моделей баз данных 9
2. Теория баз данных 10
2.1. История развития представлений о базах данных 10
2.1.1. Области применения вычислительной техники 10
2.1.2. Базы данных и информационные системы 11
2.1.3. История развития баз данных 11
2.1.4. Этапы развития баз данных 14
2.2. Основные термины и определения теории БД, виды БД и их отличия 19
2.2.1. Классификация БД 19
2.3. Реляционные БД, понятие сущности и связи 23
2.3.1. Общие определения 23
2.3.2. Факты о реляционной модели данных 24
2.3.3. Достоинства реляционной модели данных 24
2.3.4. Недостатки реляционной модели данных 24
2.3.5. Целостность БД 25
2.3.6. Отношения 25
2.3.7. Кортежи и отношения 27
2.3.8. Связи 28
2.3.9. Ключи отношений 28
2.3.10. Ссылочная целостность 35
2.3.11. Консистентность данных 38
2.4. Многоуровневая архитектура баз данных, понятие физического и логического уровней баз данных 39
2.4.1. Определения 39
2.4.2. Многоуровневая структура баз данных 40
2.4.3. Постоянная и переменная длина записи 42
2.4.4. Способы представления данных 43
2.4.5. Простейший вариант – плоский файл 44
2.4.6. Факторизация по значениям поля 44
2.4.7. Индексирование по полям 45
2.4.8. Комбинация простых представлений 46
2.4.9. Использование цепочек указателей 46
2.4.10. Многосписочные структуры 47
2.4.11. Инвертированная организация 47
2.4.12. Иерархическая организация 48
2.4.13. Хэш-аресация 49
2.4.14. Промежуточный итог 50
2.4.15. Методы индексирования 51
2.4.16. Индексирование по комбинации полей 53
2.4.17. Селективный индекс 54
2.4.18. Индексация по методу сжатия 54
2.4.19. Фронтальное сжатие 55
2.4.20. Сжатие окончания 55
2.4.21. Символьные указатели 56
2.4.23. Индексно-последовательная организация 57
2.4.24. Сбалансированные деревья 59
2.4.25. Ведение файла 59
2.4.26. Хэширование 61
2.4.27. Хэш-таблицы 61
2.4.28. Итог 63
2.5. Алгоритмы хэширования 63
2.5.1. Введение 63
2.5.2. Хэширование 63
2.5.2. Факторы эффективности хэширования 64
2.5.3. Размер участка памяти 64
2.5.4. Плотность заполнения 65
2.5.5. Алгоритмы хэширования 65
2.5.6. Размещение записей в области переполнения 68
2.5.7. Итог 69
2.6. Механизмы обработки и хранения данных в БД 69
2.6.1. Введение 69
2.6.2. Механизмы обработки и хранения данных в MS-SQL 6.0-6.5 69
2.6.3. Механизмы обработки и хранения данных в MS-SQL 7.0 и более поздних версиях 74
2.6.4. Метод доступа ISAM 79
2.6.5. Метод доспута MyISAM 81
2.6.6. Метод доступа VSAM 82
2.6.7. Включение записей в *SAM-файлы 85
2.6.8. Размещение индексов для *SAM-файлов 85
2.6.9. Метод доступа InnoDB 86
2.6.10. Итог 87
2.7. Физическое представление древовидных и сетевых структур 87
2.7.1. Введение 87
2.7.2. Древовидные структуры 87
2.7.3. Сетевые структуры 91
2.7.4. Итог 92
3. Проектирование БД 92
3.1. Стандарты разработки БД 92
3.1.1. Вспомним несколько определений 92
3.1.2. Структура БД 93
3.1.3. Стандарты разработки БД 93
3.1.4. Стандарты разработки БД/СУБД 94
3.1.5. SQL и его стандарты 97
3.1.6. Использование методологии IDEF1X 100
3.1.7. Пример логической и физической схемы в ErWin 103
3.1.8. Минимальный набор стандартных таблиц 104
3.1.8. Итог 109
3.2. Средства автоматизированного проектирования БД 110
3.2.1. Введение 110
3.2.2. CASE-технологии 110
3.2.3. Достоинства CASE-технологий 111
3.2.4. Промежуточные выводы и определения 113
3.2.5. Методологии структурного моделирования 116
3.2.6. Методология SADT (IDEF0) 119
3.2.7. Методологии информационного моделирования 121
3.2.8. Нотация Чена 122
3.2.9. Нотация Мартина 123
3.2.10. Нотация IDE1X 124
3.2.11. Нотация Баркера 126
3.2.12. Язык информационного моделирования 127
3.2.13. CASE-средства 128
3.2.14. Процесс создания модели БД в ErWin 128
3.2.15. Процесс создания модели БД в Sparx EA 137
3.2.16. Итог 145
3.3. Особенности проектирования БД на логическом и физическом уровнях 145
3.3.1. Введение 145
3.3.2. Модель БД 146
3.3.4. Банки данных 147
3.3.5. Модели данных 147
3.3.6. Этапы проектирования БД 149
3.3.7. Проектирование БД: внешний уровень 152
3.3.8. Проектирование БД: инфологический уровень 155
3.3.9. Проектирование БД: даталогический уровень 157
3.3.10. Уровни SQL 157
3.3.11. Проектирование БД: физический уровень 159
3.3.12. Итог 159
3.4. Прямое и обратное проектирование БД 160
3.4.1. Введение 160
3.4.2. Понятие нормализации 160
3.4.3. Требования нормализации 160
3.4.4. Примеры аномалий 161
3.4.5. Нормальные формы 162
3.4.6. Зависимости 164
3.4.6. Первая нормальная форма 165
3.4.7. Вторая нормальная форма 166
3.4.8. Третья нормальная форма 167
3.4.9. Нормальная форма Бойса-Кодда 168
3.4.10. Четвёртая нормальная форма 171
3.4.11. Пятая нормальная форма 172
3.4.12. Доменно-ключевая нормальная форма 173
3.4.13. Ещё раз, кратко, все нормальные формы 174
3.4.14. Ещё раз, кратко, в ErWin 174
3.4.15. Обратное проектирование БД 176
3.4.16. Итог 176
3.5. Повышение качества БД на стадии проектирования 176
3.5.1. Памятки разработчикам БД 176
3.5.2. Показатели качества БД 181
3.5.3. Итог 198
1. Введение в курс
1.1. Введение в базы данных, содержание и цели курса, основные понятия
1.1.1. О чём этот курс
Курс состоит из двух частей.
В первой части мы рассмотрим теоретические основы баз данных, их виды, историю развития и т.п.
Во второй части будет конкретика: реализация баз данных в тех или иных СУБД, язык SQL и его стандарты и диалекты и т.п.
1.1.2. Основные определения
«База Данных (БД, database)» – структурированный организованный набор данных, описывающих характеристики какой-либо физической или виртуальной системы.
«Базой данных» часто упрощённо или ошибочно называют Системы Управления Базами Данных (СУБД, database management system, DBMS).
Нужно различать набор данных (собственно БД) и программное обеспечение, предназначенное для организации и ведения баз данных (СУБД).
Несмотря на то, что подавляющее количество времени мы будем говорить о БД, следует упомянуть о ещё одной базе – безе знаний.
База знаний, БЗ (knowledge base, KB) – специфический набор программных средств, разработанный для управления знаниями (метаданными), то есть сбором, хранением, поиском и выдачей знаний.
Раздел искусственного интеллекта, изучающий базы знаний и методы работы со знаниями, называется инженерией знаний.
Наиболее важный параметр БЗ – качество содержащихся знаний. Лучшие БЗ включают самую релевантную и свежую информацию, имеют совершенные системы поиска информации и тщательно продуманную структуру и формат знаний.
Основное отличие БЗ от БД строится на отличии данных от знаний.
Данные – это представление фактов и идей в формализованном виде, пригодном для передачи и обработки в некотором информационном процессе.
Знания – совокупность данных (у индивидуума, общества или у системы ИИ) о мире, включающих в себя информацию о свойствах объектов, закономерностях процессов и явлений, а также правилах использования этой информации для принятия решений. Правила использования включают систему причинно-следственных связей.
Главное отличие знаний от данных состоит в их активности, то есть появление в базе новых фактов или установление новых связей может стать источником изменений в принятии решений.
Т.о. мы получаем два очевидных факта:
БЗ может строиться на основе БД, но БЗ – более широкое и сложное понятие, нежели просто БД.
На основе БЗ может быть построена экспертная система.
Экспертная система (ЭС, expert system) – программное обеспечение, способное заменить специалиста-эксперта в разрешении проблемной ситуации.
ЭС начали разрабатываться исследователями искусственного интеллекта в 1970-х годах, а в 1980-х получили коммерческую поддержку.
Предельно упрощённый аналог ЭС каждый из вас видел в своей жизни – это всевозможные «мастера» (wizards), применяемые для установки и настройки того или иного ПО, а также для выполнения тех или иных действий.
Главное отличие «мастеров» от «нормальной ЭС» – отсутствие базы знаний; все действия жёстко запрограммированы.
Настоящая же ЭС способна по тем или иным входным данным выдать ответ на поставленный вопрос так или почти так, как это сделал бы эксперт, обладающий всеми теми же знаниями, которые хранятся в БЗ этой ЭС.
До классификации БД мы скоро доберёмся, а пока быстро рассмотрим классификацию БЗ, чтобы потом не возвращаться к этому вопросу.
В зависимости от уровня сложности систем, в которых применяются базы знаний, различают:
БЗ всемирного масштаба – например, Интернет;
БЗ национального масштаба – например, национальные разделы Википедии;
БЗ отраслевые – например, автомобильная или медицинская энциклопедия;
БЗ отдельных организаций;
БЗ экспертных систем.