-Właściciele(R.K) K-ident klienta -Dłużnicy(P,K)
-Klienci(K.A) A-Adres klienta
Wydaje się więc. e we wszystkich oddziałach przechowywane są poziome fragmenty powyższych relacyj. Dla pewnych zapytań dobrze byłoby przechowywać relację Klienci w oddziale głównym. Tli klienci są skojarzeni ze swoimi adresami. Załóżmy, ze użytkownik widzi relacje logiczne. Przez zapytanie konstruuje się wyrażenie, którego argumentami są relacje fizyczne.
Rozważmy dalej, ze istnieją 3 oddziały, które oznaczymi 1,2,3. Fragment poziomy danych umieszczonych w oddziale 1 musi spełniać warunek 0=1.
Warunek skojarzony z fragmentem poziomym nazywa się dozorem. Taki dozór obowiązuje dla fragmentów Rachunki. Ogólnie: jeśli g jest dozorem fragmentu relacji R, to każde użycie relacji R można zastąpić selekcją ag(R) (selekcja z R pod warunkiem, że g) nie zmieniając wyników wyrażenia. Jeżeli dla zapytania zbudujemy graf wyrażenia, to selekcję taką dla optymalizacji zapytań należałoby przesunąć w dół drzewa. Również inne selekcje można przesunąć w dól drcewa. Wtedy można stwierdzić, czy selekcja zastosowana do R jest sprzeczna z dozorem g. Jeśli selekcje w wyrażeniu i dozór będą sprzeczne, to relację R da się wyeliminować z wyrażenia.
W przykładowej b.d. można np. narzucić dozór, każdy klient oddziału 1 ma rachunek>1000zł. Taki dozór nie pozwala wyrazić fakni, iż fragmenty relacji właściciele w oddziałach 2 i 3 nie zawierają żadnej krotki dla rachunków z oddziału 1. Jest tak, ponieważ O nie jest atrybutem Właściciele; dlatego warunek 0=1,2,3 odpowiednie do oddziału nie może być warunkiem dozom. Aby taki dozór opracować, posłużymy się inną metodą fragmentacji. W nowej metodzie posłużymy się relacją R o schemacie R=ORSK. Tę relację rozłożymy na fragmenty poziome:
R=RluR2uR3, gdzie Rl=oO=l(R)...
Ponadto każda relacja Rl. R2. R3 jest podzielona na fragmenty pionowe Al A2 A3 Al=oO=l(Rachunki)...
H l=oO=l(Właściciele)...
Dlatego oO=l(R)= cO=1(A1|x|H1D Można zbudować drzewo:
<J0=1
oS>1000
u
oO=3
W
A3 H3
oO=l oO=2
Al HI A2 H2
Górną selekcję można przesunąć poniżej u, otrzymamy 2 bezsensowne warunki selekcji: (0=2 AND 0=1) oraz (0=3 AND 0=1). Dlatego drugie i trzecie poddrzewo można usunąć. Należy również usunąć u ponieważ dotyczy ona tylko jednego argumentu. Ponieważ <rO=l jest dozorem Al|x|H 1 to można pominąć dozór, gdy skończył oddziaływać na wszystkie inne selekcje. Selekcja oS>1000 przesuwa się w dół do Al, bo HI nie zależy od S. Drzewo końcowe jest postaci:
oS>1000 HI
Al
Dlatego otpymalizacja zapytań dla rozproszonych b.d. może być w tym przypadku ograniczona do optymalizacji dla normalnych b.d o ile zostaną określone warunki dozom.
Innym problemem rozproszonych b.d jest aktualizacja relacji (logicznej) R. Aby zaktualizować tę relację np. wstawiając krotkę t, należy dokonać wstawień do pewnych fragmentów R. Algorytm postępowaiua jest rekurencyjny. Załóżmy, że R=Rl|x|R2|x|...|x|Rn
(R składa się z fragmentów pionowych). Żeby zaktualizować R trzeba wstawić t[Rl] dla każdego i=l..n. Jeżeli R jest złożona z fragmentów poziomych (R= RluR2u...uRn), znajdujemy takie i, że krotka t spełnia dozór relacji Ri. i t wstawiamy do fragmentu Ri. Gdy taki fragment nie ismieje to wstawienie jest niemożliwe. Gdy ismieje, to zaleca się wstawienie krotki do lokalnego fragmentu (w najbliższym węźle) aby oszczędzić na transmisji.Większym problemem jest usuwanie krotki t z relacji R. W przypadku fragmentacji poziomej usuwanie sprowadza się do usunięcia krotki z każdej relacji Ri. w której ona występuje. Jeżeli relacja składa się z fragmentów pionowych. To trudno określić poprawny sposób usuwania krotki. Istnieje rozwiązanie zadowalające.