- •30. Основные понятия и определения.
- •32. Архитектура информационной системы
- •33. Модели данных
- •34.Системы управления базами данных
- •35. Реляционная модель данных
- •36. Проблемы проектирования реляционных бд
- •37. Проектирование бд методом нормальных форм
- •Часть 5. Базы данных
- •38. Обеспечение целостности бд
- •19.6. Языки запросов qbe и sql
- •Часть 5 Базы данных
38. Обеспечение целостности бд
Обеспечение целостности БД означает выполнение ряда ограничений, соблюдение которых необходимо для поддержания непротиворечивости хранимых данных. Среди ограничений целостности можно выделить ограничения диапазонов значений атрибутов отношений и структурные ограничения на кортежи отношений.
Первый тип ограничений целостности предполагает контроль значений атрибутов значений. Например, значения атрибута Дата_рождения не могут превышать значения атрибута Дата_приема в записях отношений о кадрах. структурные ограничения фиксируют два требования целостности, которые должны придерживаться реляционными СУБД: требование целостности сущностей и целост-лылок. Каждому экземпляру сущности, представленному в отношении, соответ-
-олько один его кортеж. Первое требование состоит в том, что любой кортеж от-я должен быть отличим от любого другого кортежа этого отношения, иными
-з, любое отношение должно обладать первичным ключом.
:мулировка второго требования тесно связана с понятием внешнего ключа. Напом-
э внешние ключи служат для связи отношений (таблиц БД) между собой. При этом
одной таблицы, назовем ее родительской, служащий для связи ее с другой табли-эчерней, в которой он является первичным ключом — называется внешним ключом
отношения (таблицы). Говорят, что отношение, в котором определен внешний ключ,
- ся на отношение, в котором этот же атрибут является первичным ключом.
-ование целостности по ссылкам состоит в том, что для каждого значения внеш-
-оча родительской таблицы должна найтись строка в дочерней таблице с таким «нием первичного ключа. Например, если в отношении R1 (рис. 19.11) содержат-
-гсельская таблица Дочерняя таблица
R2
Должн
|
Оклад
|
преп
|
500
|
ст.преп
|
800
|
Ключ
ю
|
Должн
|
Каф
|
Стаж
|
нов И.М.
|
преп
|
25
|
5
|
зов М.И.
|
ст.преп
|
25
|
1
|
оров Н.Г.
|
преп
|
25
|
10
|
зов В. В.
|
преп
|
24
|
5
|
Внешний ключ
Рис. 19.11. Связь отношений с помощью внешнего ключа
=ния о сотрудниках кафедры, а атрибут этого отношения Должн является первич-
•очом отношения R2, то в этом отношении для каждой должности из R1 должна 3>ока с соответствующим ей окладом.
19.6. Языки запросов qbe и sql
яимые в базе данные можно обрабатывать (просматривать и редактировать) «вруч-
- с помощью имеющихся в каждой СУБД средств просмотра и редактирования в таблицах. Для повышения эффективности множественной обработки данных
зфования и выбора данных из таблиц) создаются и выполняются запросы.
эос представляет собой специальным образом описанное требование, определяющее
сроизводимых над БД операций по выборке или модификации хранимых данных, подготовки запросов с помощью различных СУБД, как правило, используются
овных языка описания запросов:
245
• язык QBE (Query By Example) — язык запросов по образцу;
• SQL (Structured Query Language) — структурированный язык запросов.
По возможностям манипулирования данными при описании запросов указанные языки практически эквивалентны. Главное отличие между ними, по-видимому, заключается в способе формирования запросов: язык ОБЕ предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса.
Язык запросов по образцу
Язык QBE позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы. Такой способ задания запросов обеспечивает высокую наглядность и не требует указания алгоритма выполнения операции — достаточно описать образец ожидаемого результата. В каждой из современных реляционных СУБД имеется свой вариант языка QBE.
С помощью языка ОБЕ можно задавать запросы однотабличные и многотабличные (выбирающие или обрабатывающие данные из нескольких связанных таблиц).
При задании запросов с помощью языка ОБЕ допустимы следующие операции: выборка, вычисление и модификация данных; вставка и удаление записей. Результатом выполнения запроса может быть новая таблица или обновленная исходная таблица.
Выборка, вставка, удаление и модификация данных и записей могут выполняться с использованием условий, задаваемых с помощью логических выражений. Вычисления над данными задаются с помощью арифметических выражений и порождают в ответных таблицах новые — вычисляемые поля.
Во многих современных СУБД, например, в Access и Visual FoxPro, многие действия по подготовке запросов с помощью языка ОБЕ выполняются визуально с помощью мыши. В частности, визуальное связывание таблиц при подготовке запроса выполняется не элементами примеров, а просто «протаскиванием» мышью поля одной таблицы к полю другой.
Структурированный язык запросов
Структурированный язык запросов SQL основан на реляционном исчислении с переменными кортежами. Язык имеет несколько стандартов, наиболее распространенными из которых являются SOL-89 и SQL-92.
SQL предназначен для выполнения операций над таблицами (создание, удаление, изменение структуры) и над данными таблиц (выборка, изменение, добавление и уда ление), а также некоторых сопутствующих операций. SOL является непроцедурным языком и не содержит имеющихся в обычных языках программирования операторов управления, организации подпрограмм, ввода-вывода и т. п. В связи с этим SOL авто номно не используется, а обычно погружен в в среду встроенного языка программиро вания СУБД (например, языка FoxPro СУБД Visual FoxPfo) или даже процедурного язы ка типа C++ или Pascal. *
В современных СУБД с интерактивным интерфейсом можно создавать запросы, не применяя SOL. Однако его применение в некоторых случаях позволяет расширить возможности использования СУБД. К примеру, при подготовке запроса в среде /Access можно перейти из окна конструктора запросов (задания запроса по образцу) в окно с эквива-