Laboratorium Systemy Baz Danych z dnia 5.05.2014 Perspektywy
Transkrypt
Laboratorium Systemy Baz Danych z dnia 5.05.2014 Perspektywy
Laboratorium Systemy Baz Danych z dnia 5.05.2014 Perspektywy relacyjno-obiektowe Baza (FILMY, OBSADY, AKTORZY ) została zaprojektowana jako model relacyjny. Zadanie 1 Podaj składnię zapytania w SQL, które da odpowiedź w poniższej postaci: ( Tytuł filmu, reżyser i nazwiska aktorów wraz z rolą z danego filmu ) TYTUL REZYSER NAZWISKO ROLA ------------------------------ ------------------------------ ------------------------------ --------------Cabaret Fosse Bob Minelli Ona Człowiek z żelaza Wajda Andrzej Janda Anna Człowiek z żelaza Wajda Andrzej Radziwiłowicz Tomczyk Dyrygent Wajda Andrzej Gielgud dyrygent Dyrygent Wajda Andrzej Seweryn mlody dyrygent Dziewiąte wrota Polański Roman Depp Dean Corso ............................................. Zadanie 2 Dokonaj prezentacji danych relacyjnych ( tabele FILMY i OBSADY ) na dane złożone z zastosowaniem kolekcji. a) utwórz odpowiednie typy i metodę ( funkcję )LICZBA_AKT – liczba ról w danym filmie b) utwórz perspektywę obiektową, która umożliwi prezentację poszczególnych filmów (tytuł filmu oraz reżyser ) wraz z kolekcją aktorów ( nazwisko aktora i rola ) grających w tych filmach . c) napisz zapytanie do perspektywy: podaj tytuł , reżysera , liczbę aktorów oraz kolekcję aktorów z obsady, tych filmów w których LICZBA_AKT w kolekcji jest powyżej 1 a wśród aktorów jest Olbrychski. odpowiedź może być podobna jak poniżej Ziemia obiecana Wajda ROLE(T_OBSADA('Seweryn', 'Maks'), 2 Andrzej T_OBSADA('Olbrychski', 'Karol')) Ogniem i mieczem ROLE(T_OBSADA('Seweryn', 'Wisniowiecki'), Hoffman 3 T_OBSADA('Olbrychski', 'Tuhajbej'), Jerzy T_OBSADA('Domogarow', 'Bohun')) Pan Tadeusz Wajda ROLE(T_OBSADA('Seweryn', 'Sędzia'), 2 Andrzej T_OBSADA('Olbrychski', 'Gerwazy')) Rozwiązania podobne; prezentowane na wykładzie: PERSPEKTYWY RELACYJNO – OBIEKTOWE ( umożliwiają odwzorowanie relacyjnego modelu danych w model obiektowy ) Mamy zgromadzone dane w tabelach relacyjnych o strukturach PRACOWNICY (Numer, Nazwisko, Etat, . . . , Id_zesp)) ZESPOLY ( Id_zesp, Nazwa, Adres ) CREATE OR REPLACE TYPE Typ_pracownik AS OBJECT (Numer NUMBER(4), Nazwisko VARCHAR2(15), Etat VARCHAR2(15)) / CREATE OR REPLACE TYPE Kolekcja_pracownikow AS TABLE OF Typ_pracownik / CREATE OR REPLACE TYPE Typ_zespol AS OBJECT (Id_zesp NUMBER(2), Nazwa VARCHAR(20), Lista_prac KOLEKCJA_PRACOWNIKOW, MEMBER FUNCTION Liczba_prac RETURN NUMBER) / CREATE OR REPLACE TYPE BODY Typ_zespol AS MEMBER FUNCTION Liczba_prac RETURN NUMBER IS BEGIN RETURN Lista_prac.COUNT( ) ; END Liczba_prac ; end; / CREATE OR REPLACE VIEW Zb_zespoly OF Typ_zespol WITH OBJECT IDENTIFIER (Id_zesp) AS SELECT Id_zesp,Nazwa,CAST(MULTISET(SELECT Typ_pracownik(Numer,Nazwisko,Etat) FROM Pracownicy Where Id_zesp=z.Id_zesp) AS Kolekcja_pracownikow) FROM Zespoly z; SELECT z.Nazwa, z.liczba_prac(), z.Lista_prac FROM Zb_zespoly z;