Компьютерная безопасность. Тема 3и. Основы построения баз данных Базы данных и информационные системы
Скачать 250 Kb.
|
1.5.Обеспечение целостности БДОбеспечение целостности БД означает выполнение ряда ограничений, соблюдение которых необходимо для поддержания непротиворечивости хранимых данных. Среди ограничений целостности можно выделить ограничения диапазонов значений атрибутов отношений и структурные ограничения на кортежи отношений. Первый тип ограничений целостности предполагает контроль значений атрибутов отношений Например, значения атрибута Дата_рождения не могут превышать значений атрибута Дата_приема в записях отношений о кадрах. Структурные ограничения фиксируют два требования целостности, которые должны поддерживаться реляционными СУБД. Требование целостности сущностей и целостности ссылок. Каждому экземпляру сущности, представленному в отношении, соответствует только один его кортеж. Требование состоит в том, что любой кортеж отношения должен быть отличим от любого другого кортежа этого отношения, т.е. иными словами, любое отношение должно обладать первичным ключом. Формулировка второго требования тесно связана с понятием внешнего ключа. Напомним, что внешние ключи служат для связи отношений (таблиц БД) между собой. При этом атрибут одной таблицы, назовем ее родительской, служащий для связи ее с другой таблицей - дочерней, в которой он является первичным ключом, называется внешним ключом данного отношения (таблицы). Говорят, что отношение, в котором определен внешний ключ, ссылается на отношение, в котором этот же атрибут является первичным ключом. Требование целостности по ссылкам, состоит в том, что для каждого значения внешнего ключа родительской таблицы должна найтись строка в дочерней таблице с таким же значением первичного ключа. Например, если в отношении О1 (Рис. 1.11) содержатся сведения о сотрудниках кафедры, а атрибут этого отношения Должн является первичным ключом отношения О2, то в этом отношении для каждой должности из О1 должна быть строка с соответствующим ей окладом. Родительская таблица Дочерняя таблица R1 R2
Ключ Внешний ключ Рис. 1.11. Связь отношений с помощью внешнего ключа 1.6. Языки запросов QBE и SQLХранимые в базе данные можно обрабатывать (просматривать и редактировать) "вручную" - с помощью имеющихся в каждой СУБД средств просмотра и редактирования данных в таблицах. Для повышения эффективности множественной обработки данных (редактирования и выбора данных из таблиц) создаются и выполняются запросы. Запрос представляет собой специальным образом описанное требование, определяющее состав производимых над БД операций по выборке или модификации хранимых данных. Для подготовки запросов с помощью различных СУБД, как правило, используются два основных языка описания запросов: язык QBE (Query By Example) - язык запросов по образцу; SQL (Structured Query Language) - структурированный язык запросов. По возможностям манипулирования данными при описании запросов указанные языки практически эквивалентны. Главное отличие между нии, по-видимому, заключается в способе формирования запросов: язык QBE предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса. Язык запросов по образцу Язык QBE позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы. Такой способ задания запросов обеспечивает высокую наглядность и не требует указания алгоритма выполнения операции - достаточно описать образец ожидаемого результата. В каждой из современных реляционных СУБД имеется свой вариант языка QBE. С помощью языка QBE можно задавать запросы однотабличные и многотабличные (выбирающие или обрабатывающие данные из нескольких связанных таблиц). При задании запросов с помощью языка QBE допустимы следующие операции: выборка, вычисление и модификация данных; вставка и удаление записей. Результатом выполнения запроса может быть новая таблица или обновленная исходная таблица. Выборка, вставка, удаление и модификация данных и записей могут выполняться с использованием условий, задаваемых с помощью логических выражений. Вычисления над данными задаются с помощью арифметических выражений и порождают в ответных таблицах новые - вычисляемые поля. Во многих современных СУБД, например, в Access и Visual FoxPro, многие действия по подготовке запросов с помощью языка QBE выполняются визуально с помощью мыши. В частности, визуальное связывание таблиц при подготовке запроса выполняется не элементами примеров, а просто "протаскиванием" мышью поля одной таблицы к полю другой. Структурированный язык запросов Структурированный язык запросов SQL основан на реляционном исчислении с переменными кортежами. Язык имеет несколько стандартов, наиболее распространенными из которых являются SQL-89 и SQL-92. SQL предназначен для выполнения операций над таблицами (создание, удаление, изменение структуры) и над данными таблиц (выборка, изменение, добавление и удаление), а также некоторых сопутствующих операций. SQL является непроцедурным языком и не содержит имеющихся в обычных языках программирования операторов управления, организации подпрограмм, ввода-вывода и т.п. В связи с этим SQL автономно не используется, а обычно погружен в в среду встроенного языка программирования СУБД (например, языка FoxPro СУБД Visual FoxPro) или даже процедурного языка типа С++ или Pascal. В современных СУБД с интерактивным интерфейсом можно создавать запросы, не применяя SQL. Однако его применение в некоторых случаях позволяет расширить возможности использования СУБД. К примеру, при подготовке запроса в среде Access можно перейти из окна конструктора запросов (задания запроса по образцу) в окно с эквивалентным оператором SQL. Подготовку нового запроса путем редактирования уже имеющегося в ряде случае проще выполнить путем изменения оператора SQL. К числу основных операторов усеченного подмножества SQL относятся следующие: CREATE TABLE - создание таблицы; DROP TABLE - удаление таблицы; CREATE INDEX - создание индекса; DROP INDEX - удаление индекса; ALTER TABLE - изменение структуры таблицы; SELECT, UPDATE, INSERT, DELETE - выборка, изменение, вставка и удаление записей. К дополнительным операторам SQL относятся следующие: CREATE DATABASE, SHOW DATABASE, START DATABASE, STOP DATABASE, DROP DATABASE - создание, просмотр, активизация, закрытие, удаление БД; CREATE VIEW, DROP VIEW - создание, удаление выборки (представления); CREATE SYNONYM - создание синонима; GRANT, REVOKE - назначение, удаление привилегии для работы с выборками и таблицами. Рассмотрим подробнее важнейший из перечисленных операторов - оператор SELECT. В упрощенном виде оператор имеет следующий формат: SELECT [ALL|DISTINCT] <список данных> FROM <список таблиц> [WHERE <условие выборки>] [GROUP BY <имя столбца> [, <имя столбца>]...] [HAVING <условие поиска>] [ORDER BY <спецификация сортировки>[,<спецификация сортировки>]...] Оператор SELECT позволяет выполнять выборку и вычисления над данными одной или нескольких таблиц. Результатом выполнения оператора является ответная таблица, которая может иметь (ALL) или не иметь (DISTINCT) повторяющиеся строки. В списке данных можно задавать имена столбцов и выражения над ними, к примеру арифметические. Если записи отбираются из нескольких таблиц, то используют составные имена <имя таблицы>.<имя столбца>. Пример. Имеется таблица Goods (товары) с полями: Code (код), Name (наименование) и Cost (стоимость). Требуется вывести стоимости и коды товаров, стоимость которых не превышает 500 единиц. Для решения поставленной задачи можно записать оператор SELECT следующим образом: SELECT Code, Cost FROM Goods WHERE Cost <=500 В различных СУБД состав операторов SQL может несколько отличаться от рассмотренного нами. |