- •2. Основы построения баз данных
- •2.1. Базы данных и информационные системы
- •2.1.1.Архитектура информационной системы
- •2.1.2. Модели данных
- •2.1.3. Системы управления базами данных
- •2.2. Реляционная модель данных
- •2.2.1 Элементы реляционной модели
- •2.2.2 Ограничения и операции над отношениями
- •2.3. Проблемы проектирования реляционных бд
- •2.3.1 Избыточное дублирование данных и аномалии
- •2.3.2 Формирование исходного отношения
- •2.4. Проектирование бд методом нормальных форм
- •2.4.1.Зависимости между атрибутами
- •2.4.2. Выявление зависимостей между атрибутами
- •2.4.3. Нормальные формы
- •2.5. Обеспечение целостности бд
- •2.6. Языки запросов qbe и sql
- •2.6.1. Язык запросов по образцу
- •2.6.2. Структурированный язык запросов
2.5. Обеспечение целостности бд
Обеспечение целостности БД означает выполнение ряда ограничений, соблюдение которых необходимо для поддержания непротиворечивости хранимых данных. Среди ограничений целостности можно выделить ограничения диапазонов значений атрибутов отношений и структурные ограничения на кортежи отношений.
Первый тип ограничений целостности предполагает контроль значений атрибутов отношений. Например, значения атрибута Дата_рождения не могут превышать значений атрибута Дата_приема в записях отношений о кадрах.
Структурные ограничения фиксируют два требования целостности, которые должны поддерживаться реляционными СУБД: требование целостности сущностей и целостности ссылок. Каждому экземпляру сущности, представленному в отношении, соответствует только один его кортеж. Первое требование состоит в том, что любой кортеж отношения должен быть отличим от любого другого кортежа этого отношения, иными словами, любое отношение должно обладать первичным ключом.
Формулировка второго требования тесно связана с понятием внешнего ключа. Напомним, что внешние ключи служат для связи отношений (таблиц БД) между собой. При этом атрибут одной таблицы, назовем ее родительской, служащий для связи ее с другой таблицей — дочерней, в которой он является первичным ключом — называется внешним ключом данного отношения (таблицы). Говорят, что отношение, в котором определен внешний ключ, ссылается на отношение, в котором этот же атрибут является первичным ключом.
Требование целостности по ссылкам состоит в том, что для каждого значения внешнего ключа родительской таблицы должна найтись строка в дочерней таблице с таким же значением первичного ключа. Например, если в отношении R1 (рис. 24) содержатся
R1 Родительская таблица R1
ФИО |
Должн |
Каф |
Стаж |
Иванов И.М. |
преп |
25 |
5 |
Петров М.И. |
ст.преп |
25 |
7 |
Сидоров Н.Г. |
преп |
25 |
10 |
Егоров В.В. |
преп |
24 |
5 |
К люч Внешний ключ
R2 Дочерняя таблица
Должн |
Оклад |
преп |
500 |
ст.преп |
800 |
К люч
Рис. 24. Связь отношений с помощью внешнего ключа
сведения о сотрудниках кафедры, а атрибут этого отношения Должн является первичным ключом отношения R2, то в этом отношении для каждой должности из R1 должна быть строка с соответствующим ей окладом.
2.6. Языки запросов qbe и sql
Хранимые в базе данные можно обрабатывать (просматривать и редактировать) «вручную» — с помощью имеющихся в каждой СУБД средств просмотра и редактирования данных в таблицах. Для повышения эффективности множественной обработки данных (редактирования и выбора данных из таблиц) создаются и выполняются запросы.
Запрос представляет собой специальным образом описанное требование, определяющее состав производимых над БД операций по выборке или модификации хранимых данных.
Для подготовки запросов с помощью различных СУБД, как правило, используются два основных языка описания запросов:
• язык QBE (Query By Example) — язык запросов по образцу;
• SQL (Structured Query Language) — структурированный язык запросов.
По возможностям манипулирования данными при описании запросов указанные языки практически эквивалентны. Главное отличие между ними, по-видимому, заключается в способе формирования запросов: язык QBE предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса.