ullman165 (2)

ullman165 (2)



5. JEŻYK BAZ DANYCH SOL

Teraz deklarując schemat relacji Film, możemy /.definiować atrybut tytuł w następujący sposób:

tytuł DziedzinaFilmu

a także w sposób równoważny:

tytuł VARCHAR(50) DEFAUL? 'nieznany';

W podobny sposób można określić atrybut tytuł Fi lmu w relacji Gwiazdy W:

tytułFilnu DziedzinaFilmu

Wartości domniemane można zmieniać dla całej dziedziny, korzystając w tym celu z instrukcji jak np.:

ALTER DOMAIN DziedzinaFilmu SET DEFAULT 'nie ma takiego tytułu';

która spowoduje, że standardowa wartość 'nieznany' dla dziedziny DziedzinaFilmu 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 instrukcję 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 tc atrybuty, dla których przed usunięciem dziedziny określono typ przez jej nazwę, zachowują ten typ, a więc typ danych, oraz wartości domniemane pozostają dla tych atrybutów bez zmian.

5.7.7. Indeksy

Indeks 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 A - 3 lub A < 3. Jeśli relacja zawiera bardzo dużo krotek, to badanie poszczególnych krotek po to, by znaleźć, być może, niew iele tych. które spełniają wrarunek, może okazać się kosztowne. Rozważmy przykład 5.1:

SELECT *

FROM Film

WHERE nazwaStudia = 'Disney' AND rok = 199C;

Może okazać się. że filmów jest około 10 000, a tylko 200 było wyprodukowanych w 1990 r.

Implementacja takiego zapytania przez sprawdzenie warunku klauzuli WHERE we wszystkich 10000 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 więcej niż 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 przedstawiamy bardzo typow;ą składnię takiego polecenia. Jeśli na przykład chcemy założyć indeks na atrybucie rok w relacji Fili;-., 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 wr ten sposób, że zostaną sprawdzone tylko te krotki relacji Film, który ch atrybut rok ma wartość spełniającą ten warunek, co znajdzie odbicie wr znacznym przyspieszeniu obliczenia wyniku zapytania.

Często bywa dostępny także indeks z wieloma atrybutami. Jego działanie polega na tym, żc przy podanych wartościach atrybutów przeszukiwane są tylko krotki 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 w ieloargumentowe są znacznie wydajniejsze.

PRZYKŁAD 5.36

Ponieważ atrybuty tytuł i rok z relacji Film razem stanowią klucz tej relacji, 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 Filra(tytuł, rok);


Wyszukiwarka

Podobne podstrony:
ullman147 (2) 300 5. JĘZYK BAZ DANYCH SOL krotkowych. Dla każdego przypisania jest określana wartość
ullman156 (2) J 18 5. JEŻYK BAZ DANYCH SOL Zauważmy, że w tym zapytaniu wcale nie ma klauzuli WHERE,
ullman166 (2) 338 1 5. JĘZYK BAZ DANYCH SOL Ponieważ para (tytuł, rok) jest kluczem, więc mamy
ullman145 (2) 296 5. JĘZYK BAZ DANYCH SOL W wyniku tego zapytania zostają przeszukane pary krotek, p
64863 ullman149 (2) 304 S JEŻYK BAZ DANYCH SOL GwiazdyW, ale filmu, który tam wymieniono, nie ma w r
70987 ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrz
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrzec, że
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania

więcej podobnych podstron