- •Ис поддержки принятия решений.
- •Общая характеристика реляционной модели данных.
- •Типы данных
- •Типы данных, используемые в реляционной модели
- •Отношения, атрибуты, кортежи отношений.
- •Тема: Первая нормальная формула
- •Базовые концепции реляционных бд db2.
- •Объекты db2, используемые для хранения бд.
- •Контейнер Контейнер — это физическое хранилище. Имя контейнера — это имя папки (или имя устройства) или имя файла (для dms).
- •Буферный пул
- •Расчет физического пространства для таблиц.
- •Объекты системы
- •Целостность данных
- •Потенциальные ключи
- •Внешние ключи.
- •Целостность внешних ключей.
- •Операции, в результате которых нарушается ссылочная целостность:
- •Стратегии поддержания ссылочной целостности.
- •Дополнительные стратегии поддержки ссылочной целостности.
- •Нормальная форма отношений.
- •Критерий оценки качества логической модели данных.
- •Нормализация таблиц
- •Замкнутость реляционной алгебры
- •Зависимые реляционные операторы.
- •Запросы, невыразимые средствами реляционной алгебры.
- •Элементы языка sql.
- •Синтаксис языка sql с использованием языка Бэкуса-Наура.
- •Замечание
- •Замечание
- •Синтаксис условных выражений (из раздела where)
- •Порядок выполнения оператора select
- •Выражение средствами sql операторов реляционной алгебры
Зависимые реляционные операторы.
Не все операторы реляционной алгебры являются независимыми. Некоторые из них можно выразить через другие реляционные операторы.
Оператор соединенияопределяется через операторы выборка и декартово произведение. Оператор естественного соединения — через выборку, декартово произведение и проекцию.
Пересечениевыражается через вычитание следуующим образом:
A INTERSECT B = A MINUS (A MINUS B)
Делениевыражается через вычитание, декартово произведение и проекцию:
A DEVIDED BY B = A [X] MINUS ((A[X] TIMES B ) MINUS A)[X]
Все оставшиеся операторы (объединение, декартово произведение, выборка, проекция) будем называть примитивными, т.к.:
Декартово произведение — это единственный оператор, увеличивающий количество атрибутов. Его нельзя выразить через объединение, вычитание и проекцию, т.к. любая из этих операций либо уменьшает количество атрибутов, либо оставляет неизменным.
Проекция — это единственный оператор, уменьшающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, декартово произведение и выборку.
Выборка позволяет проводить сравнение по атрибутам отношения, поэтому ее нельзя выразить через объединение, вычитание, проекцию и декартово произведение.
Запросы, невыразимые средствами реляционной алгебры.
Существует ряд типов запросов, которые принципиально нельзя выразить операторами реляционной алгебры. Это не значит, что на них нельзя получить ответ, надо писать процедуры. Типы таких запросов:
Невыразимость транзитивного замыкания. Например, рассмотрим отношение, описывающее сотрудника некоторой организации. Оно содержит такие атрибуты, как номер сотрудника, его фамилия, должность и номер руководителя. Запрос: перечислить всех руководителей (прямых и не прямых) данного сотрудника. Этот запрос является примером транзитивного замыкания. Его нельзя выразить при помощи операторов реляционной алгебры.
Плохая нормализация отношений
Кросс-таблицы
-
Товар
Месяц
Кол-во
PC
Jan
10
Print
Jan
20
Scan
Jan
30
PC
Feb
15
Print
Feb
25
Scan
Feb
13
Комплектующие |
Jan |
Feb |
… |
Dec |
SB |
10 |
20 |
… |
40 |
Video |
15 |
10 |
… |
20 |
Такую таблицу средствами реляционной алгебры построить невозможно, т.к. данные, которые находятся в ячейках исходной таблицы, нельзя превратить в название колонок новой таблицы.
Лекция № 12 (25.04.02)
Элементы языка sql.
Стандарт языка SQL основан на реляционной алгебре, но оперирует терминами, отличающимися от реляционной теории.
Операторы SQL можно разбить на несколько групп:
Операторы определения объекта БД:
CREATE SCHEMA — создает схемы
DROP SCHEMA — удаляет схемы
CREATE TABLE — создает таблицу
ALTER TABLE — изменяет таблицу
DROP TABLE — удаляет таблицу
CREATE DOMAIN — создает домен
ALTER DOMAIN — изменение домена
DROP DOMAIN — удаление домена
CREATE COLLATION — создание последоват-ти
DROP COLLATION — удаление последоват-ти
CREATE VIEW — создание вида
DROP VIEW — удаление вида
Операторы манипулирования данными:
SELECT — выборка строк из таблицы
INSERT — вставка строки
DELETE — удаление строк из таблицы
UPDATE — изменение строк в таблице
COMMIT — зафиксировать внесенные изменения
ROLLBACK — «откатить» внесенные изменения
операторы защиты и управления данными
CERATE CONSTRAINT — создать ограничение
DROP CONSTRAINT — удалить ограничение
GRANT — предоставить привилегии пользователю или приложению на манипулирование объектом
REVOKE — отменить привилегии пользователю или приложению на манипулирование объектом
Пример использования операторов второй группы.
INSERT
Вставка одной строки в таблицу
INSERT INTO P (PNUM, PNAME) VALUES (4, “Ivanov”);
Добавление в таблицу нескольких строк, выбранных из другой таблицы.
INSERT INTO TMP_TABLE (PNUM, PNAME)
SELECT PNUM, PNAME FROM P
WHERE PNUM > 2
UPDATE
Обновление нескольких строк в таблице
UPDATE P SET PNAME=’Ivanov’ WHERE PNUM=1;
DELETE
Удалить несколько строк в таблице
DELETE FROM P WHERE PNUM=1;
Удалить все строки в таблице
DELETE FROM P;
SELECT
SELECT * FROM P
Вывести все строки таблицы
SELECT PNAME FROM P WHERE PNUM > 2
В результате выполнения этого запроса возможно появление нескольких одинаковых значений. Для избавления от этой ситуации надо выполнить проекцию:
SELECT DISTINCT PNAME FROM P WHERE PNUM >2
SELECT
Tovar.tname,
Tovar.tcol,
Tovar.tprice,
tcol * tprice AS SUMMA
FROM Tovar
Группировка
SELECT PD.PNUM, PD.DNUM, PD.VOLUME
FROM PD
ORDER BY PD.PNUM (упорядочение)
5. SELECT PD.PNUM, PD.DNUM, PD.VOLUME
FROM PD
ORDER BY PD.PNUM
[ASC] PD.PNUM (по возрастанию)
[DESC] (по убыванию)
Отбор данных из нескольких таблиц
SELECT P.NUM, P.NAME, D.NUM, D.NAME, PD.VOLUME
FROM P JOIN PD USING PD.PNUM
D JOIN PD USING PD.PNUM
Декартово произведение таблиц
SELECT P.NUM, D.NUM
FROM P,D
Лекция №13 (2.05.02)