[ Pobierz całość w formacie PDF ]
.:ALTER DOMAIN DziedzinaFilmu SET DEFAULT 'nie matakiego tytułu';która spowoduje, że standardowa wartość ' nieznany' dla dziedziny Dzie­dzinaFilmu z przykładu 5.35 zostanie zast~piona przez ' nie ma takiego tytułu'.Inne przykłady stosowania instrukcji modyfikujących poznamy przy okazji omawiania sposobów określania więzów dziedzinowych w rozdziale 6.Definicję dziedziny można usunąć ze schematu bazy danych, stosując in­strukcję podobną do przedstawionej poniżej:DROP DOMAIN DziedzinaFilmu;W jej wyniku dziedzina wymieniona jako parametr nie będzie już dostępna w deklaracjach atrybutów.Jednakże te atrybuty, dla których przed usunięciem dziedziny określono typ przez jej nazwę, zachowują ten typ, a więc typ da­nych, oraz wartości domniemane pozostają dla tych atrybutów bez zmian.5.7.7.IndeksyIndeks określony na atrybucie A pewnej relacji jest mechanizmem, który pozwala na efektywne wyszukiwanie krotek o ustalonej wartości składowej atrybutu A.Indeksy pomagają przy szybkim przetwarzaniu tych zapytań, w których warunek wyszukiwania zawiera porównanie atrybutu A z pewną stałą liczbową, np.zawiera wyrażenie ft = 3 lub A <_ 3.Jeśli relacja zawiera bardzo dużo krotek, to badanie poszczególnych krotek po to, by znaleźć, być może, niewiele tych, które spełniają warunek, może okazać się kosztowne.Rozważmy przykład 5.1:5.7.DEFINIOWANIE SCHEMATU RELACJI W JĘZYKU SQL 33%SELECT EROM FilmWHERE nazwaStudia = `Disney' AND rok = 1990;Może okazać się, że filmów jest około 10 000, a tylko 200 było wyproduko­wanych w 1990 r.Implementacja takiego zapytania przez sprawdzenie warunku klauzuli WHERE we wszystkich 10 000 krotkach jest, łagodnie mówiąc, naiwnością.Znacznie wydajniejszy sposób polega na przykład na wybraniu spośród 200 filmów wyprodukowanych w 1990 r.tych, które powstały w studiu Disneya.A jeszcze efektywniej byłoby, gdybyśmy w jednym kroku mogli uzyskać te 10 krotek, które spełniają jednocześnie oba warunki z klauzuli WHERE i były wyprodukowane w studiu Disneya w 1990 r.; ale to już byłoby wlęCej I11Ż można oczekiwać od typowych struktur danych.Mimo że tworzenie indeksów nie weszło do żadnego ze standardów SQL aż do wersji SQL2 ani też w SQL2, to większość systemów komercyjnych dołącza własne wersje poleceń, które są dla projektanta narzędziem do zało­żenia indeksu na określonym atrybucie określonej relacji.Poniżej przedsta­wiamy bardzo typową składnię takiego polecenia.Jeśli na przykład chcemy założyć indeks na atrybucie rok w relacji Film, to możemy to zapisać w następujący sposób:CREATE INDEX IndeksRoku ON Film(rok);W wyniku tego polecenia na atrybucie rok w relacji Film zostanie utworzony indeks o nazwie IndeksRoku.Dzięki tak określonemu indeksowi wszystkie zapytania SQL, których warunek zawiera przyrównanie atrybutu rok do pewnej stałej wartości będą przetwarzane w ten sposób, że zostaną sprawdzone tylko te knotki relacji Film, których atrybut rok ma wartość spełniającąten warunek, co znajdzie odbicie w znacznym przyspieszeniu obliczenia wyniku zapytania.Często bywa-dostępny także indeks z wieloma atrybutami.Jego działanie polega na tym, że przy podanych wartościach atrybutów przeszukiwane są tylko knotki zawierające właśnie te wartości.Może się wydawać, że takie indeksy są mniej efektywne od indeksów z pojedynczym atrybutem, ponieważ nie zawsze są określone wartości wielu atrybutów i wówczas ten pierwszy rodzaj indeksu może nie mieć zastosowania.Ale w sytuacjach, kiedy warunki są określone dla wielu atrybutów, indeksy wieloargumentowe są znacznie wydajniejsze.PRZYKŁAD 5.36Ponieważ atrybuty tytuł i rok z relacji Film razem stanowią klucz tej rela­cji, zatem można się spodziewać, że albo wartości obu tych atrybutów są określone, albo nie jest określona wartość żadnego z nich.Poniżej przedsta­wiono typową deklarację indeksu założonego na dwóch atrybutach:CREATE INDEX IndeksKlucza ON Film(tytuł, rok);33 8 5.JĘZYK BAZ DANYCH SQLPonieważ para (tytuł, rok) jest kluczem, więc mamy pewność, że je­śli są dane obie wartości w tej parze, to szukając według indeksu, otrzymamy dokładnie jedną krotkę i będzie to oczekiwana krotka.Jeśli jednak w zapyta­niu zostaną określone wartości obu atrybutów: tytuł i rok, ale dostępny będzie tylko indeks IndeksRoku, to szukając najlepiej jak się da, system odnajdzie wszystkie krotki z podaną wartością atrybutu rok, a następnie sprawdzi, które z nich zawierają podany tytuł.Jeśli z kolei indeks zostanie założony na atrybucie tytuł, to będziemy mieli lepszą sytuację niż gdy indeks jest określony dla roku.Wynika to z faktu, że w jednym roku produkuje się wiele filmów, ale istnieje niewiele filmów, które majątaki sam tytuł.W naszym konkretnym przykładzie wybra­nie wszystkich filmów o podanym tytule, a następnie sprawdzenie ich roku produkcji trwa tylko niewiele dłużej niż korzystanie z indeksu z wieloma atrybutami założonego na obu atrybutach klucza jednocześnie [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • matkasanepid.xlx.pl