
- •Содержание
- •Глава 1. Основные понятия 6
- •Глава 2. Модели данных 19
- •Глава 3. Функциональные зависимости 46
- •Глава 4. Нормализация 54
- •Глава 5. Методология концептуального проектирования 69
- •Глава 6. Методология логического проектирования баз данных реляционного типа 75
- •Глава 7. Методология физического проектирования реляционных бд 93
- •Глава 8. Язык структурированных запросов sql. 107
- •Предисловие
- •Глава 1. Основные понятия
- •1.1. Информационные системы с базами данных.
- •1.2. Функции и возможности субд
- •1.3. Программные компоненты субд
- •1.4. Архитектура среды базы данных
- •1.5. Реляционные объекты данных: терминология
- •1.6. Формальные определения
- •1.6.1. Домены
- •1.6.2. Отношения
- •1.7. Целостность реляционных данных
- •1.7.1. Потенциальные ключи
- •1. Свойством уникальности.
- •2. Свойством не избыточности.
- •1.7.2. Первичные и альтернативные ключи
- •1.7.3. Внешние ключи
- •1.7.4. Ссылочная целостность
- •1.7.5. Правила внешних ключей
- •Глава 2. Модели данных
- •2.1. Элементы er-модели
- •2.1.1. Множество сущностей
- •2.1.2. Атрибуты
- •2.1.3. Связи
- •2.1.4. Рекурсивная связь
- •2.1.5. Атрибуты связей
- •2.2. Структурные ограничения
- •2.2.1. Связь "один-к-одному"
- •2.2.2. Связь "один-ко-многим"
- •2.2.3. Связь "многие-ко-многим"
- •2.2.4. Степень участия
- •2.2.5. Многосторонние связи
- •2.2.6. Слабые множества сущностей
- •2.3. Проблемы er-моделирования (Материал данного параграфа не обязателен для изучения)
- •2.3.1. Ловушки разветвления
- •2.3.2. Ловушка разрыва
- •2.4. Ееr-модель
- •2.4.1. Суперклассы и подклассы типов сущностей
- •2.4.2. Наследование атрибутов
- •2.4.3. Специализация
- •2.4.4. Генерализация
- •2.4.5. Ограничения, накладываемые на процедуры специализации и генерализации
- •2.4.6. Категоризация
- •2.5. Реляционные модели
- •2.5.1. От er-диаграмм к реляционным схемам
- •2.5.2. От er-связей к к отношениям
- •2.5.3. Объединение отношения
- •2.5.4. Преобразование слабых множеств сущностей
- •Глава 3. Функциональные зависимости
- •3.1.Основные определения
- •3.2. Тривиальные и нетривиальные зависимости
- •3.3. Замыкание множества зависимостей
- •3.4. Правила вывода Армстронга
- •3.5. Неприводимое множество зависимостей
- •Примеры
- •Глава 4. Нормализация
- •4.1. Декомпозиция без потерь
- •4.2. Первая, вторая и третья нормальные формы.
- •Вторая нормальная форма (2нф).
- •Третья нормальная форма ( 3нф ).
- •Нормальная форма Бойса-Кодда
- •4.3. Многозначные зависимости
- •4.4. Четвертая нормальная форма (4нф)
- •4.5. Пятая нормальная форма (5нф)
- •4.6. Итоговая схема процедуры нормализации
- •4.7. Альтернативный набор определений нфбк, 4нф и 5нф
- •4.8. Выделим цели процесса нормализации
- •4.9. Другие нормальные формы
- •Глава 5. Методология концептуального проектирования
- •5.1. Источники представления пользователей о предметной области
- •5.2. Определение типов сущностей
- •5.3. Определение типов связей
- •5.4. Определение атрибутов
- •5.5. Определение доменов атрибутов
- •5.6. Определение потенциальных и первичных ключей
- •5.7. Генерализация и специализация типов сущностей
- •5.8. Создание диаграммы "сущность-связь"
- •5.9. Обсуждение локальных концептуальных моделей данных с конечными пользователями
- •Глава 6. Методология логического проектирования баз данных реляционного типа
- •6.1. Преобразование локальной концептуальной модели данных в локальную логическую модель
- •6.1.1. Удаление связей типа m:n
- •6.1.2. Удаление сложных связей
- •6.1.3. Удаление рекурсивных связей
- •6.1.4. Удаление связей с атрибутами
- •6.1.5. Удаление множественных атрибутов
- •6.1.6. Перепроверка связей типа 1:1
- •6.1.7. Удаление избыточных связей
- •6.2. Наборы отношений локальных логических моделей данных
- •6.2.1. Сильные типы сущностей
- •6.2.2. Слабые типы сущностей
- •6.2.3. Бинарные связи типа "один-к-одному" (1:1)
- •6.2.4. Бинарные связи типа "один-ко-многим" (1:м)
- •6.2.5. Связи типа "суперкласс/подкласс"
- •6.2.6. Документирование созданных отношений и атрибутов внешних ключей
- •6.3. Проверка модели с помощью правил нормализации
- •6.4. Проверка модели в отношении транзакций
- •6.5. Создание диаграмм "сущность-связь"
- •6.7.1. Слияние локальных логических моделей данных в единую глобальную модель данных
- •6.7.1.1. Анализ имен сущностей и их первичных ключей
- •6.7.1.2. Анализ имен связей
- •2. Слияние эквивалентных сущностей с различными первичными ключами
- •3. Слияние сущностей с различными именами, имеющих одинаковые или различные первичные ключи
- •7.1.1. Oписание на языке sql стандарта iso 1992 (sql2)
- •Листинг 1. Операторы языка sql, предназначенные для создания таблицы
- •7.1.2. Реализация с использованием триггеров
- •Пример 1
- •7.1.3. Реализация с использованием уникальных индексов
- •Пример 2
- •7.2. Реализация бизнес-правил предприятия в среде целевой субд
- •7.3. Организация эффективного хранения данных
- •7.3.1. Анализ транзакций.
- •7.3.2. Выбор файловой структуры.
- •Последовательные файлы
- •Хешированные файлы
- •Индексно-последовательные файлы
- •Двоичные деревья
- •7.3.3. Определение вторичных индексов.
- •7.3.4. Анализ необходимости введения контролируемой избыточности.
- •7.3.5. Определение требований к дисковой памяти.
- •Последовательные файлы
- •Хешированные файлы
- •7.4. Разработка механизмов защиты
- •7.4.1. Разработка пользовательских представлений (видов).
- •7.4.2. Определение прав доступа.
- •7.5. Организация мониторинга и настройка функционирования системы
- •Глава 8. Язык структурированных запросов sql.
- •Операторы ddl
- •Типы данных
- •Создание файла бд
- •Создание (определение) таблиц
- •Определение столбцов
- •Примеры создания таблиц
- •Удаление таблиц
- •Модификация структуры таблиц
- •Операторы, изменяющие информацию в бд
- •Добавление новых данных.
- •Удаление существующих данных.
- •Обновление существующих данных.
- •Запрос информации из бд
- •Инструкция select
- •Предложение select.
- •Предложение from.
- •Запросы
- •Порядок выполнения многотабличных запросов
- •Виды объединений
- •Предложение where.
- •Условия отбора
- •Составные или сложные условия отбора
- •Предложение group by.
- •Предложение having.
- •Предложение order by.
- •Применение оператора select в инструкции insert
Предложение order by.
Строки результатов запроса, как и строки таблицы базы данных, не имеют определённого порядка, но, включив в инструкцию SELECT предложение ORDER BY, можно отсортировать результаты запроса. Синтаксическая диаграмма этого предложения представлена на рис. 9.
Рис.9.
После ключевых слов ORDER BY следует перечисление названий столбцов с указанием порядка следования значений, задаваемого ключевыми словами ASC (от Ascending – возрастающий) или DESC (от Descending – убывающий), через запятую. Можно не указывать явно порядок сортировки, и в таком случае по умолчанию будет принят возрастающий порядок. Сортировка по нескольким столбцам будет производиться так:
– Все строки будут отсортированы по первому столбцу, указанному в перечислении.
– Строки, для которых значения первого столбца совпадают, будут отсортированы по второму столбцу, указанному в перечислении и т.д.
Пример
Несмотря на всю громоздкость оператора SELECT, связанную главным образом с его универсальностью, для получения простых выборок из базы данных не требуется использовать все его возможности. Возьмём простой пример. Предположим, что мы хотим узнать, какие города есть в Центральном регионе согласно данным наших таблиц. Вот необходимый нам запрос:
SELECT r.Region, c.City
FROM Regions r, Cities c
WHERE r.KodR = c.RegRel AND r.Region = 'Центральный'
Результатом этого запроса будет таблица.
Region |
City |
Центральный |
Москва |
Центральный |
Петербург |
Разберём данный пример по предложениям.
В предложении SELECT мы указали (при помощи псевдонимов таблиц из предложения FROM) какие колонки каких таблиц мы хотим видеть в результирующем запросе.
В предложении FROM мы перечислили таблицы, из которых надо производить выборку, и их псевдонимы.
В предложении WHERE мы задали два сложных условия на выборку, состоящие из двух простых. В первом условии мы сказали, чтобы из декартова пересечения таблиц Regions и Cities брались только строки, у которых значение колонки KodR из таблицы Regions было равно значению колонки RegRel из таблицы Cities. Во втором условии сказали, чтобы для всех строк итоговой выборки значение столбца Region было равно 'Центральный'. И при помощи оператора AND сказали, что для всех строк итоговой выборки обязательно должны выполниться оба вышеперечисленных условия.
Применение оператора select в инструкции insert
Ранее мы рассмотрели оператор INSERT, вставляющий одну запись в таблицу БД. Объединение оператора SELECT и оператора INSERT даёт очень мощный инструмент для внесения больших количеств данных в таблицу – так называемый многострочный оператор INSERT. Его синтаксис представлен на Рис. 10.
Рис. 10.
Процедура добавления строк со значениями, взятыми из той же базы данных, может сперва показаться странной, но иногда оказывается необходимой. В частности, это может понадобиться для предоставления быстрого доступа к аналитическим данным, собранным по большим объёмам информации и сохранённым в отдельную таблицу при помощи многострочного оператора INSERT. На запрос, содержащийся в операторе INSERT, стандартом SQL1 наложены следующие ограничения:
В запрос нельзя включать предложение ORDER BY. Это логическое ограничение, т.к. включение этого предложения всё равно ничего не даст, ведь данные в целевой таблице всё равно хранятся неупорядоченными.
Таблица результатов запроса должна содержать количество столбцов, равное длине списка столбцов в инструкции INSERT (или полностью всю целевую таблицу, если список опущен), а типы данных соответствующих столбцов таблицы результатов запроса и целевой таблицы должны быть полностью совместимы.
Запрос не может быть запросом на объединение (UNION не рассматривался в данной лекции) нескольких различных инструкций SELECT.
Имя целевой таблицы инструкции INSERT не может присутствовать в предложении FROM запроса. Тем самым запрещается добавление таблицы самой к себе.
Последние два ограничения в стандарте SQL2 были ослаблены.
Резюме
В данной лекции нами были рассмотрены операторы, изменяющие информацию в БД, и операторы, выбирающие информацию из БД. Мы выяснили, что для добавления данных служит инструкция INSERT в её однострочном и многострочном вариантах, для удаления служит инструкция DELETE, а для изменения -- инструкция UPDATE. Более подробно был рассмотрен оператор SELECT, принципы построения запросов на выборку и их применение в качестве аргумента для многострочной инструкции INSERT.
Некоторые вопросы, не рассмотренные в данных лекциях:
Создание, модификация и удаление определений прочих объектов базы данных;
Механизмы триггеров;
Механизмы защиты данных от несанкционированного доступа;
Системный каталог;
Индексирование данных;
Принципы обработки транзакций;
Принципы целостности данных;
Сложные запросы на выборку;
Подчинённые запросы;
Представления.
Все вопросы связаны со встроенным и динамическим SQL.
Your index page goes here...
In MS-Word, select INDEX AND CONTENTS from the INSERT menu.
Select INDEX and click OK.