Лекция 3

Содержание

Слайд 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;

30.09.2017

Слайд 7

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

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

Реляционная алгебра Разность Т3 = T1 MINUS T2 – множество кортежей, входящих
но не входящих в T2
SQL: SELECT * FROM T1 MINUS SELECT * FROM T2;

30.09.2017

Слайд 8

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

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

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

30.09.2017

Слайд 9

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

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

Реляционная алгебра Проекция T2 = PROJ(T1, ) Пример List = PROJ(Student, Group,
студентов с № группы, фамилией и № студенческого билета;
SQL: SELECT DISTINCT Group, LastName, StudentNumber FROM Student;

29.09.2017

Слайд 10

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

Выборка T2 = SEL(T1, )
Кортежи отношения, удовлетворяющие некоторому условию.
Пример
List = SEL(Student, Group=‘ИТ-33БО’).

Реляционная алгебра Выборка T2 = SEL(T1, ) Кортежи отношения, удовлетворяющие некоторому условию.
Выдается список всей информации о студентах группы ИТ-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