Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Каждый кортеж должен иметь ключ – идентификатор. Ключ должен обладать двумя свойствами:
А) Однозначная идентификация кортежа: кортеж должен однозначно определяться значением ключа.
Б) Отсутствие избыточности: никакой атрибут нельзя удалить из ключа, не нарушая при этом свойства однозначной идентификации.
Для кортежей одного отношения может существовать несколько наборов атрибутов, удовлетворяющих этим свойствам. Такие наборы называются возможными ключами. Тот ключ, который фактически будет использоваться для идентификации записей, называется основным или первичным ключом. Для основного ключа атрибуты следует выбирать так, чтобы для них был заранее известен диапазон значений, а их количество было бы как можно меньше.
На рисунке 26 показано четырехуровневое дерево, и оно же приведено в виде шести отношений, ключ некоторого отношения может содержать ключ отношения, соответствующего вышестоящей вершине.
Схема БД древовидной структуры.
![]() |
Нормализованная форма схемы:
Отдел (№_отдела, название_отдела, отчетность, руководитель, бюджет),
Работа (№_отдела, №_работы, описание_работы),
Служащий (№_служащего, имя_служащего, №_отдела, пол, з/пл, звание, адрес),
Изменение оклада (№_служащего, дата_установления_з/пл, размер_з/пл),
Дети (№_служащего, имя_ребенка, возраст_ребенка, пол_ребенка),
Трудовая деятельность (№_служащего, дата_назначения, должность).
Рис. 26
Тема: Манипулирование отношениями (Реляционная алгебра).
Гибкость реляционной базы заключается в том, что отношения можно разрезать и склеивать. Для этого введены разнообразные операции.
a. Прежде всего, нужно уметь выделять из отношения нужные столбцы. Эта операция называется проекцией. В операции проектирования участвует единственный операнд, который обозначается ИФ (имя файла) – это может быть как файл с исходными данными, так и полученный в результате преобразований реляционной алгебры.
Формат записи операции следующий:
рroj «список имен полей» (*ИФ*)
В список имен полей входят только те поля, которые должны составлять структуру файла ИФ.
Результат операции проектирования формируется следующим образом:
a. Из файла ИФ удаляются все поля, имена которых не фигурируют в списке;
b. Из полученной в пункте а) совокупности записей удаляются повторяющиеся, так что итог не содержит одинаковых записей.
Пример 1 приведен на рисунке 27.1
Служащий
№_служащего | Имя_служащего | №_отдела | Зарплата | Адрес |
53702 | Васильев | 721 | 120 | Москва |
53703 | Иванов | 721 | 230 | Москва |
53791 | Кузнецов | 007 | 500 | Новосибирск |
53800 | Галкин | 402 | 110 | С.-Петербург |
53805 | Семин | 721 | 190 | Москва |
53806 | Федоров | 402 | 100 | С.-Петербург |
Служ.= proj №_служащего, Имя_служащего, №_отдела, з/п (Служащий)
Отдел = proj №_отдела, Адрес (Служащий)
Служащий
№_служащего | Имя_служащего | №_отдела | Зарплата |
53702 | Васильев | 721 | 120 |
53703 | Иванов | 721 | 230 |
53791 | Кузнецов | 007 | 500 |
53800 | Галкин | 402 | 110 |
53805 | Семин | 721 | 190 |
53806 | Федоров | 402 | 100 |
Отдел
№_отдела | Адрес |
721 | Москва |
007 | Новосибирск |
402 | С.-Петербург |
Рис. 27.1
б. Операция соединения отношений является обратной к операции разрезания (проекции). В операции соединения участвуют два операнда, обозначаемые ИФ1 и ИФ2.
Формат записи операции: ИФ1 join ИФ2.
Результатом операции соединения является конкатенация (слияние двух строк в одну) каждой записи ИФ1 с каждой записью ИФ2, у которых совпадают данные в общем поле, причем само это поле в образующейся записи помещается лишь однажды. Общее поле должно иметь одинаковое имя и тип в обоих файлах.
a. Для простоты возьмем одно общее поле.
Пример 2: Служ. join Отд.
Результатом операции будет восстановление файла Служащий.
b. Соединение двух файлов, не имеющих ни одного общего поля, является пустое множество.
c. Если у файлов ИФ1 и ИФ2 несколько общих полей, то соединение включает конкатенацию каждой записи ИФ1 с каждой записью ИФ2, у которой совпадают с первой значения всех общих полей.
Пример 3
ИФ1 ИФ2
G1 | F1 | F2 |
d | 3 | H |
h | 7 | N |
y | 4 | H |
F1 | F2 | G2 |
3 | H | A |
3 | H | B |
7 | N | A |
4 | H | C |
4 | H | B |
ИФ1 join ИФ2
G1 | F1 | F2 | G2 |
d | 3 | H | A |
d | 3 | H | B |
h | 7 | N | A |
y | 4 | H | C |
y | 4 | H | b |
Рис.27.2
Можно вывести еще целый ряд операций над отношениями.
в. Операция выбора. Имеет один операнд – ИФ.
Синтаксис операции выбора: sel условие (ИФ).
Результатом операции является совокупность записей ИФ, объединяющая лишь те из них, которые удовлетворяют заданному условию.
Пример 4: sel №_отдела > 100 (Отд.)
Результат операции
№_отдела | Отдел |
721 | Москва |
402 | С. - Петербург |
Рис. 27.3
В условии одиночные символы и строки помещают в апострофы, чтобы отличать от имен полей и др.
Условие, определяющее результат выбора, представляет собой выражение, которое может включать операции сравнения >, =, <, < >, < =, > =, а также логические операции and(“и”), or(“или”) и not(“не”).
Наряду с перечисленными операциями в реляционной алгебре определены операции объединения, пересечения и вычитания, которые применяются только к файлам с одинаковыми именами и типами полей, то есть у файлов операндов должна совпадать структура записей.
г. Операция объединения.
Синтаксис: ИФ1 union ИФ2.
Результат – совокупность записей, входящих в один, а возможно и в два операнда.
Пример 5:
ИФ1 ИФ2 ИФ1 union ИФ2
F1 | G2 |
a | 4 |
b | 5 |
c | 6 |
F1 | G1 |
d | 2 |
b | 5 |
e | 4 |
c | 6 |
F1 | G1 |
a | 4 |
b | 5 |
c | 6 |
d | 2 |
e | 4 |
Рис. 27.4
При ответах на некоторые запросы вместо объединения предпочтительнее пользоваться выбором, включая в его условие операцию «ИЛИ». Это замечание для тех запросов, которые используют информацию из одного файла. В примере, демонстрирующем такую ситуацию, использованы файлы с рисунка 26.
Пример 6: определить номера отделов, в которых используются номера работ 7 и 12.
proj №_отдела (sel (№_работы = 7) оr (№_работы = 12)(Работа))
Пример 7: определить имя служащего либо работающего в третьем отделе, либо занимающего должность зам. начальника отдела
proj Имя_служащего (sel №_отдела = 3 (Служащий))
union proj Имя_служащего(Служащий join proj №_служащего (sel должность = «зам. начальника отдела» (Трудовая деятельность))
д. Операция пересечения.
Синтаксис: ИФ1 intersection ИФ2.
Результат – набор записей, входящих в состав обоих файлов.
Пример:
ИФ1 ИФ2 ИФ1 intersection ИФ2
F1 | G1 |
a | 8 |
b | 5 |
c | 6 |
F1 | G1 |
e | 12 |
b | 5 |
d | 1 |
c | 6 |
F1 | G1 |
b | 5 |
c | 6 |
Рис.27.5
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 |



