Основные понятия теории баз данных.

Автор: Пользователь скрыл имя, 18 Ноября 2012 в 14:40, лекция

Описание работы

Лекции с глоссарием по базам данным

Работа содержит 1 файл

Лекции_БД_ВМЕСТЕ С ГЛОССАРИЕМ.doc

— 1.52 Мб (Скачать)

Основным отличием реальной дедуктивной  СУБД от реляционной является то, что  и правила интенциональной части  БД, и запросы пользователей могут  содержать рекурсию. Возможность  определения рекурсивных правил и запросов дает возможность простого решения в дедуктивных базах данных проблем, которые вызывают большие проблемы в реляционных системах (например, проблемы разборки сложной детали на примитивные составляющие). С другой стороны, именно возможность рекурсии делает реализацию дедуктивной СУБД очень сложной и во многих случаях неразрешимой эффективно проблемой.

Отметим, что обычно языки запросов и определения интенциональной  части БД являются логическими (поэтому  дедуктивные БД часто называют логическими). Имеется прямая связь дедуктивных БД с базами знаний (интенциональную часть БД можно рассматривать как БЗ).

Какова же связь дедуктивных  БД с реляционными СУБД, кроме того, что реляционная БД является вырожденным  частным случаем дедуктивной? Основным является то, что для реализации дедуктивной СУБД обычно применяется реляционная система. Такая система выступает в роли хранителя фактов и исполнителя запросов, поступающих с уровня дедуктивной СУБД. Такое использование реляционных СУБД резко актуализирует задачу глобальной оптимизации запросов.

При обычном применении реляционной  СУБД запросы обычно поступают на обработку по одному, поэтому нет  повода для их глобальной (межзапросной) оптимизации. Дедуктивная же СУБД при  выполнении одного запроса пользователя в общем случае генерирует пакет запросов к реляционной СУБД, которые могут оптимизироваться совместно.

Конечно, в случае, когда набор  правил дедуктивной БД становится велик, и их невозможно разместить в оперативной  памяти, возникает проблема управления их хранением и доступом к ним во внешней памяти. Здесь опять же может быть применена реляционная система, но уже не слишком эффективно. Требуются более сложные структуры данных и другие условия выборки. Известны частные попытки решить эту проблему, но общего решения пока нет.

 

    1. Инструментальные средства построения систем баз знаний.

 

Для создания СБЗ могут использоваться следующие средства:

 

  • Традиционные языки программирования - 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


 

 

Сформируем теперь правило вывода. Для этого тем характеристикам, которые присущи обоим объектам, присвоим нулевые весовые коэффициенты. Характеристикам присущим только “птице”  поставим в соответствие весовой  коэффициент 1, присущим только объекту  “самолет” -1. Массив RULES, содержащий правило вывода представлен в крайнем правом столбце таблицы. Тогда механизм получения решений будет иметь вид:

 

Массив FACTS заполняется при опросе пользователя. Нетрудно убедиться, что при полном и правильном указании всех характеристик объектов механизм получения решений дает 2 для “птицы” и -2 для “самолета”.

 

  1.  Язык 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, который должен включать элементы объектно-ориентрованного доступа к данным.

    1. Стандарт языка доступа к БД

 

SQL в настоящее время является  промышленным стандартом, который  в большей или меньшей степени  поддерживает любая СУБД, претендующая  на звание “реляционной”. 

 

Хотя SQL стандартизован, любая его версия отличается от стандарта. Бывает, что одни и те же конструкции не работают на разных платформах. Сам SQL покрывает все подмножество реляционной алгебры. И считается, что на нем можно написать любую реляционную БД.

 

    1. Классификация операторов 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

-

отменить привилегию.


 

    1. Операторы 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, который  позволяет добавлять к таблицам одну или несколько записей. При  добавлении одной записи оператор INSERT имеет формат:

 

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:

 

    1. В языке SQL приоритет операций сравнения выше приоритета логических операций.
    2. Оператор AND означает, что общий предикат будет истинным только тогда, когда условия, связанные по “AND”, будут истинны.
    3. Оператор OR означает, что общий предикат будет истинным, когда хотя бы одно из условий, связанных по “OR”, будет истинным.
    4. Оператор NOT означает, что общий предикат будет истинным, когда условие, перед которым стоит этот оператор, будет ложным.
    5. В одном предикате логические операторы выполняются в следующем порядке: сначала выполняется оператор NOT, затем - AND и только после этого - оператор OR. Для изменения порядка выполнения операторов разрешается использовать скобки.

Информация о работе Основные понятия теории баз данных.