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;