ullman166 (2)

ullman166 (2)



338 5. JĘZYK BAZ DANYCH SOL

Ponieważ 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 zapytaniu 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 wybranie 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.

Jeśli chcemy usunąć z bazy istniejący indeks, to korzystamy zazwyczaj z instrukcji o postaci zbliżonej do następującej:

DROP INDEX IndeksRoku;

Wybór właściwego indeksu jest wynikiem pewnej kompromisowej strategii, którą musi wypracować projektant bazy danych; musi ona uwzględniać następujące fakty'.

•    Istnienie indeksu znacznie przyspiesza wykonanie tych zapytań, które zawierają warunek dotyczący atrybutu związanego indeksem.

•    Z kolei wszystkie operacje wstawiania, usuwania i modyfikacji krotek relacji, dla której założono indeks, są znacznie bardziej skomplikowane i czasochłonne.

Wybór indeksów stanowi najtrudniejszy element w projektowaniu bazy danych, ponieważ trzeba tu przewidzieć, jakie będą typowe udziały zapytań i innych działań manipulowania danymi. Jeśli pewnej relacji częściej będą dotyczyły zapytania niż inne działania, to jest sens zakładać indeksy na atrybutach, których wartości są istotne przy wyszukiwaniu określonych krotek. Jeśli natomiast dominujące działanie polega na modyfikacjach wartości w krotkach, to należy raczej unikać stosowania indeksów. Ale i w tych przypadkach ostrożne stosowanie indeksu może się przydać, bowiem pewne polecenia modyfikacji wymagają przeszukiwania bazy danych (np. instrukcja INSERT zawierająca podzapytanie sdect-from-w'here lub instrukcja DELETE z określonym warunkiem). Jednakże zawsze trzeba ostrożnie przewidywać względne częstości wystąpień poszczególnych działań.

5.7.8. Ćwiczenia do podrozdziału 5.7

*Ćwiczcnic 5.7.1. W bieżącym podrozdziale podaliśmy formalną deklarację tylko dla jednej z pięciu relacji naszego przykładu, tj. dla relacji Gwiazda Filmowa. Należy określić właściwe deklaracje pozostałych czterech relacji, których opis zamieszczamy poniżej:

Film(tytuł, rok, długość, czyKolor, nazwaStudia, proćucer.tCtO

GwiazdyW(tytułFilmu, rokFilmu, nazwiskoGwiazdy)

FilmDyr(nazwisko, adres, cert*, cenaSieci)

Studio(nazwa, adres, prezC#)

Ćwiczenie 5.7.2. Poniżej po raz kolejny przedstawiamy nieformalny schemat bazy danych z ćwiczenia 4.1.1:

Produkt(producent, model, typ)

PC{ir.odcl, szybkość, ram, hd, cć, cena)

Laptop(model, szybkość, ram, hd, ekran, cena;

Drukarka(model, kolor, typ, cena)

Należ)' zapisać w języku $QL deklaracje dla następujących elementów:

a)    Schemat relacji Produkt.

b)    Schemat relacji PC.

*c) Schemat relacji Laptop.

d)    Schemat relacji Drukarka.

e)    Definicję dziedziny TypModelu, której wartościami są numery modeli. Należy pokazać również, w jaki sposób zastosować tę dziedzinę w deklaracjach schematów określonych w zadaniach od a) do d).

*ł) Modyfikację schematu relacji Laptop przez dołączenie do niego atrybutu cd. Jeśli laptop nie ma CD-ROM-u, to jako domniemaną wartość tego atry butu należy wpisać 'brak'.

g) Modyfikację schematu Drukarka, która ma polegać na usunięciu atrybutu kolor ze schematu z zadania d).

Ćwiczenie 5.7.3. Oto nieformalny schemat z ćwiczenia 4.1.3:

Klasy (klasa, typ, kraj, liczbaDział, działo, wyporność) Okręt: (nazwa, klasa, wodowanie)

Bitwa (nazwa, data)

Rezultat (okręt, bitwa, wynik)

Należy zapisać w języku SQL deklaracje następujących elementów:

a)    Schemat relacji Klasy.

b)    Schemat relacji Okręt.

c)    Schemat relacji Bitwa.


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,
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
ullman165 (2) 5. JEŻYK BAZ DANYCH SOL Teraz deklarując schemat relacji Film, możemy /.definiować atr
ullman141 (2) 288 5 JĘZYK BAZ DANYCH SQI. W przykładzie 5.1 występuje porównanie: nazwaStudia = Dis

więcej podobnych podstron