Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Лекция 3
Реляционная модель

3.1. Терминология

Реляционная модель впервые была предложена в 1970 г.

ПРИМЕР БД «Агенство»

Реляционная модель основана на понятии отношение, физическим представлением которого является таблица

Отношение
(таблица, файл)

Плоская таблица, состоящая из столбцов и строк

В реляционной СУБД предполагается, что пользователь воспринимает БД как набор таблиц (и не как иначе). Следует отметить, что это восприятие относится только к внешнему и концептуальному уровню.

Атрибут
(столбец, поле)

Поименованный столбец отношения

Значения для атрибута могут выбираться из определенного набора, который называется доменом.

Домен

Набор допустимых значений для одного или нескольких атрибутов

Каждый атрибут определяется на некотором домене, однако на одном домене может быть определено несколько атрибутов (например, телефон отделения и телефон сотрудника).

БАЗЫ

В таблице 3.1. приведены примеры доменов для отношений «Отделения» и «Сотрудники».

Таблица 3.1.

Домены отношений«Отделения» и «Сотрудники»

Атрибут

Имя домена

Содержимое домена

Определение домена

KodO

D_KodO

Множество всех допустимых номеров отделений

Символьный: длина 3, диапазон ‘B01’ - ‘B99’

City

D_City

Множество всех городов

Символьный: длина 15

Pind

D_Pind

Множество почтовых кодов

Символьный: длина 6

Pol

D_Pol

Пол сотрудника

Символьный: длина 1, значения “М” или “Ж”

("1") Понятие доменов позволяет СУБД избежать выполнение недопустимых операций (например, сравнение городов и почтовых индексов). Реализация понятия домена в современных СУБД не полная.

НЕ нашли? Не то? Что вы ищете?

Информация об объектах содержится в строках отношений, которые называются кортежами. Кортежи могут располагаться в любом порядке, от этого отношение не изменяется.

Кортеж
(строка, запись)

Строка отношения

Описание структуры отношения вместе с спецификацией доменов и другими ограничениями значений атрибутов называют заголовком (или содержанием) отношения

Степень

Количество атрибутов в отношении

Если n – степень, то отношение называется n-арным (унарным, бинарным).

Кардинальность, кардинальное число

Количество кортежей в отношении

Эта характеристика меняется при каждом добавлении и удалении кортежей

Реляционная база данных

Набор нормализованных отношений

Реляционная БД состоит из отношений, структура которых определяется с помощью специальных методов – нормализации.

3.2. Математические отношения

Теория реляционных БД основана на математической теории отношений.

Пусть D1, D2, … Dn некоторые множества.

Декартовым произведением D1´D2´…´Dn называется множество всех возможных n-ок, в которых первый элемент берется из D1, второй – из D2, … n – ый из Dn:

D1´D2 ´…´Dn= {(x1,x2,…) | x1 ÎD1, x2 Î D2, …xn Î Dn}

Любое подмножество RÌD1´D2 ´…´Dn является отношением.

Заметим, что Di – домены!

Например, n=2, D1={2,4} и D2={1,3,5},

D1´D2={(2,1), (2,3), (2,5), (4,1), (4,3), (4,5)},

("2") R={(2,1), (4,1)}.

Подмножество может быть задано некоторым условием, например:

R={(x1,x2,…) | x1 ÎD1, x2 Î D2, x2 =1}.

Пусть имеются имена атрибутов A1, A2, … An с доменами D1, D2, … Dn, тогда отношение будем записывать в виде:

R={A1: D1, A2: D2, … An: Dn,}.

Свойства отношений:

    отношение имеет уникальное имя; каждый атрибут имеет уникальное имя (в отношении); каждая ячейка отношения содержит только атомарное значение (нет повторяющихся групп, например, два номера телефона). В этом случае говорят, что отношение нормализовано или находится в первой нормальной форме; значения атрибута берутся из одного и того же домена; порядок следования атрибутов не имеет никакого значения; каждый кортеж является уникальным; порядок следования кортежей произволный (теоретически!).

3.3. Реляционные ключи

Реляционные ключи служат для уникальной идентификации каждого кортежа.

Суперключ

Атрибут или совокупность атрибутов, которые единственным образом идентифицирует кортеж

Потенциальный ключ

Суперключ, который не содержит подмножества, образующего суперключ

Составной ключ

Ключ, составленный из нескольких атрибутов

Свойства потенциального ключа: уникальность и неприводимость. Отношение может иметь несколько потенциальных ключей.

Город, телефон – не суперключ, но если добавить код города?

("3") Конкретный набор кортежей нельзя использовать для определения ключа (например, фамилия – пока нет однофамильца). Для идентификации ключа требуется знать смысл используемых атрибутов.

Первичный ключ

Потенциальный ключ, который выбран для уникальной идентификации кортежей внутри отношения

Альтернативные ключи

Остальные потенциальные ключи

Поскольку двух совершенных кортежей в отношении быть не может, первичный ключ существует всегда! В худшем случае – это совокупность всех атрибутов.

Если атрибут присутствует в нескольких отношениях БД, то он обычно отражает определенную связь между кортежами этих отношений. Например, KodO и KO. В таком случае говорят, что KO ссылается на первичный ключ KodO в базовом отношении «Отделения».

Внешний ключ

Атрибут или совокупность атрибутов, которые соответствуют потенциальному ключу некоторого (может быть того же) отношения

3.4. Реляционная целостность

Каждый атрибут связан с доменом – множество допустимых значений определяется ограничениями домена.

Определитель Null

Указывает, что значение атрибута не определено.

Кроме того, в БД могут задаваться правила целостности. Два основных правила:

целостность сущностей;

ссылочная целостность.

Целостность сущностей

В базовом отношении ни один атрибут первичного ключа не может содержать Null

Ссылочная целостность

Если в отношении существует внешний ключ, то значение внешнего ключа должно соответствовать значению потенциального ключа в базовом отношении, либо быть не определенным (Null)


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

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

Теоретический язык операций, который на основе одного или нескольких отношений позволяют создавать другое отношение без изменения самих исходных отношений

Результат операции, таким образом, может использоваться в качестве операнда для другой операции, что позволяет создавать вложенные выражения (замкнутость реляционной алгебры).

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

("4") Имеется несколько вариантов определения набора операций. Мы определим пять основных операций:

    выборки, проекции, декартово произведение, объединение

На основе этих операций могут быть получены другие:

соединения,

пересечения,

деления.

Операции выборки и проекции – унарные операции, остальные – бинарные.

На рис. 3.2 показаны схематически результаты этих операций.

R

S

R´S

a

1

a

1

b

2

a

2

3

a

3

b

1

b

2

b

3

("5")  

Выборка

Проекция

Декартово произведение

T

U

T|><|U

T|>BU

T><|CU

A

B

B

C

A

B

C

A

B

A

B

C

a

1

1

x

a

1

x

a

1

a

1

x

b

2

1

y

a

1

y

a

1

y

3

z

b

2

("6")  

Естественное соединение

Полу-соединение

Левое открытое соединение

R

S

R¸S

R

S

R¸S

A

B

B

A

a

1

1

a

a

2

2

b

Остаток

b

1

b

2

c

1

("7") Рис. 3.2. Схематическое представление действий операторов

Выборка

sпредикат(R)

Операция выборки определяет отношение, которое содержит только те кортежи отношения R, которые удовлетворяют заданному условию (предикат)

В предикате могут использоваться знаки логических операций Ù (And), Ú (Or), ~ (Not).

Пример. Получить список всех сотрудников с окладом более 300

sZP>300(Staff)

KodS

Lname

Fname

Pol

DR

Dol

ZP

KO

S21

Иванов

Иван

М

01.02.70

Руководитель

500

B5

S14

Сидоров

Стеман

М

06.05.68

Менеджер

400

B3

S41

Петров

Игорь

М

02.02.68

Менеджер

450

B5

("8") Проекция

Патр1,…,атрn(R)

Операция проекции определяет отношение, атрибутами которого являются атр1,  … атрn и содержащее только уникальные кортежи (из результата исключаются строки-дубликаты)

Пример. Получить список всех городов, в которых имеются отделения.

ПCity(Branch)

Результат:

City

Тюмень

Нижневартовск

Ишим

Надым

Декартово произведение

R´S

Операция декартового произведения определяет новое отношение, которое определяется результатом конкатенации (т. е. сцепления) каждого кортежа из отношения R с каждым кортежем из отношения S

Если отношение R имеет I кортежей и M атрибутов, а S – J кортежей и N атрибутов, то отношение R´S будет содержать I´J кортежей и M+N атрибутов. Если исходные отношения содержат атрибуты с одинаковыми именами, то они будут включены в итоговое отношение с именами отношений в качестве префикса (например, Branch. City).

Пример. Получить список всех арендаторов, осмотревших объекты недвижимости

(ПKodR, Name(Renter)) ´ (ПKodR, KodP, Comment(Viewing))

Результат:

KodR

Name

Viewing. KodR

KodP

Comment

R76

Саблев Иван

R56

P14

Мала

R76

Саблев Иван

R76

P04

Далеко

R76

Саблев Иван

R56

P04

R76

Саблев Иван

R62

P14

Дорого

R76

Саблев Иван

R56

P36

R56

Рубин Степан

R56

P14

Мала

R56

Рубин Степан

R76

P04

Далеко

R56

Рубин Степан

R56

P04

R56

Рубин Степан

R62

P14

Дорого

R56

Рубин Степан

R56

P36

R74

Кротова Ирина

R56

P14

Мала

И т. д.

("9") В таком виде отношение содержит много лишней информации. Например, в первом кортеже атрибуты KodR и Viewing. KodR принимают разные значения. Для получения искомого списка необходимо применить операцию выборки с предикатом KodR = Viewing. KodR:

sKodR = Viewing. KodR((ПKodR, Name(Renter)) ´ (ПKodR, KodP, Comment(Viewing)))

Результат этих операций:

KodR

Name

V. KodR

KodP

Comment

R76

Саблев Иван

R76

P04

Далеко

R56

Рубин Степан

R56

P14

Мала

R56

Рубин Степан

R56

P04

R56

Рубин Степан

R56

P36

R62

Зимина Елена

R62

P14

Дорого

("10") Объединение

RÈS

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

Пример. Получить список городов, в котором у агентства имеется отделение или объект недвижимости.

ПCity(Branch) È ПCity(Prorerty_Rent)

Результат:

City

Тюмень

Нижневартовск

Ишим

Надым

Сургут

Разность

R-S

Операция разности определяет новое отношение, в которое включены кортежи из R, которые отсутствуют в отношении S. При этом отношения R и S должны быть совместимы по объединению

Пример. Получить список городов, в котором у агентства имеется недвижимость, но нет отделения.

ПCity(Prorerty_Rent) - ПCity(Branch)

Результат:

City

Сургут

Операции соединения

Как правило, пользователя интересует лишь некоторая часть кортежей декартового произведения: удовлетворяющие заданному предикату. Для этого вместо него используется одна из самых важных операций – соединения. Существует несколько различных операций соединения:

тета – соединение;

естественное соединение;

внешнее соединение;

полусоединение.

("11") Тета-соединение.

R |><| FS

Операция тета-соединение определяет отношение, которое содержит кортежи из их декартового произведения, удовлетворяющие предикату F. Предикат F имеет вид R. aiQS . bi,
где Q - один из знаков < | <= | >= | = | ~=
Если предикат F содержит только операцию =, то соединение называется соединением по эквивалентности.

Отношение соединения можно записать на основе базовых операций:

R |><| FS = sF(R´)

Пример.Пример. Получить список всех арендаторов, осмотревших объекты недвижимости

(ПKodR, Name(Renter)) Renter. KodR= Viewing. KodR (ПKodR, KodP, Comment(Viewing))

Результат: приведен выше.

Естественное соединение.

R|><|S

Операция естественного соединения – операция соединения по эквивалентности, выполненное по всем общим атрибутам, из результатов которого исключаются по одному экземпляру каждого общего атрибута

Пример. Получить список всех арендаторов, осмотревших объекты недвижимости

(ПKodR, Name(Renter)) |><| (ПKodR, KodP, Comment(Viewing))

Результат:

KodR

Name

KodP

Comment

R76

Саблев Иван

P04

Далеко

R56

Рубин Степан

P14

Мала

R56

Рубин Степан

P04

R56

Рубин Степан

P36

R62

Зимина Елена

P14

Дорого

("12") Внешнее соединение

R É<|S

Левым внешним соединением называется соединение, при котором кортежи отношения R, не имеющие совпадающих значений общих атрибутов в отношении S, также включаются в результирующее отношение. Для отсутствующих значений используется Null

Преимущество: при внешнем соединении сохраняется вся исходная информация из отношения R.

Аналогично можно определить также правое внешнее соединение и полное внешнее соединение.

Пример. Создать отчет о проведении осмотров объектов недвижимости.

ПKodR, Street, City(Property_Rent) É  (Viewing))

Результат:

KodP
(код недвижимости)

KodR
(код арендатора)

(Заключение)

P14

R56

24.05.01

Мала

P04

R76

20.04.01

Далеко

P04

R56

26.05.01

P14

R62

14.05.01

Дорого

P36

R56

28.04.01

("13") Полусоединение

R |> F S

Операция полусоединения определяет отношение, которое содержит те кортежи отношения R, которые входят в соединение отнощений R и S

Операцию полусоединения можно определить с помощью операторов проекции и соединения:

R |> F S = ПA (R |><|F S),

где A – набор всех атрибутов в отношении R.

Пример. Создать отчет, содержащий полную информацию о всех сотрудниках, работающих в отделении, расположенном в г. Тюмени.

Staff |> Staff. KodO = Branch. KodO and Branch. City=’Тюмень’ Branch

Результат:

KodS
(код)

Lname
(фамилия)

Fname
(имя)

Pol
(пол)

DR
(дата р.)

Dol
(должность)

ZP
(Оклад)

KodO
(код отд.)

S21

Иванов

Иван

М

01.02.70

Руководитель

500

B5

S37

Петрова

Татьяна

Ж

12.11.72

Агент

250

B3

S14

Сидоров

Стеман

М

06.05.68

Менеджер

400

B3

S05

Степанова

Елена

Ж

16.07.71

Секретарь

200

B3

S41

Петров

Игорь

М

02.02.68

Менеджер

450

B5

("14") Пересечение

R Ç S

Операция пересечения определяет отношение, которое содержит те кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместны по объединению.

Операцию пересечения можно записать через базовые операции:

R Ç S=R-(R-S)

Деление

R ¸ S

Операция деления определяет отношение, которое содержит те кортежи из R, опредееленных на множестве атрибутов C, которые соответствуют комбинации всех кортежей отношения S

Операцию пересечения можно записать через базовые операции:

T1=ПC( R )

T2=ПC ((S´T1)-R)

R ¸ S=T1-T2

Пример. Создать список арендаторов, осмотревших объекты недвижимости с 4 комнатами.

(ПkodR, KodP (Viewing)) ¸ (ПkodP (s Rooms=4 (Property_Rent)))

Результат

KodR

KodP

R76

P04

R56

P04

3.6. Реляционное исчисление предикатов

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

Существует теория реляционного исчисления кортежей и реляционного исчисления доменов.

("15") В реляционном исчислении кортежей задача состоит в нахождении таких кортежей, для которых указанный в выражении предикат является истинным. Например:

$ Branch (Branch. City = ‘Тюмень’)

На основе реляционного исчисления кортежей строябся реляционные СУБД.

3.6. Представления

Базовое отношение

Поименованное отношение, соответствующее сущности в концептуальной схеме, кортежи которого физически хранятся в базе данных

Представление

Динамический результат одной или нескольких реляционных операций над базовыми отношениями. Представление является виртуальным отношением, которое в базе данных реально не существует, но которое создается по требованию пользователя в момент поступления этого требования.

Назначение представлений. Использование представлений:

предоставляет гибкий механизм защиты БД за счет сокрытия некоторой ее части от определенных пользователей;

позволяет организовать доступ пользователей к данным наиболее удобным для них способом (в частности, выбирать атрибуты и имена атрибутов, удобные пользователю);

позволяет упрощать сложные операции с базовыми отношениями.


3.7. Правила, которым должны удовлетворять реляционные СУБД

Для определения того, является ли СУБД реляционной Кодд (1985 г) предложил 13 правил, которым они должны удовлетворять. Их можно разделить на 5 групп:

Фундаментальные - 0, 12; Структурные - 1, 6; Целостности - 3, 10; Управления данными 2, 4, 5, 7; Независимости от данных 8, 9, 11

Гр.

Правило

0

1

Фундаментальное правило.
Реляционная СУБД должна быть способна управлять базами данных исключительно с помощью ее реляционных функций

1

2

Представления информации.
Вся информация в реляционной БД представляется в явном виде на логическом уровне и только одним способом – в виде значений в таблицах.
В том числе, метаданные.

2

4

Гарантированный доступ.
Для всех и каждого элемента данных реляционной БД должен быть гарантирован логический доступ на основе комбинации имени таблицы, значения первичного ключа и значения имени столбца

3

3

Систематическая обработка неопределенных значений.
СУБД поддерживает неопределенные значения (Null).

4

4

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

5

4

Исчерпывающий подязык данных.
Реляционная СУБД может поддерживать несколько языков. Однако должен существовать по крайней мере один язык, операторы которого позволяли бы выражать все следующие конструкции:
1) определение данных;
2) определение представлений;
3) команды манипулирования данными;
4) ограничения целостности;
5) авторизации пользователей;
6) организации транзакций (запуск, фиксация и откат)

6

2

Обновление представления.
Все педставления, которые являются теоретически обновляемыми, должны быть обновляемыми в данной СУБД.
Не реализовано ни в одной СУБД, т. к. нет условий идентификации «теоретически обновляемые»

7

4

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

8

5

Физическая независимость от данных.
От способа хранения

9

5

Логическая независимость от данных.
От изменений базовых таблиц

10

3

Независимость ограничений целостности.
Специфические для данной СУБД ограничения целостности должны определяться на подязыке реляционных данных и храниться в системном каталоге, а не в прикладных программах.

11

5

Независимость от распределения данных.

12

1

Правило запрета обходных путей.
Если СУБД имеет низкоуровневый язык (с последовательной построчной обработкой), он не должен позволять обхода правил и ограничений целостности, описанных на реляционном языке высокого уровня

("16") preview_end()