какие поставщики имеют право поставлять



Таблица 14
Номер детали Наименование детали Y

(Статус детали)



1 Болт 3
2 Гайка 2
3 Винт 1

Таблица 14 Отношение B (Детали) Ответ на вопрос " какие поставщики имеют право поставлять какие детали?" дает Таблица 14:

Таблица 14

Наименование поставщика
PNAMEНаименование получателя
CNAMEНаименование детали
DNAMEПоставляемое количество
VOLUME
Иванов Петров Болт 100
Иванов Сидоров Гайка 200
Иванов Сидоров Винт 300
Петров Сидоров Болт 150
Петров Сидоров Гайка 250
Сидоров Иванов Болт 1000
Замечание. Этот же запрос может быть выражен очень большим количеством способов, например, так: SELECT P.NAME AS PNAME, C.NAME AS CNAME, DETAILS.DNAME, CD.VOLUME FROM CONTRAGENTS P, CONTRAGENTS C, DETAILS NATURAL JOIN CD WHERE P.NUM = CD.PNUM AND C.NUM = CD.CNUM;




Таблица 14
НОМЕР ФАМИЛИЯ ЗАРПЛАТА
1 Иванов 1000
2 Петров 1000
2 Сидоров 2000

Таблица 13 Отношение Кажется, что этого не может быть, т.к. значения в атрибуте "НОМЕР" повторяются. Но мы же ничего не говорили о ключе этого отношения! Сейчас проекции будут иметь вид:





Таблица 14
X Y Z
1 1 2
1 2 1
2 1 1
1 1 1

Таблица 14 Отношение R Всевозможные проекции отношения



Таблица 14

Транзакция A Время Транзакция B Транзакция A дважды читает один и тот же набор строк
Все правильно
S-блокировка таблицы ( с целью потом блокировать строки) - успешна ---
S-блокировка строк, удовлетворяющих условию
(Заблокировано n строк)
---
Выборка строк, удовлетворяющих условию
(Отобрано n строк)
---
--- IX-блокировка таблицы (с целью потом вставлять строки) - отвергается из-за конфликта с S-блокировкой, наложенной транзакцией A
--- Ожидание…
--- Ожидание…
S-блокировка строк, удовлетворяющих условию
(Заблокировано n строк)
Ожидание…
Выборка строк, удовлетворяющих условию
(Отобрано n строк)
Ожидание…
Фиксация транзакции - блокировки снимаются Ожидание…
--- IX-блокировка таблицы (с целью потом вставлять строки) - успешна
--- Вставка новой строки, удовлетворяющей условию
--- Фиксация транзакции
   
Результат. Проблема фиктивных элементов (фантомов) решается, если транзакция A использует преднамеренную S-блокировку или более сильную. Замечание. Т.к. транзакция A собирается только читать строки таблицы, то минимально необходимым условием в соответствии с протоколом преднамеренных блокировок является преднамеренная IS-блокировка таблицы. Однако этот тип блокировки не предотвращает появление фантомов. Таким образом, транзакцию A можно запускать с разными уровнями изолированности - предотвращая или допуская появление фантомов. Причем, оба способа запуска соответствуют протоколу преднамеренных блокировок для доступа к данным.



Содержание раздела