Poziom skomplikowania struktury list łańcuchowych nie sprzyja aktualizacji takiego systemu, dlatego też wprowadzono ich modyfikacje celem uproszczenia struktury bądź ułatwienia przeprowadzania aktualizacji.

Wyróżnione modyfikacje list łańcuchowych to:

Łańcuchowanie w tył

Metoda ta nie wpływa na wyszukiwanie obiektów. Jej modyfikacja wprowadza w zasadzie jedną różnicę w budowie łańcuchów. W Tablicy Zakotwień znajduje się adres ostatniego (zamiast pierwszego) obiektu (n_k = \mu(x^1_k)), a łańcuchy wyglądają analogicznie.

\mathcal{L}(d_i) = \{ n_k - \overline{n}_{k-1} - \overline{n}_{k-2} - ... - \overline{n}_1 \}

Przekształcenia obiektów na ich adres wykonywane są analogicznie za pośrednictwem funkcji adresującej \mu i adresacji względnej (pośredniej, lub absolutnej) omówionej już poprzednio.

\mu(x^i_k) = n_k, \quad \mu(x^i_{k-1}) = n_k - \overline{n}_{k-1}, ... , \mu(x^i_j) = n_k - \overline{n}_j

Z uwagi na brak różnicy w wyszukiwaniu, proces odbywa się identycznie. Stosowanie tej akurat modyfikacji jest ewentualnie uzależnione od sposobu umieszczenia obiektów w bazie danych, co może mieć wpływ na proces aktualizacji. Wygenerowane łańcuchy przybierają zatem postać od ostatniego elementu z offsetem do kolejnych jak w poniższym przykładzie:

\mathcal{L}(M) = \{ 18 - 1 - 2 - 3 - 5 - 8 - 10 - 12 - 13 - 14 - 17 - ø \} \\ \mathcal{L}(K) = \{ 20 - 1 - 6 - 8 - 9 - 11 - 13 - 17 - 18 - ø \}

Takie podejście może sprzyjać dodawaniu nowych obiektów do bazy – w tym przypadku wystarczy zaktualizować jedynie tablicę zakotwień.

Łańcuchowanie w przód i w tył

Ta modyfikacja również nie wpływa na sposób wyszukiwania, ale pozwala na szybką lokalizację każdego obiektu np. celem aktualizacji.

Łańcuchowanie grup obiektów

Analizując pytania zadawane do bazy danych nie sposób nie zauważyć, że niektóre ich rodzaje nader często się powtarzają, podczas, gdy niektóre występują nad wyraz rzadko bądź wcale. Celem uproszczenia struktury można założyć, że wydzielenie pewnego podzbioru D_0 \subset D może wpływać upraszczająco dla całości konstrukcji bazy danych, jeśli tylko dla tego podzbioru utworzymy tablicę zakotwień, odsyłacze i listy łańcuchowe d_j \in D_0.

\mathcal{L}(d_j) = \{ n_1 - \overline{n}_2 - \overline{n}_3 - ... - \overline{n}_k \}, \quad d_j \; \in \; D_o, \quad 1 \leq j \leq k 

Roztrząsając przykład analogiczny do poprzednich tematów, pytanie do systemu zadajemy w postaci termu t = d_1 \cdot d_2 \cdot ... \cdot d_k .

Możliwe są następujące sytuacje:

  • wszystkie deskryptory pytania należą do D_0
    Odpowiedź znajdujemy klasycznie jak w metodzie List Łańcuchowych bez modyfikacji.
  • istnieją deskryptory d_i, które nie należą do D_0
    Odpowiedź znajdujemy dla termu przybliżonego t_j \leq t_i zawierającego deskryptory d_j \in D, a w określonym w ten sposób zbiorze X_j \supseteq X_i przybliżonym (odpowiedź przybliżona) wyłaniamy obiekty zgodne z pozostałymi deskryptorami zapytania metodą przeglądu zupełnego: \sigma(t_i) = \{ x_i \in X_j, \bigwedge\limits_{d_i \notin D_0} d_i \in T_{x_i} \to d_i \in t_i \}
  • wszystkie deskryptory pytania nie należą do D_0
    W tej sytuacji odpowiedź jest lokalizowana metodą przeglądu zupełnego wszystkich obiektów bazy danych.

Kryteria określenia które deskryptory będą wzięte pod uwagę w tworzeniu grupy D_0 decydują te same kryteria co przy tworzeniu zbioru D' dla metody list inwersyjnych. Wprowadzone grupowanie upraszcza strukturę bazy danych.

Przykład zastosowania:

W odniesieniu do systemu informacyjnego stworzonego dla MLŁ zgrupujmy deskryptory które dotyczą tylko wykształcenia. Spowoduje to ograniczenie liczby łańcuchów tylko dla deskryptorów: BT, MR, DR, DC, PR. Tak więc wydzielony został zbiór D_0 = \{ (A5, BT), (A5, MR), (A5, DR), (A5, DC), (A5, PR) \}. Oparta na tym tablica zakotwień przyjmuje postać:

Deskryptor d_iAdres początkowyDługość łańcucha
BT25
MR53
DR67
DC83
PR12

Zadane do systemu pytanie przyjmuje postać: t = (A1, M) \cdot (A3, W) \cdot (A5, DC). Analizując pytanie zauważamy, że tylko A5 jest atrybutem dla którego (A5, DC) \in D_0. Odpowiedź znajdujemy:

Z tablicy zakotwień tab(DC) = (8, 3) generujemy łańcuch \mathcal{L}(DC) = \{ 8 - 7 - 8 - ø \}, następnie z tak odnalezionych obiektów będących odpowiedzią przybliżoną na pytanie odnajdujemy zbiór dokładny metodą przeglądu zupełnego:

t_{x_8} \leq t, \qquad t_{x_{15}} \leq t, \qquad t_{x_{16}} \leq t

co daje nam odpowiedź:

\sigma(t) = \{ x_8, x_{15}, x_{16} \}

Zadanie 1:

Dany jest system informacyjny, w którym opisy obiektów są następujące:
 X1 = a1*b2*c3*d1
 X2 = a2*b1*c4*d2
 X3 = a2*b2*c3*d3
 X4 = a3*b2*c4*d3
 X5 = a3*b2*c4*d1
 X6 = a1*b1*c4*d2
Zbuduj KW opartą o metodę list łańcuchowych oraz:
dopisz nowy obiekt x7, o opisie a1*b2*c1*d2 na początku kartoteki (przed x1)
usuń x3
zaktualizuj opis deskryptorowy obiektu x2 – nowy opis ma postać: a1*b1*c4*d1.

Zadanie 2:

Dla tablicy opisów obiektów zaproponuj modyfikację MLŁ i wygeneruj kartotekę wyszukiwawczą, tablicę zakotwień oraz listy łańcuchowe

Znajdź odpowiedź na pytanie o płyty główne posiadające grafikę i umożliwiające zamontowanie 4 kości RAM.
.
Model SocketChipsetRAMgniazda RAM TaktowanieVGA / HDMI
ASRock A320M-DVS R4.0AM4AMD A320DDR423200Tak
MSI A520M PROAM4AMD A520DDR424600Tak
MSI B450-A PRO MAXAM4AMD B450DDR444133Tak
Gigabyte X570S AERO GAM4AMD X570DDR445400Tak
Gigabyte B550 AORUS PRO ACAM4AMD B550DDR445400Tak
Gigabyte TRX40 AORUS PRO WIFITR4AMD TRX40DDR484400Nie
ASUS X399 ROG ZENITH EXTREME ALPHATR4AMD X399DDR483600Nie
ASUS PRIME Z690-A DDR5s1700Intel Z690DDR546000Tak
MSI MAG Z590 TORPEDOs1200Intel Z590DDR445333Tak
Gigabyte B560 AORUS PRO AXs1200Intel B560DDR443200Tak
Gigabyte X299X AORUS MASTERs2066Intel X299DDR484333Nie
MSI H510M-A PROs1200Intel H510 DDR423200Tak

Zadanie 3

Wiedząc, że system informacyjny S dotyczący wybranych pozycji literaturowych zadany jest tabelą:
AutorTytułGatunekWydawnictwoStanPromocjaPochodzenie
Asimov IsaakFundacjaSFRebisdużynieUSA
Koontz DeanMroczne ścieżki sercaSensacjaPrimamałynieUSA
Koontz DeanZiarno demonaHorrorAmberśrednitakUSA
Koontz DeanIntensywnośćRomansPrimadużytakUSA
Asimov IsaakNarodziny FundacjiSFRebismałynieUSA
Asimov IsaakDruga FundacjaSFRebisbraknieUSA
Asimov IsaakBajki robot?wSFAmbermałynieUSA
Masterton GrahamTenguHorrorZyskśrednitakWielka Brytania
Sheckley RobertIdealna ofiaraSFAmberśrednitakUSA
Callison BrianWojna TrappaBatalistycznyAmberśredninieWielka Brytania
Van Vogt Alfred EltonProducenci broniSFAmberśrednitakKanada
Zahn TimothyTripletSFAmbermałytakUSA
Norton AndreZapach magiiFantastykaAmberśrednitakUSA
Norton AndreSmocza magiaFantastykaAmberbraktakUSA
Wager Walter58 minutSensacjaPegasusbraknieUSA
Curwood James OliverNajdziksze sercaPrzygodaIskrybraknieUSA
Dębski EugeniuszFlash BackKryminałCIA booksmałyniePolska
Dębski EugeniuszUpi?r z playbackuKryminałCIA booksmałyniePolska
Trepka AndrzejTotem leśnych ludziPrzygodaKAWbrakniePolska
Lindgren AstridDzieci z BullerbynPrzygodaNasza KsięgarniadużytakSzwecja

Zdefiniuj formalnie system oraz zbuduj kartotekę wyszukiwawczą w oparciu o modyfikację metody list łańcuchowych, która zapewni krótki czas wyszukiwania odpowiedzi na pytania o książki określonego gatunku oraz będące aktualnie w promocji. Uzasadnij wybór danej modyfikacji. W zmodyfikowanym przez siebie systemie, przedstaw proces wyszukiwania na pytanie o książki będące w promocji i charakteryzujące się średnią sprzedażą. Oszacuj redundancję i zajętość pamięci zmodyfikowanego systemu.

Kategorie: DydaktykaSWI