1 / 17

Domknięcie przechodnie (również) w bazach danych

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.

orien
Download Presentation

Domknięcie przechodnie (również) w bazach danych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Domknięcie przechodnie(również)w bazach danych Andrzej Topolewski slajdów 16+1

  2. 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)

  3. Inne sformułowanie semantyki Wynik procesu iteracyjnego ŚcieżkiNplus1 = COMPOSE(ŚcieżkiN, graf) Domknięcie = G + COMPOSE(G,G) + COMPOSE(COMPOSE(G,G), G) + ...

  4. Jeszcze inaczej: Rozwiązanie równania stałopunktowego Domknięcie = Graf  COMPOSE(Domknięcie, Graf) Suma zbiorów?, wielozbiorów? Co jest typem wyniku?

  5. 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...)  ...

  6. 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

  7. Zastosowania: BOM Przemysłowe hierarchie • Najprostsze wyjaśnienie: dekompozycja produktu. • Komplikacje: duża ilość parametrów • Zalecenia standaryzacyjne • Wplot w produkcję

  8. 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

  9. 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

  10. 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.

  11. 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

  12. 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))

  13. 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)

  14. 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

  15. 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

  16. 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)

  17. 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

More Related