Основные понятия теории баз данных.
Лекция, 18 Ноября 2012, автор: пользователь скрыл имя
Описание работы
Лекции с глоссарием по базам данным
Работа содержит 1 файл
Лекции_БД_ВМЕСТЕ С ГЛОССАРИЕМ.doc
— 1.52 Мб (Скачать)Основным отличием реальной дедуктивной
СУБД от реляционной является то, что
и правила интенциональной
Отметим, что обычно языки запросов и определения интенциональной части БД являются логическими (поэтому дедуктивные БД часто называют логическими). Имеется прямая связь дедуктивных БД с базами знаний (интенциональную часть БД можно рассматривать как БЗ).
Какова же связь дедуктивных БД с реляционными СУБД, кроме того, что реляционная БД является вырожденным частным случаем дедуктивной? Основным является то, что для реализации дедуктивной СУБД обычно применяется реляционная система. Такая система выступает в роли хранителя фактов и исполнителя запросов, поступающих с уровня дедуктивной СУБД. Такое использование реляционных СУБД резко актуализирует задачу глобальной оптимизации запросов.
При обычном применении реляционной СУБД запросы обычно поступают на обработку по одному, поэтому нет повода для их глобальной (межзапросной) оптимизации. Дедуктивная же СУБД при выполнении одного запроса пользователя в общем случае генерирует пакет запросов к реляционной СУБД, которые могут оптимизироваться совместно.
Конечно, в случае, когда набор правил дедуктивной БД становится велик, и их невозможно разместить в оперативной памяти, возникает проблема управления их хранением и доступом к ним во внешней памяти. Здесь опять же может быть применена реляционная система, но уже не слишком эффективно. Требуются более сложные структуры данных и другие условия выборки. Известны частные попытки решить эту проблему, но общего решения пока нет.
Инструментальные средства построения систем баз знаний.
Для создания СБЗ могут использоваться следующие средства:
- Традиционные языки программиро
вания - C, Basic, Pascal, Lisp и др. Особо в этом ряду стоит выделит язык функционального программирования Lisp. Его основные свойства: данные представляются в виде списков, для получения решений используется рекурсия. - Языки представления знаний (такие как Prolog) - имеют специфические средства описания знаний и встроенный механизм поиска вывода.
- Пустые оболочки экспертных систем - содержат реализации некоторого языка представления знаний и средства организации интерфейса пользователя. Позволяют практически полностью исключить обычное программирование при создании прикладной экспертной системы.
Пример: Создадим экспертную систему,
с помощью которой можно
Таблица 10.1 Массив факты | ||||
Характеристика |
Птица |
Самолет |
RULES |
В следующей таблице представлен массив факты, который фактически является в нашем случае базой знаний. В нем перечислены некоторые характеристики объектов “птица” и “самолет”, наличие данной характеристики и объекта отмечено цифрой 1, отсутствие - 0. |
Крылья |
1 |
1 |
0 | |
Хвост |
1 |
1 |
0 | |
Клюв |
1 |
0 |
1 | |
Двигатель |
0 |
1 |
-1 | |
Перья |
1 |
0 |
1 | |
Шасси |
0 |
1 |
-1 | |
Сформируем теперь правило вывода.
Для этого тем характеристикам,
которые присущи обоим
Массив FACTS заполняется при опросе пользователя. Нетрудно убедиться, что при полном и правильном указании всех характеристик объектов механизм получения решений дает 2 для “птицы” и -2 для “самолета”.
Язык SQL
Язык SQL (Structured Query Language - структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций.
В начале 70-х годов в компании IBM была разработана экспериментальная СУБД System R на основе языка SEQUEL (Structured English Qeury Language - структурированный английский язык запросов), который можно считать непосредственным предшественником SQL. Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. В 1981 году IBM объявила о своем первом, основанном на SQL программном продукте, SQL/DS. Чуть позже к ней присоединились Oracle и другие производители. Первый стандарт языка SQL был принят Американским национальным институтом стандартизации (ANSI) в 1987 (так называемый SQL level /уровень/ 1) и несколько уточнен в 1989 году (SQL level 2). Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 нового расширенного стандарта (ANSI SQL-92 или просто SQL-2). В настоящее время ведется работа по подготовке третьего стандарта SQL, который должен включать элементы объектно-ориентрованного доступа к данным.
Стандарт языка доступа к БД
SQL в настоящее время является промышленным стандартом, который в большей или меньшей степени поддерживает любая СУБД, претендующая на звание “реляционной”.
Хотя SQL стандартизован, любая его версия отличается от стандарта. Бывает, что одни и те же конструкции не работают на разных платформах. Сам SQL покрывает все подмножество реляционной алгебры. И считается, что на нем можно написать любую реляционную БД.
Классификация операторов SQL
Можно выделить следующие группы операторов:
DDL (data definition language) – операторы определения объектов БД.
CREATE SCHEMA |
- |
создать схему БД, |
DROP SCHEMA |
- |
удалить схему БД, |
CREATE TABLE |
- |
создать таблицу, |
ALTER TABLE |
- |
изменить таблицу, |
DROP TABLE |
- |
удалить таблицу, |
CREATE DOMAIN |
- |
создать домен, |
ALTER DOMAIN |
- |
изменить домен, |
DROP DOMAIN |
- |
удалить домен, |
CREATE COLLECTION |
- |
создать последовательность, |
ALTER COLLECTION |
- |
изменить последовательность, |
DROP COLLECTION |
- |
удалить последовательность, |
CREATE VIEW |
- |
создать представление, |
ALTER VIEW |
- |
изменить представление, |
DROP VIEW |
- |
удалить представление. |
DML (data manipulate language) – операторы манипулирования данными.
SELECT |
- |
выбрать строки из таблиц, |
INSERT |
- |
добавить строки в таблицы, |
UPDATE |
- |
изменить строки в таблице, |
DELETE |
- |
удалить строки, |
COMMIT |
- |
зафиксировать внесенные изменения, |
ROLLBACK |
- |
откатить внесенные изменения. |
Операторы защиты и управления данными.
CREATE ASSERTION |
- |
создать ограничение, |
DROP ASSERTION |
- |
удалить ограничение, |
GRANT |
- |
Предоставить привилегии пользователю или приложению на манипулирование объектами, |
REVOKE |
- |
отменить привилегию. |
Операторы SQL
CREATE TABLE (создание таблиц)
CREATE TABLE <имя таблицы> (Имя столбца1, тип столбца1 [NOT NULL],…, Имя столбца n, тип столбца n [NOT NULL])
Тип столбца:
CHAR (m) |
- |
строка символов длиной m (240 – max), |
NUMBER |
- |
числовые значения (+ или -, м.б. десятичная точка, не более 40 цифр), |
NUMBER (m) |
- |
m – количество цифр (m<=40), |
NUMBER (m,d) |
- |
d – количество знаков после запятой, |
DATE |
- |
календарные даты. |
Предположим, надо создать следующую таблицу:
Таблица 10.1 Таблица “Бюджет” | ||
Номер темы |
Название |
Бюджет |
101 |
a |
250’000 |
102 |
b |
175’000 |
103 |
g |
95’000 |
CREATE TABLE Themes <BK> (Theme_number NUMBER (3) NOT_NULL, <BK>, Name CHAR (10), <BK>, Budget NUMBER (8,2)); <BK>
Рассмотрим еще один пример:
SQL> CREATE TABLE Сотрудники( |
Таб_номер NUMBER (6), |
Фамилия CHAR (15), | |
Должность CHAR (15), | |
Руководитель NUMBER (6), | |
Дата_приема DATE, | |
Оклад NUMBER (6,2), | |
Премия NUMBER (5,2), | |
Отдел NUMBER (3)); |
Спецификация максимальных длин не означает обязательного соответствующего расходования физической памяти БД.
INSERT INTO (Вставка записей).
Вставка записей в таблицу
INSERT INTO <имя таблицы>
(имя столбца 1,… ,имя столбца n)
VALUES (значение 1,… ,значение n);
В результате выполнения этого оператора к таблице, имя которой указано после слова INTO, добавляется одна запись. Для добавления записи заполняются поля перечисленные в списке. Значения полей берутся из списка, расположенного после слова VALUES. Списки полей и списки значений должны соответствовать друг другу по числу и по типу их элементов. При присвоении значений для первого поля берется первое значение, для второго – второе и т. д. В команде INSERT можно указывать имена только тех столбцов, в которые вводятся значения, остальные столбцы остаются пустыми, т.е. принимают значение NULL.
Пример. Добавляем информацию в таблицу “Сотрудники”:
INSERT INTO Сотрудники
VALUES (4954, ‘Карпов’, ‘Бухгалтер’, 7698, ‘4 NOV 86’, 120, NULL, 30);
Порядок ввода значений должен соответствовать объявленному порядку столбцов в таблице. В команде INSERT можно указывать не все столбцы, которые окажутся пустыми.
Пример:
INSERT INTO Сотрудники (ТабНомер, Фамилия, Дата приема, Отдел)
VALUES (7954, ‘Волков’ , ‘10 NOV 86’, 30);
UPDATE (Редактирование записей).
Редактирование записей – это изменение значений полей в группе записей.
Оно выполняется оператором UPDATE:
UPDATE <имя таблицы>
SET <имя столбца 1> = <выражение 1>
(<имя столбца 2> = < выражение 2>,…)
[WHERE <условие отбора>];
Во всех записях, удовлетворяющих условию отбора, изменяются значения полей. Имя столбца указывает модифицируемое поле всей совокупности записей, а выражение определяет значения, которые будут присвоены этому полю.
- Критерий отбора, указанный в операнде WHERE, не отличается от критерия, заданного в операторе SELECT. Если он не задан, то изменяются значения всех указанных полей. Критерий отбора может варьироваться от простейшего, в котором сравниваются два значения, до сложного, когда учитывается много факторов.
- Критерий отбора представляет собой логическое выражение, в котором можно использовать следующие операции:
Операции языка SQL
Операции сравнения |
||
= |
Равно | |
> |
Больше | |
< |
Меньше | |
>= |
Больше или равно | |
<= |
Меньше или равно | |
<> или != |
Не равно | |
!> |
Не больше | |
!< |
Не меньше | |
LIKE |
Сравнение по шаблону | |
IS NULL |
Проверка нулевого значения | |
IN |
Проверка вхождения | |
BETWEEN |
Проверка вхождения в диапазон | |
Логические операции |
||
AND |
Логическое И | |
OR |
Логическое ИЛИ | |
NOT |
Логическое НЕ | |
Круглые скобки |
Повышение приоритета | |
Запишем ряд логических правил SQL:
- В языке SQL приоритет операций сравнения выше приоритета логических операций.
- Оператор AND означает, что общий предикат будет истинным только тогда, когда условия, связанные по “AND”, будут истинны.
- Оператор OR означает, что общий предикат будет истинным, когда хотя бы одно из условий, связанных по “OR”, будет истинным.
- Оператор NOT означает, что общий предикат будет истинным, когда условие, перед которым стоит этот оператор, будет ложным.
- В одном предикате логические операторы выполняются в следующем порядке: сначала выполняется оператор NOT, затем - AND и только после этого - оператор OR. Для изменения порядка выполнения операторов разрешается использовать скобки.