Реализация декларативных ограничений целостности средствами SQL

· Как ограничения домена.

· Как ограничения, входящие в определение таблицы.

· Как ограничения, хранящиеся в базе данных в виде независимых утверждений (assertion).

Элементы процедурности все же присутствуют в стандарте SQL в виде так называемых действий, исполняемых по ссылке. Эти действия определяют, что будет происходить при изменении значения родительского ключа, на который ссылается некоторый внешний ключ. Эти действия можно задавать независимо для операций обновления (ON UPDATE) или для операций удаления (ON DELETE) записей в родительском отношении. Стандартом SQL определяется 4 типа действий, исполняемых по ссылке:

· CASCADE. Изменения значения родительского ключа автоматически приводят к таким же изменениям связанного с ним значения внешнего ключа. Удаление кортежа в родительском отношении приводит к удалению связанных с ним кортежей в дочернем отношении.

· SET NULL. Все внешние ключи, которые ссылаются на обновленный или удаленный родительский ключ получают значения NULL.

· SET DEFAULT. Все внешние ключи, которые ссылаются на обновленный или удаленный родительский ключ получают значения, принятые по умолчанию для этих ключей.

· NO ACTION. Значения внешнего ключа не изменяются. Если операция приводит к нарушению ссылочной целостности (появляются "висящие" ссылки), то такая операция не выполняется.

 

21. Основные операторы реляционной алгебры

Выбор SELECT ,проекция PROJECT , соединение JOIN, пересечение INTERSECT , объединение UNION , разность DEFERENCE , умножение PRODUCT, деление DIVIDE

Совместность отношений: -совместность имён атрибутов и типов соответст. доменов

1. мин. набор всего 5 операторов, остальные 3 можно выразить

2. этих 8 операторов недостаточно для построения СУБД на принципах реляционной алгебры, требуются расширения (вл. операции переименование атрибутов, присвоение, сравнение и т.д.)

Чтобы БД можно было считать реляц моделью, хотя бы в малой степени её СУБД должно поддерживать операторы: выбор, проекция, соединение

Объединение UNION– 2х совместных отношений R1, R2 одинаковой размерностью, является отношение R содержащие все элементы исх. отношений с исключением повторений. Частн. случай – идентичность.

SELECT CODE, NAME, PRICE FROM R1 UNION SELECT CODE, NAME, PRICE FROM R2

- всегда таблицы должны иметь одинаковое кол-во столбцов и тип данных их

 

22. 21 вопрос.

Пересечение INTERSECT – пересечение 2х отношений один. размерностью, порождает отношение R с телом , вкл. картежи, которые одновременно есть в обоих исх. отношений

SELECT FROM Store_Information

INTERSECT

SELECT FROM Internet_Sales

но можно

SELECT … WHERE …IN

 

23. 21 вопрос

Разность DIFERENCE – разность 2х отношений, равн. размерностью, есть отношение , тело которого содержит картежи, которые есть в отношение R1,но нет в R2

SELECT… WHERE … NOT IN

или

SELECT vnum, vname

 

FROM tverkauf

 

DIFERENCE

SELECT knum, kname

 

FROM tkunden

 

 

24. 21 билет

Произведение- отношение R1 *k1 (степень) и R2 k2 ( в степени), которые не имеет одинаковых атрибутов. Есть такое отношение R ( k1+k2) (в степени), заголовок которого представляет собой сцепление заголовков R1 R2 и тело его имеет картежи, такие что первые к1 эл-ов принадлежат мно-ву R1, а последние к2 в множеству R2. Мощность результата – кол-во столбцов

SELECT [Кол-во],[Цена], ([Кол-во]*[Цена]) AS [Сумма] FROM Табличка

или

SELECT T1*T2 FROM T1.T2

 

25. 21 вопрос

Выборка SELECT – выборка отношений R по формуле f представляет собой новое отношение с такими же заголовками и теме же картежами , которые удовлетворяют истинности лог. выражения, заданного формулой f. SELECT ALL – отношение эквивалентное исходному

SELECT … WHERE …

 

26. 21 вопрос

Проекция – R[x,y,….z] явл. подмножеством полного списка атрибутов отношения R. за искл. повторяющихся картежей. Повторение одинаковых атрибутов запрещается. иначе операция проекции выводит верт. подмножество таблиц. R[0] - пустая проекция, результат пустое множество.

R1 PROJECT [PRICE] - вывод только столбца PRICE

или

SELECT … список атрибутов

 

27. 21 вопрос

Соединение Cf(R1, R2) – по усл. задан. формулой f представляет отношение R , которое можно получить путём декарт. произведения отношений R1*R2 с послед. применением результата выборке по формуле f.

Соединения бывают: естественное, эквисоединение EQUI, внешнее соединение RIGHT OUTER JOIN , LEFT OUTER JOIN

Операция тета-соединения определяет отношение, которое содержит кортежи из декартова произведения отношений R и S, удовлетворяющие предикату F. Предикат F имеет вид , где вместо может быть указан один из операторов сравнения ( >, >=, <, <=, =, <> ).

Если предикат F содержит только оператор равенства ( = ), то соединение называется соединением по эквивалентности.

Естественное соединение natural JOIN – связывание таблиц, выбирая только картежи с общими значениями их общих атрибутов.

Результат 3х ступенчатой процедуры:

1. оператор произведения R1*R2 CODE NAME PRICE TOVAR.SKLAD_ID SKLAD.SKLAD_ID SPHOME

2. к полученным результатам применяется операция выборки, которая выводит только те строки, где значение общего атрибута SKLAD_ID совпадают.

3. применяется оператор проекция, для вывода единственных копий каждого атрибута.

SELECT *FROM Сделка, ТоварWHERE Сделка.КодТовара=Товар.КодТовара Или (что эквивалентно) SELECT *FROM Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара

 

28. 21 и 27 вопросы

Внешние соединение OUTER JOIN остаются совпадающие пары, а все не совпадающие значения в другой таблице должны принимать пустые значения.

Левосторонние соединение:

выводит все строки таблицы товар, вкл. те, которые не имеют совпадений в таблице склад, в таблице склад на месте тих строк будет стоять NULL.

Правостороннее соединение:

выводит все строки таблицы склад, даже те, которые не имеют совпадений в таблице товары.

Вывести информацию о всех товарах. Для проданных товаров будет указана дата сделки и количество. Для непроданных эти поля останутся пустыми.

SELECT Товар.*, Сделка.*

FROM Товар LEFT JOIN Сделка

ON Товар.КодТовара=Сделка.КодТовара;

 

29. вопрос 21

Деление – результатом деления R1 с атрибутами А и В на отношение R2 c атрибутами В, где А и В – проекции или составляющие атрибуты, причём В это обий атрибут, опред. на одном и том же множестве доменов для составляющих атрибута, являеться оотношение R c заголовком А и телом, сотоящим из карежей r, таких что s ,вкл. мно-во зна-ий атрибутов В, отношения R2

Пример:

R1 R2

code loc
A
A
A
B
B
C
D
Code
A
B

R

Loc

 


Другие операции реляционной алгебры:

1. переименование – изм. имени атрибутов

2. расширение – кот. порождает новое отношение, путём добавления к исходному атрибуту значение, которое получалось путём некоторых скалярных отношений

3. операция подведения итогов, выполнение верт. или групп. вычислений

 

30. Запрос – спец. образом описанные требования, опред. состав, производимых над БД операций по выборке, удалению, добавлению или модификации хранимых в ней данных.

Языки запросов: QBE , SQL

QBE- теорит. основой явл. реляц. исчисление с переменными доменами. Позволяет создавать сложные запросы в БД, путём запол. предлож. СУБД в запросной форме. Пример: конструктор запросов в Аксесс.

SQL- структ. язык запросов основан на реляционном исчислении с переменами картежами. Имеет несколько стандартов: SQL – 89, SQL -92 ( процедурный язык: PL/SQL Oracle, T-SQL (Microsoft)). Термины немного отличаются от реляц. алгебры. Явл. реляционно полным языком, не процедурный язык (не содержит операций управления, кодирование, ввода-вывода).

Встроенный SQL – когда включен в состав средств разработки.

Методы исп. встр. языка:

1. статический – когда в тексте программы имеются вызовы фун-ий языка SQL, кот. жестко вкл. в выполняемый модуль после компиляции. Изменения в выз ф-циях могут присутствовать только на уровне отд. параметров вызова, с помощью переменных языка программирования.

динамический – динамическое построение запроса и интерпретация этого запроса, например при обращение к удалённой БД, при выполнение программы.

следующие группы операторов: