СУБД Oracle. Лекция 2

Содержание

Слайд 2

Реляционная модель данных. Основы. Тип данных, домен, атрибут, отношение, кортеж, первичный

Реляционная модель данных. Основы.

Тип данных, домен, атрибут, отношение, кортеж, первичный ключ

(PK).
Названия отношений уникальны в базе данных.
Для отношения:
каждый атрибут имеет уникальное имя;
группировка атрибутов отсутствует;
все значения атрибутов содержат атомарные значения;
данные некоторого атрибута принадлежат одному домену;
все кортежи различны .
Целостность данных.
Слайд 3

Реляционная модель данных. Связи. Связи между отношениями определяются указанием соответствия атрибутов

Реляционная модель данных. Связи.

Связи между отношениями определяются указанием соответствия атрибутов в этих

отношениях.
Типы связей – 1:1, 1:М, М:1.
Выражение связи M:N.
Связь родитель-потомок (master-detail).
Внешний ключ.
Ссылочная целостность.
Слайд 4

Реляционная модель данных. Языки запросов к БД Для работы с данными

Реляционная модель данных. Языки запросов к БД

Для работы с данными используется SQL.
Все

действия с данными (поиск/отбор, вставка, удаление, замена) в реляционной модели производятся только на уровне таблиц.
Слайд 5

Реляционная алгебра Объединение Пересечение Разность Произведение Проекция Выборка Соединение Деление 29.09.2017

Реляционная алгебра

Объединение
Пересечение
Разность
Произведение
Проекция
Выборка
Соединение
Деление

29.09.2017

Слайд 6

Реляционная алгебра В следующих трех операциях отношения T1 и T2 должны

Реляционная алгебра

В следующих трех операциях отношения T1 и T2 должны иметь

одинаковые заголовки
Объединение
Т3 = T1 UNION T2 – множество кортежей, входящих хотя бы в одно из отношений T1 и T2 (без дубликатов)
SQL: SELECT * FROM T1 UNION SELECT * FROM T2;
Пересечение
Т3 = T1 INTERSECT T2 – множество кортежей, входящих в оба отношения T1 и T2
SQL: SELECT * FROM T1 INTERSECT SELECT * FROM T2;

27.02.2021

Слайд 7

Реляционная алгебра Разность Т3 = T1 MINUS T2 – множество кортежей,

Реляционная алгебра

Разность
Т3 = T1 MINUS T2 – множество кортежей, входящих в

T1, но не входящих в T2
SQL: SELECT * FROM T1 MINUS SELECT * FROM T2;

30.09.2017

Слайд 8

Реляционная алгебра Произведение Т3 = T1 TIMES T2 – декартово произведение

Реляционная алгебра

Произведение
Т3 = T1 TIMES T2 – декартово произведение T1 и

T2
SQL: SELECT * FROM T1, T2;
Пример T1 T2 T3 Количество атрибутов в произведении отношений равно сумме количеств атрибутов в исходных отношениях, а количество кортежей – произведению количеств кортежей в исходных отношениях.

30.09.2017

Слайд 9

Реляционная алгебра Проекция T2 = PROJ(T1, ) Пример List = PROJ(Student,

Реляционная алгебра

Проекция T2 = PROJ(T1, )
Пример
List = PROJ(Student, Group, LastName, StudentNumber). Выдается

список студентов с № группы, фамилией и № студенческого билета;
SQL: SELECT DISTINCT Group, LastName, StudentNumber FROM Student;

29.09.2017

Слайд 10

Реляционная алгебра Выборка T2 = SEL(T1, ) Кортежи отношения, удовлетворяющие некоторому

Реляционная алгебра

Выборка T2 = SEL(T1, )
Кортежи отношения, удовлетворяющие некоторому условию.
Пример
List = SEL(Student,

Group=‘ИТ-33БО’). Выдается список всей информации о студентах группы ИТ-33БО
SQL: SELECT * FROM Student WHERE Group=‘ИТ-33БО’;

29.09.2017

Слайд 11

Реляционная алгебра Соединение T3 = JOIN(T1, T2, ). Является комбинацией произведения,

Реляционная алгебра

Соединение
T3 = JOIN(T1, T2, ). Является комбинацией произведения, выборки

и проекции.
Пример T1(c1, c2, c3), T2(c1, c4, c5)
T3 = JOIN(T1, T2, T1.c1 = T2.c1)
SQL: SELECT * FROM T1 JOIN T2 ON (T1.c1 = T2.c1)
T3 = PROJ(SEL((T1 TIMES T2), T1.c1=T2.c1), T1.c1, T2.c1, c2, c3, c4, c5)
SQL: SELECT T1.c1, T2.c1, T1.c2, T1.c3, T2.c4, T2.c5 FROM T1, T2 WHERE T1.c1 = T2.c1

30.09.2017

Слайд 12

Реляционная алгебра Деление T3 = DIV(T1, T2) результат (частное) содержит в

Реляционная алгебра

Деление
T3 = DIV(T1, T2) результат (частное) содержит в качестве атрибутов те

атрибуты делимого, которые отсутствуют в делителе, а в качестве кортежей – те, для которых в делимом присутствуют кортежи, составленные из данного кортежа частного и всех кортежей делителя.
Пример Session(StudentNumber, Grade, Subject) StudyPlan(Subject)
Запрос: кто из студентов сдал все экзамены? Result = DIV(Session, StudyPlan);
SQL: SELECT StudentNumber, Grade FROM Session JOIN StudyPlan USING(Subject) GROUP BY StudentNumber, Grade HAVING COUNT(DISTINCT Subject) = (SELECT COUNT(DISTINCT Subject) FROM StudyPlan);

30.09.2017