Bazy Danych egzamin poprawkowy, 2012 rozwiazania

Podobne dokumenty
Bazy Danych egzamin 9 luty, 2012 rozwiazania

Bazy danych wykład trzeci. trzeci Modelowanie schematu bazy danych 1 / 40

Technologie baz danych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy danych wykład trzeci. trzeci Przekształcenie modelu ER na model relacyjny 1 / 19

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Wprowadzenie do baz danych

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Oracle PL/SQL. Paweł Rajba.

Transformacja modelu EER do postaci relacyjnego modelu danych. Zbyszko Królikowski

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

PODSTAWY BAZ DANYCH 13. PL/SQL

Technologie baz danych

Przykłady normalizacji

Przykładowa baza danych BIBLIOTEKA

Wykład 2. Relacyjny model danych

BAZY DANYCH. Anomalie. Rozkład relacji i normalizacja. Wady redundancji

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

INTERNETOWY KURS PODSTAW IT

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Transformacja modelu ER do modelu relacyjnego

Systemy baz danych 2 laboratorium Projekt zaliczeniowy

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

TRANSFORMACJA MODELU ER DO MODELU RELACYJNEGO

Operacja Teta-złączenia. v1 v1 Θ v2

Grupowanie i funkcje agregujące

Indeksy. Indeks typu B drzewo

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

BAZA DANYCH. Informatyka. ZESPÓŁ SZKÓŁ ELEKTRYCZNYCH Prowadzący: inż. Marek Genge

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Procedury i funkcje składowane

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Przygotowanie do egzaminu. część I

Bazy danych i usługi sieciowe

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

BAZA DANYCH SIECI HOTELI

PODSTAWOWE POJĘCIA BAZ DANYCH

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Model relacyjny. Wykład II

Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Bazy danych. Wykład 4: Model SERM. dr inż. Magdalena Krakowiak

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Projektowanie baz danych

Aspekty aktywne baz danych

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Wprowadzenie do baz danych

1. Mapowanie diagramu klas na model relacyjny.

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

Relacyjny model baz danych, model związków encji, normalizacje

Bazy danych. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Wykład 3: Model związków encji.

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

Bazy danych. Plan wykładu. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania A B

1 Wstęp do modelu relacyjnego

15. Funkcje i procedury składowane PL/SQL

Rozmiar pola (długość danych)

Zad. 1. Systemy Baz Danych przykładowe zadania egzaminacyjne

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Relacyjny model danych

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Dazy Banych. Michał Rusnarczyk

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

3. Podzapytania, łączenie tabel i zapytań

TEST E.14 BAZY DANYCH

Multimedialne bazy danych - laboratorium

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

PL/SQL. Zaawansowane tematy PL/SQL

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

WPROWADZENIE DO BAZ DANYCH

Plan wykładu. Elementy ERD BAZY DANYCH. Proces modelowania i implementacji bazy danych. Diagramy związków encji. SQL podzapytania

Autor: Joanna Karwowska

Kursory. A. Pankowska 1

Bazy danych i usługi sieciowe

SQL 4 Structured Query Lenguage

Technologia informacyjna

TECHNOLOGIE BAZ DANYCH

Wykład 5. SQL praca z tabelami 2

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

SIECI KOMPUTEROWE I BAZY DANYCH

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Funkcjonalność systemów zarządzania bazami danych przestrzennych w kartografii internetowej (PosrtgreSQL/PostGIS) Krzysztof Kuśnierek

Program nauczania. Systemy baz danych. technik informatyk

Transformacja modelu ER do modelu relacyjnego

Bazy Danych i Usługi Sieciowe

Wykład II Encja, atrybuty, klucze Związki encji. Opracowano na podstawie: Podstawowy Wykład z Systemów Baz Danych, J.D.Ullman, J.

OnLine Analytical Processing (OLAP) Zapytania SQL

Wykład 8. SQL praca z tabelami 5

Laboratorium nr 5. Bazy danych OpenOffice Base.

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

Bazy danych i usługi sieciowe

Język PL/SQL. Rozdział 2. Kursory

Plan wykładu. Problemy w bazie danych. Problemy w bazie danych BAZY DANYCH

Transkrypt:

Bazy Danych egzamin poprawkowy, 2012 rozwiazania 1 Zadania 1. (20p) Stwórz diagram ER dla następującego opisu bazy danych. W szczególności oznacz słabe encje, klucze, rodzaje związków (czy wiele do jednego, integralność referencyjną). Szpitale posiadają nazwę i adres. Sale w szpitalach posiadają numery. Osoby posiadają imię, nazwisko oraz numer pesel. Niektóre osoby to pacjenci. Niektóre osoby to lekarze. Lekarze posiadają specjalizaje, pacjenci posiadają wiek. Każdy lekarz pracuje w dokładnie jednym szpitalu. Każdy pacjent przechodzi w szpitalu przynajmniej jedną konsultację z lekarzem. Konsultacja taka ma unikalną datę. Każdy pacjent znajduje się w jednej z sal szpitala. 2. (10p) Przekształć stworzony w poprzednim zadaniu diagram ER na projekt relacyjny. W przypadku trudności proszę o stworzenie projektu relacyjnego na podstawie samego opisu w zadaniu powyżej. 3. (10p) W relacji R(A, B, C, D, E, F ) występują następujące zależności funkcyjne: AC B, BD F, F C, F E. Wyznacz wszystkie klucze w relacji R. Wskaż, które klucze są minimalne. 4. Mamy dane tabele Zwierzeta(id, gatunek, nr_klatki), Klatki(numer, max_liczba), Pozwolenia(nazwisko, gatunek), Opiekunowie(nazwisko,nr_klatki). Klucze relacji są podkreślone. max_liczba określa maksymalną liczbę zwierząt w klatce (bez rozróżnienia na gatunki). Pozwolenia określa kto może opiekować się danym gatunkiem zwierząt a Opiekunowie określa, kto jest odpowiedzialny za zwierzęta w danej klatce. W jednej klatce mogą znajdować się zwierzęta różnych gatunków, wiele osób może opiekować się tą samą klatką. Uwaga. Liczba gatunków nie jest ograniczona. Jeśli jednak, ktoś będzie potrafił poprawnie napisać część z kwerend dla ustalonej liczby gatunków ( goryl, mysz, kot ) to otrzyma połowę punktów. Napisz zapytania SQL dla: (a) (3p) listę klatek, w których przebywają jednocześnie koty i myszy, (b) (3p) lista klatek, które nie są zapełnione (liczba zwierząt jest mniejsza od maksymalnej), 1

(c) (3p) lista osób i zwierząt, którymi dana osoba mogłaby się opiekować, gdyż ma odpowiednie pozwolenie, (d) (3p) liste osób i klatek, takich że w danej klatce znajdują się zwierzęta, którymi mogłaby opiekować się dana osoba, (e) (3p) usunie z tabeli Opiekunowie wszystkie wiersze, dla których osoba nie posiada pozwolenia na opiekowanie się żadnym gatunkiem zwierzęcia, które znajduje się w danej klatce. 5. (15p) Napisz program PL/SQL, który zmniejszy o 1 wartość max_liczba we wszystkich klatkach, w których znajdują się zwierzę z gatunku goryl, a zwiększy o 1 wartość max_liczba we wszystkich klatkach, w których występuje zwierzę z gatunku mysz (jeśli w klatce występuje zarówno goryl jak i mysz, to wartość max_liczba nie powinna się zmienić). 6. (15p) Napisz wyzwalacz, który po usunięciu pozwolenia na opiekę nad danym gatunkiem, usunie z tabeli Opiekunowie wszystkie rekordy, dla których osoba nie może opiekować się żadnym gatunkiem występującym w klatce. 7. Rozważmy relacje R(A,B) oraz S(B,C). (a) (10p) Napisz równoważne zapytanie bez zagnieżdżonego select: select R.A S.B, S.C from R, S where R.B=S.B and S.C <= all (select S1.C from S S1 where S1.B= S.B) ; (b) (5p) Zoptymalizuj powyższe zapytanie, wiedząc, że B jest kluczem w S. 2 Rozwiazania Poniżej zaprezentowano przykładowe rozwiązania części zadań. Nie zawsze są to rozwiązania optymalne. 1. Poniżej przykładowy diagram. Encja Sale jest słabą encją gdyż różne sale w różnych szpitalach mają te same numery. Dlatego część klucza dla encji Sale jest brana z klucza encji Szpitale poprzez relację w. Encja Osoby dzieli się na Lekarze i Pacjenci jednak część atrybutów jest wspólnych dla obu tych grup. 2

numer sali nazwa adres Szpitale w Sale pracuje w imie nazwisko Osoby pesel leży na ISA Lekarze Pacjenci specjalizacja konsultuje wiek data 3

2. Przekładając powyższy diagram na relacje w bazie danych na początku tworzymy relację Szpitale(nazwa, adres). Następnie, tworzymy relację Sale(numer_sali, nazwa_szpitala). Zamiast jednej relacji Osoby możemy stworzyć dwie relacje: Lekarze(pesel, imie, nazwisko, specjalizacja, nazwa_szpitala) oraz Pacjenci(pesel, imie, nazwisko, wiek, numer_sali, nazwa_szpitala). Ponieważ pracuje w oraz leży na były funkcyjne, możemy nie tworzyć dla nich odrębnych relacji a wszystkie istotne informacje umieszczamy w powyższych dwóch relacjach (bez redundancji informacji). Na koniec tworzymy relację opisują konsultuje jako: Konsultacja(pesel_lekarza, pesel_pacjenta, data). 3. W skład każdego klucza muszą wchodzic atrybuty A i D one same nie pozwalają wyznaczyć jeszcze wartości pozostałych atrybutów. Jednym z kluczy minimalnych jest zbiór A, B, D. Znając B i D wyznaczymy wartość F. Znając F wyznaczymy wartość C i E. W ten sposób wyznaczyliśmy wartość każdego atrybutu w relacji. Inny klucz minimalny to zbiór A, C, D. Znając A i C wyznaczymy wartość B a znając B możemy już wyznaczyć wartość każdego innego atrybutu jak poprzednio. Ostatni klucz minimalny to zbiór A, D, F. 4. (a) s e l e c t Z1. n r _ k l a t k i from Z w i e r z e t a Z1, Z w i e r z e t a Z2 where z1. n r _ k l a t k i = z2. n r _ k l a t k i and z1. g a t u n e k = mysz and z2. g a t u n e k = kot ; (b) s e l e c t K. numer from K l a t k i K where k. m a x _ l i c z b a > ( s e l e c t c o u n t ( ) from z w i e r z e t a Z where z. n r _ k l a t k i = K. numer ) ; (c) (d) (e) d e l e t e from opiekunowie o where n o t e x i s t s ( s e l e c t z. i d from z w i e r z e t a z, p o z w o l e n i a p where o. n r _ k l a t k i =z. n r _ k l a t k i and z. g a t u n e k =p. g a t u n e k and p. nazwisko =o. nazwisko ) ; 5. Proszę spróbować napisać tą procedurę używając tylko jednego kursora ale za to z parametrem, którym będzie nazwa gatunku. 4

d e c l a r e c u r s o r c_mysz i s s e l e c t k. numer, k. m a x _ l i c z b a from k l a t k i k where e x i s t s ( s e l e c t z. n r _ k l a t k i from z w i e r z e t a z where z. n r _ k l a t k i =k. numer and z. g a t u n e k = mysz ) f o r u p d a t e of k. m a x _ l i c z b a ; c u r s o r c _ g o r y l i s s e l e c t k. numer, k. m a x _ l i c z b a from k l a t k i k where e x i s t s ( s e l e c t z. n r _ k l a t k i from z w i e r z e t a z where z. n r _ k l a t k i =k. numer and z. g a t u n e k = g o r y l ) f o r u p d a t e of k. m a x _ l i c z b a ; v_numer K l a t k i. numer%t y p e ; v _ l i c z b a K l a t k i. m a x _ l i c z b a%t y p e ; b e g i n open c_mysz ; loop f e t c h c_mysz i n t o v_numer, v _ l i c z b a ; e x i t when c_mysz%n o t f o u n d ; u p d a t e K l a t k i s e t m a x _ l i c z b a = v _ l i c z b a +1 where c u r r e n t of c_mysz ; end l oop ; c l o s e c_mysz ; open c _ g o r y l ; loop f e t c h c _ g o r y l i n t o v_numer, v _ l i c z b a ; e x i t when c _ g o r y l%n o t f o u n d ; i f v _ l i c z b a >0 t h e n u p d a t e K l a t k i s e t m a x _ l i c z b a = v _ l i c z b a 1 where c u r r e n t of c _ g o r y l ; end i f ; end l oop ; c l o s e c _ g o r y l ; end ; 6. Poniższy wyzwalacz nie zawiera opcji "for each row". Dlaczego? 5

c r e a t e or r e p l a c e t r i g g e r usun_opiekunowie a f t e r d e l e t e on p o z w o l e n i a b e g i n d e l e t e from opiekunowie o where n o t e x i s t s ( s e l e c t Z. i d from z w i e r z e t a z, p o z w o l e n i a p where p. nazwisko =o. nazwisko and p. g a t u n e k = z. g a t u n e k and z. n r _ k l a t k i = o. n r _ k l a t k i ) ; end ; 6