
- •1. История развития баз данных
- •3. Модели данных [1]
- •1. История развития баз данных
- •1.1. Файлы и файловые системы
- •1.2. Базы данных на больших эвм
- •1.3. Эпоха персональных компьютеров
- •1.4. Распределенные базы данных
- •1.5. Особенности настоящего периода:
- •2. Проблемы обработки информации
- •Основные функции субд
- •Типовая организация современной субд
- •3. Модели данных [1]
- •3.1. Системы управления файлами
- •3.2. Иерархические базы данных
- •3.3. Сетевые базы данных
- •3.4. Реляционные базы данных
- •Недостатки реляционных систем
- •3.5. Объектно-ориентированные базы данных
- •Преимущества и недостатки оосубд [8, с.817]
- •3.6. Объектно-реляционные базы данных
- •4. Реляционная модель данных [2]
- •5. Операции над отношениями
- •5.1. Теоретико-множественные операции реляционной алгебры
- •5.1.1 Объединение отношений
- •5.1.2. Пересечение отношений
- •5.1.3. Разность отношений
- •5.1.4. Расширенное декартово произведение
- •5.2. Специальные операции реляционной алгебры
- •5.2.1. Операция фильтрации
- •5.2.2. Операция проектирования
- •5.2.3. Операция условного соединения
- •5.2.4. Операция деления
- •5.2.5.Примеры использования операций реляционной алгебры
- •Целостность [8]
- •6. Проектирование бд Жизненный цикл бд
- •Проектирование бд
- •Проектирование бд с учетом конкретной архитектуры Архитектура клиент-сервер
- •Структура сервера базы данных
- •Проектирование распределенных бд
- •11.1. Концепции распределенных баз данных
- •Этапы проектирования реляционной базы данных
- •6.1. Разработка технического задания
- •6.2. Разработка структуры бд
- •6.3. Нормализация
- •6.3.1. Первая нормальная форма
- •6.3.2. Вторая нормальная форма
- •6.3.3. Третья нормальная форма
- •6.3.4. Нормальная форма Бойса-Кодда
- •6.3.5. Четвертая и пятая нормальные формы
- •6.3.6. Денормализация
- •Проектирование реляционной базы данных на основе декомпозиции универсального отношения (плоской таблицы)
- •7.Язык запросов sql (Structured Query Language)
- •7.1. История развития
- •7.2. Как работает sql?
- •7.3. Интерактивный и встроенный sql
- •7.4. Типы данных
- •7.6. Оператор выбора select (MySql)
- •7.6.1. Предикаты предложения where
- •7.6.2. Примеры использования оператора select
- •7.6.3. Применение агрегатных функций и вложенных запросов в операторе выбора
- •8. Система управления базами данных (субд) MySql
- •8.1. Преимущества MySql перед другими субд. Недостатки
- •8.2. Инструментарий, поставляемый с MySql
- •8.3. Установка и завершение связи с сервером
- •8.4. Команды sql для MySql. Правила оформления листингов
- •8.5. Основы использования MySql
- •8.5.1. Замечания по организации работ с MySql
- •8.5.2. Программы MySql
- •8.5.2.1. Стандартные опции программ MySql
- •8.5.2.2. Конфигурационные файлы
- •8.5.2.3. Переменные среды
- •8.5.2.4. Клиенты mysql и mysqlc
- •Программирование приложений
- •Использование специализированных библиотек и встраиваемого sql
- •Odbc - открытый интерфейс к базам данных на платформе ms Windows
- •Jdbc - мобильный интерфейс к базам данных на платформе Java
- •9. Администрирование бд
- •9.1. Управление данными на предприятии
- •9.2. Основные функции dba
- •9.3. Администрирование в MySql [1])
- •9.3.1. Обеспечение доступности данных
- •9.3.2. Поддержание целостности данных
- •9.3.3. Подготовка к катастрофе
- •9.3.4. Поддержка пользователей
- •9.3.5. Разработка и внедрение стандартов
- •9.3.6. О хранении данных
- •9.3.6.1. Журнал транзакций
- •9.3.6.2. Журнальные файлы
- •9.3.7. Безопасность
- •9.3.7.1. Схемы привилегий
- •9.3.7.2. Задание привилегий
- •9.3.8. Оптимизация
- •9.3.8.1. Оптимизация запросов
- •9.3.8.2. Оптимизатор запросов
- •9.3.8.3. Выбор типа столбцов и эффективность запросов
- •9.3.8.4. Эффективная загрузка данных
- •9.3.8.5. Оптимизация для администратора
- •10. Транзакции и параллельные вычисления
- •10.1. Параллельные запросы
- •10.2. Транзакции
- •10.3. Уровни изоляции
- •10.4. Выполнение транзакций
- •10.5. Блокировки
- •10.6. Программные блокировки
- •Мониторы транзакций
- •12. Направления и тенденции развития баз данных
- •12.1. Ограничения реляционных систем
- •12.2. Особенности построения информационных хранилищ
- •Что достигается через использование технологии хранилищ данных?
- •Проблемы хранилищ данных
- •12.3. Olap-технология
- •Правила для olap-систем
- •12.3.1. Реляционные olap-системы
- •12.3.2. Многомерные olap-системы
- •12.3.3. Принципы построения многомерной базы данных
- •12.4. Oltp-технологии
- •13. Интеграция субд в среду Web
- •13.1. Публикация бд в Интернете
- •13.1.1. Общие концепции публикации бд в Интернете
- •13.1.2. Технологии публикации бд в Internet.
- •13.2. Сценарии JavaScript, jScript и vbScript
- •13.3. Элементы управления ActiveX
- •13.4. Апплеты и сервлеты Java
- •13.5. Интерфейсы
- •13.5.1. Интерфейсы cgi и WinCgi
- •13.5.2. Интерфейс isapi/nsapi
- •13.5.3. Asp, php, idc/htx-страницы
- •13.5.4. Формирование Web-страниц
- •13.5.5. Интерфейсы ole db, ado, odbc
- •13.6. Статическая публикация бд
- •13.7. Динамическая публикация бд
- •13.9. Протоколы передачи гипертекста
- •13.10. Универсальный указатель ресурсов
- •13.11. Состав и теги html-документа
- •13.15. Двухуровневые Web-приложения
- •13.16. Трехуровневые Web-приложения
- •13.17. Многоуровневые Web-приложения
- •13.18. Характеристики интерфейсов ole db, ado и odbc
- •Список использованной литературы
- •Приложения 1. Типы таблиц, поддерживаемых MySql
- •Приложение 2. Встроенные функции
- •Управляющие функции sql для MySql
- •Статистические функции
- •Математические функции
- •Строковые функции
- •Функции работы с датой и временем
- •Приложение 3. Инструкции языка sql для MySql
- •Приложение 4. Маленькая база для маленькой компании (OpenOffice_MySql) Приложение 5. MySql – начинающим администраторам Приложение 6. О метаданных
7.6.2. Примеры использования оператора select
Самый простой запрос SELECT без необязательных частей соответствует просто декартову произведению. Например, выражение
SELECT * FROM R1, R2
соответствует декартову произведению таблиц R1 и R2.
Пример:
-
R1
Иван
Иванов
Петр
Петров
-
R2
Программист
Администратор
-
Выборка SELECT * FROM R1, R2
Иван
Иванов
Программист
Иван
Иванов
Администратор
Петр
Петров
Программист
Петр
Петров
Администратор
Выражение
SELECT R1.A, R2.B FROM R1, R2
соответствует проекции декартова произведения двух таблиц на два столбца: А из таблицы R1 и В из таблицы R2, при этом дубликаты всех строк сохранены (в отличие от операции проектирования в реляционной алгебре, где при проектировании по умолчанию все дубликаты кортежей уничтожаются).
В качестве примера еще раз рассмотрим базу данных Сессия, с которой мы познакомились при изучении операций реляционной алгебры и которая моделирует сдачу сессии в некотором учебном заведении. Напомним, что эта база состоит из трех отношений (таблиц) R1, R2, R3.
R1= (ФИО, Дисциплина, Оценка);
R2 =(ФИО, Группа);
R3 = (Группы, Дисциплина)
-
R1
ФИО
Дисциплина
Оценка
Петров Ф. И.
Базы данных
5
Сидоров К. А.
Базы данных
4
Миронов А. В.
Базы данных
2
Степанова К. Е.
Базы данных
2
Крылова Т. С.
Базы данных
5
Сидоров К. А.
Системный анализ
4
Степанова К. Е.
Системный анализ
2
Крылова Т.
Системный анализ
5
Миронов А. В.
Системный анализ
Null
Владимиров В. А.
Базы данных
5
Трофимов П. А.
Сети и телекоммуникации
4
Иванова Е. А.
Сети и телекоммуникации
5
Уткина Н. В.
Сети и телекоммуникации
5
Владимиров В. А.
Английский язык
4
Трофимов П. А.
Английский язык
5
Иванова Е. А.
Английский язык
3
Петров Ф. И.
Английский язык
5
-
R2
ФИО
Группа
Петров Ф. И.
КТ-465
Сидоров К. А.
КТ-465
Миронов А. В.
КТ-465
Крылова Т. С.
КТ-465
Владимиров В. А.
КТ-465
Трофимов П. А.
КТ-466
Иванова Е. А.
КТ-466
Уткина Н. В.
КТ-466
-
R3
Группа
Дисциплина
КТ-465
Базы данных
КТ-465
Системный анализ
КТ-465
Английский язык
КТ-466
Английский язык
КТ-466
Сети и телекоммуникации
Приведем несколько примеров использования оператора SELECT для получения выборок из базы данных Сессия.
1) Вывести список всех групп (без повторений), в которых должны пройти экзамены.
SELECT DISTINCT Группа FROM R3;
Результат:
Группа
КТ-465
КТ-466
2) Вывести список студентов, которые сдали экзамен по дисциплине «Базы данных» на «отлично».
SELECT ФИО FROM R1
WHERE Дисциплина = 'Базы данных' AND Оценка = 5;
Результат:
ФИО
Петров Ф.И.
Крылова Т.С.
3) Вывести список всех студентов, которым надо сдавать экзамены, с указанием названий дисциплин, по которым должны проводиться эти экзамены.
SELECT ФИО, Дисциплина
FROM R2, R3
WHERE R2.Группа = R3.Группа;
Здесь предложение WHERE задает условия соединения записей отношений R2 и R3. При отсутствии условий соединения в части WHERE результат будет эквивалентен расширенному декартову произведению, и в этом случае каждому студенту были бы приписаны все дисциплины из отношения R3, а не те, которые должна сдавать его группа. Это, естественно, особенно важно в том случае, если для разных групп списки дисциплин сессии не совпадают.
Результат:
ФИО |
Дисциплина |
Петров Ф. И. |
Базы данных |
Петров Ф. И. |
Системный анализ |
Петров Ф. И. |
Английский язык |
Сидоров К. А. |
Базы данных |
Сидоров К. А. |
Системный анализ |
Сидоров К. А. |
Английский язык |
Миронов А. В. |
Базы данных |
Миронов А. В. |
Системный анализ |
Миронов А. В. |
Английский язык |
Крылова Т. С. |
Базы данных |
Крылова Т. С. |
Системный анализ |
Крылова Т. С. |
Английский язык |
Владимиров В. А. |
Базы данных |
Владимиров В. А. |
Системный анализ |
Владимиров В. А. |
Английский язык |
Трофимов П. А. |
Английский язык |
Трофимов П. А. |
Сети и телекоммуникации |
Иванова Е. А. |
Английский язык |
Иванова Е. А. |
Сети и телекоммуникации |
Уткина Н. В. |
Английский язык |
Уткина Н. В. |
Сети и телекоммуникации |
4) Вывести список студентов, имеющих несколько двоек.
SELECT DISTINCT R1.ФИО
FROM R1 a, R1 b
WHERE a.ФИО = b.ФИО AND
a.Дисциплина <> b.Дисциплина AND
а.Оценка <= 2 AND b.Оценка <= 2;
Здесь мы использовали два псевдонима для именования отношения R1: а и b, так как для записи условий поиска нам необходимо работать сразу с двумя экземплярами данного отношения.
Результат:
ФИО
Степанова К. Е.
Из этих примеров хорошо видно, что логика работы оператора выбора (декартово произведение—селекция—проекция) не совпадает с порядком описания в нем данных (сначала список полей для проекции, потом список таблиц для декартова произведения, потом условие соединения). Дело в том, что SQL изначально разрабатывался для применения конечными пользователями, и его стремились сделать как можно ближе к языку естественному, а не к языку алгоритмическому. По этой причине SQL на первых порах вызывает путаницу и раздражение у начинающих его изучать профессиональных программистов, которые привыкли разговаривать с машиной именно на алгоритмических языках.
Наличие неопределенных (Null) значений повышает гибкость обработки информации, хранящейся в БД. В наших примерах мы можем предположить ситуацию, когда студент пришел на экзамен, но не сдавал его по некоторой причине, в этом случае оценка по некоторой дисциплине для данного студента имеет неопределенное значение. В данной ситуации можно поставить вопрос: «Найти студентов, допущенных к экзамену, но не сдававших его» с указанием названия дисциплины.
В этом случае оператор SELECT будет выглядеть следующим образом:
SELECT ФИО, Дисциплина FROM R1 WHERE Оценка IS NULL
Результат:
ФИО |
Дисциплина |
Миронов А. В. |
Системный анализ |