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



Таблица 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 можно запускать с разными уровнями изолированности - предотвращая или допуская появление фантомов. Причем, оба способа запуска соответствуют протоколу преднамеренных блокировок для доступа к данным.



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