Informatyka (6) Widoki. Indeksy dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro katpalik@pg.gda.pl katarzyna.palikowska@wilis.pg.gda.pl
Decimal(10,2)
Szkoła posiada konto. Osoby dokonują wpłat na konto. Szkoła Nr_konta Brak tabeli Konto Wpłata FK id_osoby Kwota Data_wplaty Osoba Rozwiązanie najprostsze ale mało elastyczne.
Szkoła posiada konto. Osoby dokonują wpłat na konto. Tabela Konto istnieje Szkoła Osoba Konto Wpłata Nr_konta Założenie: Szkoła jest jedna FK id_osoby FK id_konta Kwota Data_wplaty
Szkoła posiada konto. Osoby dokonują wpłat na konto. 1 1 FK FK 1 FK Szkoła Osoba Konto Wpłata Nr_konta FK id_osoby FK id_szkoły FK id_konta Kwota Data_wplaty Szkoła może mieć wiele Kont. Baza może obsługiwać wiele Szkół. Klucz obcy występuje w tabeli
Nadawca Paczka FK id_nadawcy FK id_odbiorcy Data_nadania Odbiorca
Nadawca Paczka FK id_nadawcy FK id_odbiorcy Data_nadania Odbiorca Klient Paczka FK id_nadawcy FK id_odbiorcy Data_nadania SELECT Paczka.data_nadania, Nd., Od. FROM Paczka Alias INNER JOIN Klient AS Nd ON Nd.ID = Paczka.id_nadawcy INNER JOIN Klient As Od ON Od.ID = Paczka.id_odbiorcy
Pracownik FK id_kierownika Kierownik Jeżeli Kierownik ma też Kierownika to musi być zarejestrowany jako Pracownik i jako Kierownik Pracownik FK id_kierownika Kierownik posiadający Kierownika jest rejestrowany jednokrotnie. Problem z rejestracją więcej niż jednego Kierownika SELECT P., P., Kier. FROM Pracownik AS P LEFT OUTER JOIN Pracownik AS Kier ON P.id_kierownika=Kier.ID
Pracownik Zaleznosc FK id_pracownika FK id_kierownika Data_od Data_do Elastyczne rozwiązanie SELECT P., P., Kier. FROM Pracownik AS P LEFT OUTER JOIN Zaleznosc AS Z ON Z.id_pracownika = P.ID LEFT OUTER JOIN Pracownik AS Kier ON Z.id_kierownika=Kier.ID
Widok wirtualny (perspektywa) zmaterializowany CREATE VIEW <nazwa> AS SELECT CREATE MATERIALIZED VIEW <nazwa> AS SELECT Odwołanie do widoku odbywa się w taki sam sposób jak odwołanie do tabeli
Indeks Autor ID Imię 1 Jan Brzechwa 2 Jan Chrystian Andersen 3 Zbigniew Zach 4 Henryk Czech 5 Karolina Lech Czytelnik create index Autor_ on Autor(nazwisko) Wyświetl autorów Dodatkowa struktura zawierająca informacje o fizycznej lokalizacji na dysku kolejnych rekordów wg ustalonego porządku sortowania Cel : przyspieszenie odczytu danych Wyszukaj: Kowalski K > C K < L ID Andersen 2 Brzechwa 1 Czech 4 Lech 5 Zach 3 ID 1 2 3 4 Tablice rozproszone Drzewa Adres fizycznej lokalizacji
Transakcja Konto Nr_konta Kwota 23000011110000 1000 34555512130101 300 BEGIN TRAN T1 Operacja przelewu z konta na konto update Konto set kwota = kwota + 100 where nr_konta= 34555512130101 Awaria, odczyt niespójnych danych update Konto set kwota = kwota - 100 where nr_konta= 23000011110000 END TRAN T1 COMMIT TRAN ROLLBACK TRAN Zatwierdzenie zmian Cofnięcie zmian
Trigger (wyzwalacz) Paczka FK id_nadawcy FK id_odbiorcy Czy_zaplacono Kwota Klient Konto FK id_klienta Warunek: Akcja: Jeżeli czy_zaplacono zmieni się z 0 na 1 to przelej Kwotę z konta odbiorcy na konto nadawcy
Trigger (wyzwalacz)