170 likes | 389 Views
Domknięcie przechodnie (również) w bazach danych. Andrzej Topolewski. slajdów 16+1. Co to jest domknięcie przechodnie. Dwa źródła pojęcia: teoria grafów, teoria mnogości. Relacja binarna R. R(A,B), R(B,C), R(C,D). R(A,B), R(B,C), R(C,D) R(A,C), R(B,D), R(A,D). Inne sformułowanie semantyki.
E N D
Domknięcie przechodnie(również)w bazach danych Andrzej Topolewski slajdów 16+1
Co to jest domknięcie przechodnie Dwa źródła pojęcia: teoria grafów, teoria mnogości Relacja binarna R R(A,B), R(B,C), R(C,D) R(A,B), R(B,C), R(C,D) R(A,C), R(B,D), R(A,D)
Inne sformułowanie semantyki Wynik procesu iteracyjnego ŚcieżkiNplus1 = COMPOSE(ŚcieżkiN, graf) Domknięcie = G + COMPOSE(G,G) + COMPOSE(COMPOSE(G,G), G) + ...
Jeszcze inaczej: Rozwiązanie równania stałopunktowego Domknięcie = Graf COMPOSE(Domknięcie, Graf) Suma zbiorów?, wielozbiorów? Co jest typem wyniku?
Jak podać COMPOSE Definiujemy sposób integracji operatora z językiem Schemat: Bezpośrednio<Od, Do, ...> CREATE VIEW PołączenieAS DISTINCT FIXPOINT OF BezpośrednioBY SELECT Połączenie.Od, Bezpośrednio.Do FROM Połączenie, Bezpośrednio WHERE Połączenie.Do = Bezpośrednio.Od Domknięcie = B SELECT(B,B) as s1 SELECT(s1,B) as s2 ... SBQL:(Bezpośrednio as P) closed unique by (Bezpośrednio where Od=P.Do) as P Domknięcie = B B.(B where...) B.(B where...).(B where...) ...
Zastosowania: Struktury wyrażające grafy, hierarchie • Systemy transportowe, przepływy • Systemy równoległe - zależności czasowe • Konstrukcja parsera • Hierarchie osób, elementów, dekompozycje • BOM - Bill of Material
Zastosowania: BOM Przemysłowe hierarchie • Najprostsze wyjaśnienie: dekompozycja produktu. • Komplikacje: duża ilość parametrów • Zalecenia standaryzacyjne • Wplot w produkcję
Warianty domknięcia: Różne się możliwości i ich konsekwencje Możliwości algorytmu • Tylko obieg drzewa • Domknięcie grafu • Iteracja warstw Definiowanie krawędzi • Złączenie naturalne • Warunek złączenia • Dostęp do ulotnych atrybutów
Warianty domknięcia (2): Różne modyfikatory i postawienie zadania Modyfikacje semantyki • Tylko różne (unique) • Liście • Iteracja imperatywna Sformułowanie zadania • Complete TC • Partial TC • Iteracja z generowaniem
Domknięcie przechodnie w SBQL Domknięcie buduje iteracyjnie wynik według podanego zapytania wykonywanego w środowisku obiektów początkowych Operator “closed by”: q1 closed by q2 1. q1 jest obliczane. Wynik jest przechowywany w tymczasowej tablicy T. 2. Dla każdego wiersza z tablicy T: a. Na stos środowisk odkładane jest nested(r). b. Obliczane jest zapytanie q2. Wynik q2 jest dodawany do T ponad iteracją. c. Ze stosu środowisk zdejmowana jest sekcja. Proces się kończy, gdy dla ostatniego wiersza T zapytanie q2 daje pustą tablicę. T zawiera wówczas końcowy wynik.
Domknięcie przechodnie w SBQL (2) Cechy tej wersji operatora • Działa tylko dla grafów acyklicznych • Pozwala na generację informacji • Charakter obliczeniowy - nie wydajnościowy • Nie pozwala na rekursję nieliniową • Rozpoczyna od dowolnego zbioru
Transitive Closure - przykład Schemat: Wszystkie części składające się na silnik: (PART where NAME = “engine”) closed by (COMPOSITE. MadeFROM. USES. PART) Jak wyżej, zle tylko części podstawowe razem z ilością w silniku: (((PART where NAME = “engine”) (1 as q)) closed by COMPOSITE. MadeFROM. ((USES. PART) ((q * QUANTITY) as q))) where is_not_null(BASE) Całkowita masa silnika: sum((((PART where NAME = “engine”) (1 as q)) closed by (COMPOSITE. MadeFROM. ((USES. PART) ((q * QUANTITY) as q)))). ((COMPOSITE.MassINCREMENT BASE.MASS) * q))
Procedura CostAndMass Procedura może wyznaczać rekursywną perspektywę CostAndMass z wirtualnymi atrybutami name, cost, mass, i parametrem P (kolumna identyfikatorów części) Dla każdej części p w P wyznacza nazwę, całkowity koszt i całkowitą masę p. procedureCostAndMass( var P ) begin return P. ( (NAME as name ) ((BASE.COST COMPOSITE. (AssemblyCOST + sum( MadeFROM .(QUANTITY * (CostAndMass(USES. PART).cost)))) ascost) ((BASE.MASS COMPOSITE. (MassINCREMENT + sum( MadeFROM .(QUANTITY * (CostAndMass(USES. PART).mass)))) asmass)) end CostAndMass; Koszt jednostki masy silnika: (CostAndMass(PART) wherename = “engine”). (cost / mass)
Transitive Closure - przykład iteracji Możliwość wykonywania iteracji mechanizmem domknięcia wartość := 1;numer_iteracji := 1;while numer_iteracji <= 9 {wartość := ( q()/wartość + wartość )/2;numer_iteracji := numer_iteracji + 1;} (1 as wartość) (1 as numer_iteracji) closed by ((((q/wartość + wartość)/2) as wartość) ((numer_iteracji+1) as numer_iteracji)) where numer_iteracji 9
Zadania wymagające różnej mocy podać firmy kontrolowane: • Udział<posiadacz, posiadany, procent_udziałów> kontrola gdy >50%, kontroluje_bezpośrednio • Dane jw. Firma jest kontrolowana, gdy posiadacz wspólnie z kontrolowanymi firmami posiada >50% • Odległość<MiejsceA, MiejsceB, Ile> podać miejsca w promieniu 100 od „X” (unikalne) • Czynnik<wartość>, podać kombinacje z powtórzeniami czynników o iloczynie < 100
Firmy słabo kontrolowane Udział<posiadacz, posiadany, procent_udziałów> Firma jest kontrolowana, gdy posiadaczwspólnie z kontrolowanymi firmami posiada >50% CREATE VIEW posiada(posiadacz, posiadany)AS DISTINCT FIXPOINT OF bezpośrednioBY SELECT u1.posiadacz, u2.posiadany FROM udział AS u1, udział AS u2 WHERE 50 < (SELECT procent_udziałów FROM udział WHERE udział.posiadacz = u1.posiadacz AND udział.posiadany = u2.posiadany + SELECT SUM(udziałPośrednio.ile) FROM posiada, udział AS udziałPośrednio WHERE u1.posiadacz = posiada.posiadacz AND posiada.posiadany = udziałPośrednio.posiadacz AND udziałPośrednio.posiadany = u2.posiadany)
Algorytmy obliczania domknięcia Mnożenie macierzy lub chodzenie po grafie • M - macierz incydencji, to M2 to macierz ścieżek dł. 2 • Obliczanie grafu kondensacji + domykanie drzewa • Przechodzenie wgłąb identyfikując sss • Reprezentacja wyniku