- •Содержание
- •Введение
- •1.1. Основные понятия
- •1.2. Компоненты БнД
- •1.3. Классификация БнД и бд
- •1.4. Этапы проектирования бд
- •2.1. Необходимость инфологического моделирования
- •1.5. Взаимосвязь этапов проектирования бд
- •Вопросы для самоконтроля
- •Раздел 2. Проектирование баз данных. Тема 2. Инфологическое моделирование (начало)
- •2.1.1. Виды ограничений целостности
- •2.1.2. Причины, приводящие к нарушению ограничений целостности
- •2.2. Описание объектов и их свойств
- •Тема 3. Инфологическое моделирование (окончание)
- •3.1. Описание связей между объектами.
- •3. 2. Описание сложных объектов
- •Вопросы для самоконтроля
- •Тема 4. Даталогическое проектирование
- •4.1. Общие сведения
- •4.2. Подход к даталогическому проектированию
- •4.3. Определение состава бд
- •4.4. Разновидности даталогических моделей
- •Вопросы для самоконтроля
- •Тема 5. Реляционная даталогическая модель базы данных
- •5.1. Основные понятия
- •5.2. Цели проектирования рбд
- •Возможность хранения всех необходимых данных в бд;
- •Исключение избыточности данных;
- •Сведение числа хранимых в бд отношений к минимуму;
- •5.2.1. Возможность хранения всех необходимых данных в бд
- •5.2.2. Исключение избыточности данных
- •5.2.3. Сведение числа хранимых в бд отношений к минимуму
- •5.2.4. Нормализация отношений
- •Вопросы для самоконтроля
- •Тема 6. Метод проектирования реляционной базы данных на основе илм
- •Вопросы для самоконтроля
- •Тема 7. Пример проектирования реляционной базы данных на основе илм
- •7.1. Описание объектов и связей между ними
- •7.2. Лингвистические отношения
- •7.3. Алгоритмические связи показателей
- •7.4. Описание информационных потребностей пользователей
- •7.5. Ограничения целостности
- •7.6. Определение состава бд
- •7.7. Определение отношений, включаемых в бд
- •7.8. Описание логической структуры бд на языке субд (схема бд)
- •7.9. Сравнение спроектированной рбд с однотабличной бд
- •Вопросы для самоконтроля
- •Раздел 3. Описание информационных потребностей пользователей базы данных. Тема 8. Информационные потребности пользователей базы данных.
- •8.1. Типы и языки запросов
- •8.2. Реляционная алгебра (алгебра отношений)
- •8.2.1. Проекция
- •8.2.2. Выборка
- •8.2.3. Соединение
- •8.2.8. Деление
- •8.3. Примеры запросов на реляционном языке
- •Вопросы для самоконтроля
- •Раздел 4. Использование языка sql для работы с базами данных. Тема 9. Структурированный язык запросов sql
- •9.1. Стандарт и разновидности языка sql
- •9.2. Краткое введение в sql
- •Тема 10. Основные элементы языка sql. Использование языка sql для выборки данных
- •10.1. Оператор select
- •Тема 11. Отбор строк из таблиц. Условия поиска строк
- •Вопросы для самоконтроля
- •Тема 12. Сортировка таблиц
- •Тема 13. Использование псевдонимов для обозначения таблиц базы данных. Самосоединение таблиц. Итоговые запросы и агрегатные функции
- •Вопросы для самоконтроля
- •Тема 14. Запросы с группировкой
- •Тема 15. Вложенные запросы
- •Вопросы для самоконтроля
- •Тема 16. Изменение данных в базе данных
- •16.1. Корректировка таблиц бд
- •16.2. Создание объектов бд
- •16.3. Создание представлений
- •Вопросы для самоконтроля
- •Рекомендуемая литература
16.3. Создание представлений
В языке SQL различают несколько видов таблиц: базовые и таблицы представления (просмотры).
Базовые таблицы - это таблицы, созданные оператором CREATE TABLE. Представление (VIEW) является виртуальной таблицей. Оно отображает “взгляд” пользователя БД на существующие таблицы, т.е. является внешней моделью БД, описанной в виде подсхемы.
Например, при работе с БД Zgrad работника домоуправления, расположенного в 9-м микрорайоне интересуют только общие сведения о жителях этого микрорайона и характеристики их квартир, а не номера телефонов и получаемые жителями доходы.
Создать представление можно с помощью оператора
CREATE VIEW <имя представления> [(<список столбцов выборки>)] AS <оператор SELECT> [WITH CHECK OPTION]
Так, для описанного примера можно создать следующее представление:
CREATE VIEW region_9 AS SELECT * FROM person, flat WHERE person.Adr=flat.Adr AND Adr LIKE ‘9%’
В этом примере person и flat являются базовыми таблицами, содержащими сведения о жителях и квартирах Зеленограда, а region_9 - выборкой, содержащей сведения только о жителях и квартирах 9-го микрорайона.
Представление не хранится в виде физической таблицы. При выполнении оператора CREATE VIEW подзапрос, следующий за фразой AS, не исполняется, а запоминается в каталоге базы данных.
При обращении к представлению region_9 запрос преобразуется системой с учетом описания представления, и такой “комплексный” запрос исполняется.
Как видно из описания формата оператора CREATE VIEW, столбцы виртуальной таблицы могут быть заданы явно, а могут быть и опущены. В последнем случае представление будет содержать те столбцы, которые определены в подзапросе.
В явном виде необходимо задавать имена столбцов в случае, если какой-нибудь столбец представления получен путем вычисления арифметического выражения, или является результатом стандартной функции или константой, т.е. в том случае, когда результирующий столбец не имеет имени и не может его наследовать. В явном виде задавать имена столбцов надо также в том случае, если без этого два столбца или более имели бы одинаковые имена.
Фраза WITH CHECK OPTION (с проверкой) указывает на то, что при корректировке содержимого таблиц должна осуществляться проверка на соблюдение заданного условия.
В СУБД InterBase представление можно модифицировать, т.е. вносить изменения в соответствующую “таблицу”, если выполнены следующие условия:
1) в предложении SELECT, используемом для создания представления, должна быть указана только одна таблица или ссылка на другое модифицируемое представление;
2) поля исходной таблицы, указанной в предложении SELECT, которые не включены в представление, должны допускать неопределенные значения, чтобы могла выполняться операция вставки (INSERT);
3) предложение SELECT не должно содержать подзапросы, предикат DISTINCT, фразу HAVING, агрегированные функции (SUM, MAX, MIN, AVG), объединенные таблицы.
Вопросы для самоконтроля
Нарисуйте синтаксическую диаграмму для однострочного оператора INSERT.
Нарисуйте синтаксическую диаграмму для многострочного оператора INSERT.
Для учебной БД напишите оператор, добавляющий в базу данных сведения о новой квартире.
Для учебной БД напишите оператор, добавляющий в базу данных сведения о новом жителе, у которого общий доход такой же, как у жителя с номером 222.
Нарисуйте синтаксическую диаграмму для оператора DELETE.
Для учебной БД напишите оператор, удаляющий из базы данных сведения обо всех источниках дохода жителей, проживающих по адресу: Зеленоград, 1001-45.
Нарисуйте синтаксическую диаграмму для оператора UPDATE.
Для учебной БД напишите оператор, изменяющий в базе данных сведения о номере и категории телефона, установленного в квартире по адресу: Зеленоград, 1001-45.
Для учебной БД напишите оператор, создающий таблицу HAVE_D с указанием обязательно заполняемых столбцов (полей), значений по умолчанию, условий проверок, ключей.
