
- •Преимущества и недостатки иерархических моделей
- •7. Сетевая модель данных
- •Целостность сущностей.
- •Целостность ссылок
- •Классификация ограничений целостности по способам реализации
- •Классификация ограничений целостности по времени проверки
- •Классификация ограничений целостности по области действия
- •Реализация декларативных ограничений целостности средствами sql
- •35. Оператор in
- •36. Оператор like
- •38. Агрегирование данных sql-функции
- •44. Объединение
- •47. 46 Вопрос
- •50. Вопрос 49 Обновление с подзапросом
- •Обновление нескольких таблиц
- •51. Создание и уничтожение таблиц
- •54. Обновление представлений. Вопрос 53
- •56. Хранимые процедуры
- •67 Управление параллельным выполнением транзакций
- •Степень детализации блокировок
Реализация декларативных ограничений целостности средствами 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
|
||||||||||||||||
A |
||||||||||||||||
B |
R
Loc |
5 |
Другие операции реляционной алгебры:
1. переименование – изм. имени атрибутов
2. расширение – кот. порождает новое отношение, путём добавления к исходному атрибуту значение, которое получалось путём некоторых скалярных отношений
3. операция подведения итогов, выполнение верт. или групп. вычислений
30. Запрос – спец. образом описанные требования, опред. состав, производимых над БД операций по выборке, удалению, добавлению или модификации хранимых в ней данных.
Языки запросов: QBE , SQL
QBE- теорит. основой явл. реляц. исчисление с переменными доменами. Позволяет создавать сложные запросы в БД, путём запол. предлож. СУБД в запросной форме. Пример: конструктор запросов в Аксесс.
SQL- структ. язык запросов основан на реляционном исчислении с переменами картежами. Имеет несколько стандартов: SQL – 89, SQL -92 ( процедурный язык: PL/SQL Oracle, T-SQL (Microsoft)). Термины немного отличаются от реляц. алгебры. Явл. реляционно полным языком, не процедурный язык (не содержит операций управления, кодирование, ввода-вывода).
Встроенный SQL – когда включен в состав средств разработки.
Методы исп. встр. языка:
1. статический – когда в тексте программы имеются вызовы фун-ий языка SQL, кот. жестко вкл. в выполняемый модуль после компиляции. Изменения в выз ф-циях могут присутствовать только на уровне отд. параметров вызова, с помощью переменных языка программирования.
динамический – динамическое построение запроса и интерпретация этого запроса, например при обращение к удалённой БД, при выполнение программы.
следующие группы операторов:
Операторы DDL (Data Definition Language) - операторы определения объектов базы данных
CREATE SCHEMA - создать схему базы данных DROP SHEMA - удалить схему базы данных CREATE TABLE - создать таблицу ALTER TABLE - изменить таблицу DROP TABLE - удалить таблицу CREATE DOMAIN - создать домен ALTER DOMAIN - изменить домен DROP DOMAIN - удалить домен CREATE COLLATION - создать последовательность DROP COLLATION - удалить последовательность CREATE VIEW - создать представление DROP VIEW - удалить представление
Операторы DML (Data Manipulation Language) - операторы манипулирования данными
SELECT - отобрать строки из таблиц INSERT - добавить строки в таблицу UPDATE - изменить строки в таблице DELETE - удалить строки в таблице COMMIT - зафиксировать внесенные изменения ROLLBACK - откатить внесенные изменения
Операторы защиты и управления данными
CREATE ASSERTION - создать ограничение DROP ASSERTION - удалить ограничение GRANT - предоставить привилегии пользователю или приложению на манипулирование объектами REVOKE - отменить привилегии пользователя или приложения
Кроме того, есть группы операторов установки параметров сеанса, получения информации о базе данных, операторы статического SQL, операторы динамического SQL.
31. SELECT
Оператор SELECT является самым сложным оператором SQL. Он предназначен для выборки данных из таблиц, т.е. он, собственно, и реализует одно их основных назначение базы данных - предоставлять информацию пользователю.
32. WHERE
SELECT *
FROM P
WHERE P.PNUM > 2;
В качестве условия в разделе WHERE можно использовать сложные логические выражения, использующие поля таблиц, константы, сравнения (>, <, = и т.д.), скобки, союзы AND и OR, отрицание NOT.
33. SELECT исчисляемые поля
Выбрать некоторые колонки из исходной таблицы, удалив из результата повторяющиеся строки (ключевое слово DISTINCT):
SELECT DISTINCT P.NAME
FROM P;
использование скалярных выражений и переименований колонок в запросах (ключевое слово AS…):
SELECT
TOVAR.TNAME,
TOVAR.KOL,
TOVAR.PRICE,
"=" AS EQU,
TOVAR.KOL*TOVAR.PRICE AS SUMMA
FROM TOVAR;
Упорядочение результатов запроса (ключевое слово ORDER BY…):
SELECT
PD.PNUM,
PD.DNUM,
PD.VOLUME
FROM PD
ORDER BY DNUM;
Исп. числовых и текстовых констант – получим новые столбцы с калорий и суммой
SELECT Вид, Блюдо, 'калорий -',
(SUM(INT((Белки+Углев)*4.1+Жиры*9.3)*Вес/1000)),
(SUM(Стоимость/К_во*Вес/1000)+MIN(Труд/100)),▓руб▓
FROM Блюда, Вид_блюд, Состав, Продукты, Наличие
WHERE Блюда.БЛ = Состав.БЛ
AND Состав.ПР = Продукты.ПР
AND Состав.ПР = Наличие.ПР
AND Блюда.В = Вид_блюд.В
AND БЛ NOT IN
( SELECT БЛ
FROM Состав
WHERE ПР IN
( SELECT ПР
FROM Наличие
WHERE К_во = 0))
GROUP BY Вид, Блюдо
HAVING SUM(Стоимость/К_во*Вес/1000+MIN(Труд/100)) < 1.5
AND SUM(((Белки+Углев)*4.1+Жиры*9.3)*Вес/1000) < 400
ORDER BY Вид, 4;
34 Операторы сравнения
Операторы сравнения используются в командах языка SQL для проверки отдельных значений. следующие операторы сравнения: =, < >, < и >. SELECT * FROM PRODOCTS_TBL WHERE PROD ID = '2345';
Оператор BETWEEN используется для поиска значения внутри некоторого интервала, определяемого своими минимальным и максимальным значениями. При этом указанные минимальное и максимальное значение включаются в условие поиска.
SELECT * PRODUCTS_TBL WHERE COST BETWEEN 5.95 AND 14.5;