BD-2st-1.2-w12.tresc-1.1-Slajd12

From Studia Informatyczne

Analiza semantyczna zapytania (5)

Analiza semantyczna zapytania (5)


Dla ilustracji problemu zapytań sprzecznych rozważmy przykładowe zapytanie przedstawione na slajdzie. Skonstruujmy dla podanego zapytania graf połączeń atrybutów. Przypomnijmy, że graf połączeń atrybutów konstruujemy następująco. Dla każdej referencji do atrybutu tworzymy w grafie wierzchołek atrybutu lub wierzchołek 0. Następnie, tworzymy luk skierowany pomiędzy wierzchołkami reprezentującymi operację połączenia, oraz łuk skierowany pomiędzy wierzchołkiem atrybutu a wierzchołkiem 0, reprezentujący warunek selekcji. W kolejnym kroku nadajemy wagi lukom. Zauważmy, że zapytanie zawiera dwa warunki połączeniowe:

(1) c.clientNo = v.clientNo

(2) v.propertNo = p.propertNo

reprezentowane przez wierzchołki atrybutów: c.clientNo, v.clientNo, v.propertNo, p.propertNo. Wierzchołki te połączone są wzajemnie lukami o wagach 0. Podane zapytanie zawiera 3 predykaty selekcji (referencje do atrybutów):

c.maxrent >= 500

c.prefType = ‘Flat’

c.maxrent < 200

reprezentowane przez wierzchołki atrybutów: c.maxrent, c.prefType, i c.maxrent. Wierzchołki te połączone są wzajemnie lukami o wagach, odpowiednio, 200, -500, flat oraz –flat. Jak łatwo zauważyć, przedstawiony graf połączeń atrybutów zawiera cykl, którego suma wag jest ujemna (-300). Zatem, podane zapytanie jest sprzeczne.


<< Poprzedni slajd | Spis treści | Następny slajd >>