Bazy danych: zadania ćwiczebne na tempo i dykcję



Podobne dokumenty
Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Tworzenie modelu logicznego i fizycznego danych.

Wykład 8. SQL praca z tabelami 5

Wykład :45 BD-1 W_3

Wykład 05 Bazy danych

Autor: Joanna Karwowska

Przykładowa baza danych BIBLIOTEKA

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

PODSTAWY BAZ DANYCH. 5. Modelowanie danych. 2009/ Notatki do wykładu "Podstawy baz danych"

Bazy Danych egzamin poprawkowy, 2012 rozwiazania

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Bazy Danych - Projekt. Zasady przygotowania i oceny projektów

Bazy Danych i Usługi Sieciowe

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

PODSTAWOWE POJĘCIA BAZ DANYCH

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

Wykład 4. SQL praca z tabelami 1

Temat projektu: mpk-database

LAB 3 (część 1 Projektu)

Projektowanie Systemów Informacyjnych

Paweł Rajba

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych - wykład wstępny

Projektowanie bazy danych przykład

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

Język SQL, zajęcia nr 1

Transformacja modelu ER do modelu relacyjnego

Co to są relacyjne bazy danych?

Projekt Bazy Danych. Artur Janas, Łukasz Gawroński 9 czerwca Streszczenie Tematem projektu jest System Obsługi Biblioteki

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

Baza danych. Baza danych to:

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Laboratorium nr 5. Bazy danych OpenOffice Base.

SQL :: Data Definition Language

Normalizacja baz danych

Bazy danych - Materiały do laboratoriów VIII

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

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

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 6. SQL praca z tabelami 3

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

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

SIECI KOMPUTEROWE I BAZY DANYCH

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Lista zadań nr Wyświetlić imię i nazwisko dla każdego pracownika z departamentu DEP T NO o numerze 000.

1. Pobierz plik z diagramem związków encji schematu Uczelnia (MS Visio) oraz plik ze skryptem tworzącym tabele i wypełniający je danymi, z zasobu:

P o d s t a w y j ę z y k a S Q L

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

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy Danych egzamin 9 luty, 2012 rozwiazania

Bazy danych 2013/14. Egzamin. (5 pkt). Baza danych przechowuje w relacji binarnej G graf skierowany.

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Administracja i programowanie pod Microsoft SQL Server 2000

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

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

Bazy danych 6. Klucze obce. P. F. Góra

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Uniwersytet im. Adama Mickiewicza w Poznaniu Wydział Matematyki i Informatyki. Projekt bazy danych <Moja baza>

Bazy danych 10. SQL Widoki

Wykład 2. Relacyjny model danych

Aspekty aktywne baz danych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

TRANSFORMACJA MODELU ER DO MODELU RELACYJNEGO

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

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

Modelowanie wielowymiarowe hurtowni danych

Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu.

Wykład 5. SQL praca z tabelami 2

EGZAMIN MATURALNY Z INFORMATYKI

Bazy danych Język SQL część 1 Wykład dla studentów matem

Zadania semestralne. Programowanie obiektowe sem. II, lato 2014/2015

Hurtownia Świętego Mikołaja projekt bazy danych

CREATE TABLE logika (p BOOLEAN); INSERT INTO logika VALUES(true); INSERT INTO logika VALUES(false); INSERT INTO logika VALUES(NULL);

UBEZPIECZENIA NA ŻYCIE

Modelowanie wymiarów

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Model relacyjny. Wykład II

Bazy danych. Projekt prostej biblioteki. 26 stycznia Hubert Anisimowicz,

WPROWADZENIE DO BAZ DANYCH

Paweł Cieśla. Dokumentacja projektu

Zależności funkcyjne

Rozmiar pola (długość danych)

Bazy danych i systemy informacyjne

Zadania z SQLa (MS SQL Server)

Bazy danych Teoria projektowania relacyjnych baz danych. Wykła. Wykład dla studentów matematyki

BAZA DANYCH SIECI HOTELI

Zasady transformacji modelu DOZ do projektu tabel bazy danych

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

- Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego

Posługiwanie się tabelami

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

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

Politechnika Gdańska, międzywydziałowy kierunek INŻYNIERIA BIOMEDYCZNA. Instrukcja do laboratorium z przedmiotu: Bazy danych. Laboratorium nr 2.

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Dr Michał Tanaś(

1.06 Wyświetl dane pracowników, którzy pracują w departamencie o nr (Id) różnym od 3.

Transkrypt:

Bazy danych: zadania ćwiczebne na tempo i dykcję 1 SQL 1. Baza danych zawiera tabele: Firma(nazwa, adres, telefon) : kluczem jest nazwa, Komputer(model, producent, typ, model, cena) : kluczem jest model, zaś producent kluczem zewnętrznym do Firma. Należy zapisać w SQL następujące zapytania: (a) Podaj nazwy i adresy firm, które sprzedają co najmniej dwa modele komputerów tego samego typu. (b) Podaj nazwę i telefon firmy która produkuje najtańszy komputer. (c) Podaj typy komputerów, produkowane przez wszystkich (znanych) producentów. 2. W tym zadaniu korzystać będziemy z bazy danych o następującym schemacie: CREATE TABLE Ksiazki ( nrk NUMERIC(5) PRIMARY KEY, tytul VARCHAR(20) NOT NULL, autor VARCHAR(25), wydawca VARCHAR(20), rok_wyd NUMERIC(4), data_zakupu DATE, cena NUMERIC(6,2)); CREATE TABLE Czytelnicy ( nrcz NUMERIC(4) PRIMARY KEY, nazwisko VARCHAR(20) NOT NULL, imie VARCHAR(15) NOT NULL, zawod VARCHAR(15)); CREATE TABLE Wypozyczenia ( nrk NUMERIC(5) NOT NULL REFERENCES Ksiazki, nrcz NUMERIC(4) NOT NULL REFERENCES Czytelnicy, data_wyp DATE NOT NULL, data_zwr DATE, PRIMARY KEY(nrk, nrcz, data_wyp)); Zrealizuj w SQL odpowiedzi na następujące pytania (Uwaga: jeśli pytamy o największy (najdroższy itp.) obiekt, a jest kilka obiektów największych, to należy podać wszystkie): 1

(a) Która obecnie wypożyczona książka jest najdłużej trzymana i przez kogo (może być kilka takich książek należy podać wszystkie)? (b) Jaki jest procent przebywania poszczególnych książek poza biblioteką? (c) Podaj numery katalogowe i tytuły pięciu (lub więcej, jeśli jest remis ) książek o największej liczbie wypożyczeń. (d) Kto czytał najdroższą książkę wydaną przed 1989 rokiem (może być kilka takich książek podaj dla wszystkich)? (e) Którzy czytelnicy wypożyczyli w tym roku najwięcej książek? 3. W bazie danych znajdują się tabele: CREATE TABLE Osoby ( id NUMERIC(5) PRIMARY KEY, nazwisko VARCHAR(20) NOT NULL, imie VARCHAR(15) NOT NULL, miasto VARCHAR(20)); CREATE TABLE Agenci ( id NUMERIC(4) PRIMARY KEY, imie VARCHAR(15) NOT NULL, nazwisko VARCHAR(20) NOT NULL); CREATE TABLE Ubezpieczenia ( polisa NUMERIC(5) PRIMARY KEY, data_od DATE NOT NULL, data_do DATE NOT NULL CHECK (data_do > data_od), wariant VARCHAR(1) NOT NULL, skladka NUMERIC(4) NOT NULL, ag_id NUMERIC(4) NOT NULL FOREIGN KEY REFERENCES(Agenci), os_id NUMERIC(5) NOT NULL FOREIGN KEY REFERENCES(Osoby)); CREATE TABLE Skladki ( ub_polisa NUMERIC(5) FOREIGN KEY REFERENCES (Ubezpieczenia), miesiac DATE, termin_platnosci DATE NOT NULL, data_oplacenia DATE, PRIMARY KEY (ub_polisa, miesiac)); Zapisz w SQL następujące polecenia: Jaka jest maksymalna liczba ubezpieczeń jednej osoby? Wypisz nazwy miast wraz z liczbą ubezpieczonych osób w każdym mieście. Wypisz łączną prowizję wszystkich agentów od osób ubezpieczonych w Warszawie. Przyjmij, że od każdej zapłaconej składki każdy agent dostaje 0.8% prowizji. Sprawdź, czy nie naliczono składek za okres nieobjęty umową ubezpieczenia. Który agent zawarł umowę ubezpieczenia o najdłuższym okresie? Który agent nie zawarł żadnego ubezpieczenia? 2

Z jakiego miasta pochodzi najwięcej ubezpieczonych? Czy wśród numerów agentów zawierających umowy ubezpieczenia występuje numer niezarejestrowany w tabeli AGENCI? Czy wszystkie osoby zarejestrowane w tabeli OSOBY są obecnie objęte ochroną w wariancie B? Którzy spośród agentów stracili klienta (następne ubezpieczenie z tą samą osobą zawarł inny agent)? W którym roku zawarto najwięcej ubezpieczeń? Czy są osoby, które były jednocześnie objęte dwoma różnymi ubezpieczeniami w tym samym wariancie? Wypisz numery polis i czas ich trwania w dniach, miesiącach i latach. Ile jest ubezpieczeń? Jaka jest największa składka ubezpieczeniowa? Kiedy była ostatnia wpłata? 4. Baza danych sklepu sportowego zawiera tabele: CREATE TABLE Producenci ( nazwa VARCHAR(30) PRIMARY KEY, adres VARCHAR(50) NOT NULL, telefon VARCHAR(15) ); CREATE TABLE Narty ( model VARCHAR(15) PRIMARY KEY, producent VARCHAR(30) NOT NULL REFERENCES Producenci, typ VARCHAR(15), przeznaczenie VARCHAR(20), cena INTEGER NOT NULL ); Należy zapisać w SQL następujące zapytania: (a) Podaj nazwy i adresy producentów, wytwarzających co najmniej dwa różne typy nart o tym samym przeznaczeniu. (b) Podaj nazwę i telefon producenta wytwarzającego najdroższe narty. (c) Podaj te typy nart, które są wytwarzane przez wszystkich producentów. 5. W alpinistycznej bazie danych znajdują się tabele: CREATE TABLE Szczyt ( nazwa VARCHAR(15) PRIMARY KEY, gory VARCHAR(10) CHECK (gory IN ( Himalaje, Tatry, Alpy, Andy )), szerokosc_geo CHAR(4) NOT NULL, dlugosc_geo CHAR(4) NOT NULL, wysokosc NUMERIC(4) NOT NULL); 3

CREATE TABLE Droga ( nazwa VARCHAR(20) PRIMARY KEY, szczyt VARCHAR(15) REFERENCES Szczyt, trudnosc NUMERIC(2)); CREATE TABLE Zdobywca ( nazwisko VARCHAR(20), droga VARCHAR(15) REFERENCES DROGA, data DATE NOT NULL, PRIMARY KEY (nazwisko, droga)); Zakładamy, że długość i szerokość geograficzna są podane z dokładnością do pięciu stopni w postaci 35N lub 22W, gdzie litera wskazuje półkulę. Zakładamy także, że dla każdego szczytu istnieje w bazie co najmniej jedna droga. Zapisz w SQL następujące polecenia: (a) Wypisz wszystkie szczyty wraz z najtrudniejszymi drogami i ich pierwszymi zdobywcami, o ile istnieją. (b) Wypisz szerokość geograficzną, występującą przy największej liczbie ośmiotysięczników. (c) Sprawdź, czy istnieją i podaj niezdobyte drogi. (d) Wypisz zdobywców, którzy zdobyli najwięcej szczytów w Tatrach. 6. Baza danych zawiera tabele Gatunki(gatunek, kontynent) kluczem jest gatunek (zakłada się, że każdy gatunek pochodzi z dokładnie jednego kontynentu); Zwierzaki(imie, gatunek, waga) kluczem jest imie. Zrealizuj w postaci zapytania SQL następujące polecenia: (a) Dla każdego gatunku podaj wagę najcięższego zwierzaka. (b) Podaj kontynenty, z których mamy co najmniej 7 zwierzaków. (c) Dla każdego kontynentu podaj gatunki, w których występują zwierzaki ważące więcej, niż średnia waga zwierzaków z tego kontynentu. 7. Baza danych zawiera tabele: Gatunki(nazwa, kontynent, chroniony, lubi): kluczem jest nazwa, Zwierzaki(imię, gatunek, płeć, wiek, waga, wybieg): kluczem jest imię, zaś gatunek kluczem zewnętrznym do Gatunki. Należy zapisać w SQL następujące zapytania: (a) Dla każdego gatunku podaj najmłodsze zwierzaki (ich imiona). (b) Ile mamy zwierzaków z tego samego kontynentu co niedźwiedź Kropka? (c) Dla każdego kontynentu podaj trzy najcięższe zwierzaki z tego kontynentu (jego wagę, imię i gatunek). (d) Dla każdego kontynentu podaj cztery najlżejsze zwierzaki z tego kontynentu (jego wagę, imię i gatunek). 4

(e) Podaj średnią liczbę zwierzaków dla gatunków chronionych. (f) Podaj średnią liczbę zwierzaków z kontynentu. 8. Baza danych o sprzęcie komputerowym zawiera następujące tabele Produkt(producent, model) PC(model, szybkość, ram, hd, cd, cena) Laptop(model, szybkość, ram, hd, ekran, cena) Drukarka(model, kolor, typ, cena) gdzie ram podaje rozmiar pamięci w MB, hd pojemność dysku w GB, cd szybkość czytnika CD-ROM, zaś ekran rozmiar ekranu. Zrealizuj w SQL następujące zapytania: (a) Podaj te rozmiary twardego dysku, które występują co najmniej w dwóch pecetach. (b) Kto produkuje komputer (pecet lub laptop) o największej dostępnej szybkości? 9. Spedycyjna kolejowa baza danych zawiera tabele: Pociąg(nazwa, stacja, kierownik) : kluczem jest nazwa, Wagon(numer, pociąg, typ, producent, ładowność) : kluczem jest numer, zaś pociąg kluczem zewnętrznym do Pociąg. Należy zapisać w SQL następujące zapytania: (a) Podaj nazwy pociągów, które zawierają co najmniej dwa różne typy wagonów od tego samego producenta. (b) Podaj kierownika pociągu zawierającego wagon o największej ładowności. (c) Podaj te typy wagonów, które znajdują się we wszystkich pociągach. 10. Tabela Spółki (definicja poniżej) zawiera w każdym wierszu w kolumnie Wkład kwotę wpłaconą przez podanego udziałowca na fundusz podanej spółki. CREATE TABLE Spolki ( Udzialowiec VARCHAR(35), Spolka VARCHAR(20), Wklad NUMERIC(8) NOT NULL CHECK (Wklad > 0), PRIMARY KEY (Udzialowiec, Spolka)); Kapitałem spółki nazywamy sumę wkładów wszystkich jej udziałowców. Na zebraniu wszystkich udziałowców dowolnej spółki każdy udziałowiec ma procent głosów równy stukrotnemu ilorazowi swojego wkładu i kapitału tej spółki. (a) Utwórz perspektywę Udziały zawierającą oprócz wszystkich kolumn tabeli Spółki jeszcze następujące kolumny: ProcentGłosów (danego udziałowca w danej spółce) oraz SpółkaZależna, w której występuje TAK gdy ProcentGłosów jest większy od 50, zaś NIE w przeciwnym przypadku. (b) Utwórz perspektywę Kapitały z kolumnami Spółka, SumaWkładów podającą wartości sum wkładów (kapitały) poszczególnych spółek. 5

Portfelem inwestora (udziałowca) nazywamy sumę jego wkładów we wszystkich spółkach. (a) Utwórz perspektywę Inwestycje zawierającą oprócz wszystkich kolumn tabeli Spółki jeszcze następujące kolumny: ProcentWPortfelu (danego wkładu w całym portfelu udziałowca) oraz SpółkaUlubiona, w której występuje TAK gdy ProcentWPortfelu jest większy od 50, zaś NIE w przeciwnym przypadku. (b) Utwórz perspektywę Portfele z kolumnami Udziałowiec, SumaWkładów podającą wartości sum wkładów (portfele) poszczególnych inwestorów. 2 Normalizacja (a) Dana jest tabela o schemacie z następującymi zależnościami: R(A, B, C, D, E, F ) BC D, BCD E, BE F i. Podaj wszystkie klucze tej tabeli. (b) Dana jest tabela Katalog o schemacie z następującymi zależnościami: Katalog(numer, nazwa, typ, klasa, upust, cena) nazwa typ klasa nazwa klasa upust typ upust cena i. Podaj wszystkie klucze tej tabeli. (c) Dany jest schemat relacji R = {A, B, C, D, E} z następującym zbiorem zależności funkcyjnych: BC D BCD E E D Podaj wszystkie klucze i sprowadź ten schemat do trzeciej postaci normalnej. (d) Dana jest tabela o schemacie z następującymi zależnościami: R(A, B, C, D, E, F ) A B, B C, E F, F E, EC D i. Podaj wszystkie klucze tej tabeli. (e) Dany jest schemat relacji R(A,B,C,D,E) z następującym zbiorem zależności funkcyjnych: 6

AB C DE C B D Podaj wszystkie klucze i sprowadź ten schemat do trzeciej postaci normalnej. (f) Dany jest schemat relacji R(A,B,C,D,E) z następującym zbiorem zależności funkcyjnych: AB C C D D B D E Podaj wszystkie klucze i sprowadź ten schemat do trzeciej postaci normalnej. (g) Dana jest tabela o schemacie z następującymi zależnościami: R(A, B, C, D, E, F ) A B, AB C, E F, F D E i. Podaj wszystkie klucze tej tabeli. (h) Rozważmy tabelę o schemacie R(A, B, C, D, E, F ) z następującymi zależnościami: AB C, AD E oraz CE F. i. Podaj wszystkie klucze tej relacji. (i) Rozważmy tabelę o schemacie R(A, B, C, D, E) z następującymi zależnościami: AB C, C D, C E, D A oraz E B. i. Podaj wszystkie klucze tej relacji. (j) Rozważmy tabelę o schemacie R(A, B, C, D, E, F ) z następującymi zależnościami: AB CE, C D, CD E. i. Podaj wszystkie klucze tej relacji. (k) Dany jest schemat relacji R(A, B, C, D, E) z następującym zbiorem zależności funkcyjnych: AB C DE C B D Podaj wszystkie klucze i sprowadź ten schemat do trzeciej postaci normalnej. (l) Dana jest tabela o schemacie z następującymi zależnościami: R(A, B, C, D, E, F ) BC D, BD E, CE F 7

i. Podaj wszystkie klucze tej tabeli. (m) Dana jest tabela R z atrybutami A,B,C,D,E i zależnościami funkcyjnymi A B C D BD E E C Odpowiedz na następujące pytania. i. Ile kluczy ma tabela R? Podaj je. ii. Które z podanych zależności naruszają postać normalną Boyce a-codda (BCNF)? iii. Które z podanych zależności naruszają trzecią postać normalną (3NF)? (n) Dana jest tabela R z atrybutami A,B,C,D,E,F i zależnościami funkcyjnymi A B B C E F F E i. Podaj wszystkie klucze tej tabeli. ii. Czy któreś z podanych zależności naruszają trzecią postać normalną (3NF)? Jeśli tak, to dokonaj dekompozycji na trzecią postać normalną. (o) W bazie danych znajdują się tabele Sklepy oraz Towary Sklep Miasto Towar-1 Towar-2 Towar-3 Towar-4 Bobas Kraków Smoczek Pieluszka null null.................. Towar Cena Dostawca Adres Smoczek 1 Superpol Warszawa............ Należy ją przekształcić do 3 postaci normalnej (podając skrypt SQL) uwzględniając podane poniżej zależności funkcyjne: Sklep Miasto Towar Cena Dostawca Dostawca Adres Następnie należy napisać zapytanie podające w ilu sklepach sprzedawane są towary dostawców z Krakowa. 8

3 ERD (a) Na podstawie podanego diagramu ERD napisac polecenia SQL tworzące odpowiednią bazę danych. Osoba # id * imię * nazwisko o PESEL o data urodzenia o dowód o płeć ubezpieczony ubezpieczający dla zawarta przez Polisa # numer * typ * data zawarcia * początek ochrony * koniec ochrony * suma Wiadomo, że: Dla każdej osoby musi być znany numer PESEL lub numer dowodu. Istnieją trzy typu ubezpieczeń: wyjazdowe, życiowe, komunikacyjne. W ubezpieczeniu komunikacyjnym może być ubezpieczona tylko jedna osoba. Minimalny okres ochrony to 3 tygodnie. Uwaga: Pamiętaj o więzach integralności im będzie ich więcej i sensowniejsze tym lepiej. Zastosuj swoją wiedzę i doświadczenie w zakresie ubezpieczeń (lub zdrowy rozsądek. Typy kolumn dobierz według własnego uznania (własne uznanie też punktujemy. (b) Rozważmy bazę danych warsztatu samochodowego, zawierającą informacje o wykonywanych naprawach. Warsztat naprawia samochody klientom (klient może posiadać kilka samochodów). Każda naprawa wymaga użycia pewnych części, opisanych w cenniku. W skład kosztu naprawy wchodzi też robocizna. Niektóre naprawy są skutkiem reklamacji dotyczącej poprzednio wykonanej naprawy, więc sa wykonywane bezpłatnie. Zaproponuj bazę danych dla takiej firmy (w postaci diagramu związków-encji) i podaj polecenia SQL tworzące taką bazę. Pamiętaj o warunkach integralności im więcej i sensownych ich będzie tym lepiej. (c) Kolejowa baza danych ma zawierać informacje pociągach i stacjach. Pociągi bywają osobowe albo pośpieszne, każdy z nich ma unikalny numer (lub jak kto woli nazwę), kierownika i trasę. Trasa pociągu to lista stacji, na których pociąg zatrzymuje się. Dla każdej stacji podany jest czas odjazdu/przyjazdu. Stacje dzielą się na lokalne i węzłowe. Pociągi powinny rozpoczynać i kończyć bieg na stacjach węzłowych. Pociągi pośpieszne zatrzymują się wyłącznie na stacjach węzłowych, lokalne na każdej stacji. Polecenia: Wykonaj model danych w postaci diagramu związków-encji oraz dodatkowych założeń, których nie da się wyrazić diagramem. Według stworzonego modelu zaimplementuj bazę danych w SQL, podając ciąg poleceń tworzących ją. 9

Uwagi: Zakładamy na początek, że nie są dostępne informacje geograficzne o położeniu stacji. Potem można dołożyć informacje o bezpośrednim sąsiedztwie i weryfikować trasy. Pamiętaj o kontroli poprawności. Brakującą informację (np. typy kolumn) uzupełnij zgodnie ze zdrowym rozsądkiem (zdrowy rozsądek też punktujemy ;-). (d) W Urzędzie Pracy jest potrzebna baza danych dotycząca dostępnych miejsc pracy oraz bezrobotnych. Dane opisujące miejsca pracy powinny obejmować dane pracodawcy, stanowisko i liczbę wolnych etatów oraz wymagane kwalifikacje (czyli wykształcenie). Dane bezrobotnego powinny obejmować personalia, wykształcenie oraz dotychczas zajmowane stanowiska. Jeden pracodawca może oferować wiele stanowisk i wiele etatów na danym stanowisku. Bezrobotny może być zatrudniony na stanowisku uprzednio przez siebie zajmowanym albo zgodnie z wykształceniem. Polecenia: Wykonaj model danych w postaci diagramu związków-encji oraz spisu dodatkowych założeń, których nie da się wyrazić diagramem. Według stworzonego modelu zaimplementuj bazę danych w SQL, podając ciąg poleceń tworzących ją. Uwagi: Zakładamy, że bezrobotni są obywatelami polskimi. Pamiętaj o kontroli poprawności. Brakującą informację (np. typy kolumn) uzupełnij zgodnie ze zdrowym rozsądkiem (zdrowy rozsądek też punktujemy ;-). 4 Wyzwalacze i PL/SQL (a) W tym zadaniu korzystać będziemy z bazy danych o następującym schemacie : CREATE TABLE Pracownik ( pesel CHAR(11) PRIMARY KEY, imie VARCHAR(20) NOT NULL, nazwisko VARCHAR(20) NOT NULL); CREATE TABLE Kurs ( numer NUMERIC(5) PRIMARY KEY, prowadzacy CHAR(11) REFERENCES Pracownik, nazwa VARCHAR(20) NOT NULL, data DATE NOT NULL); CREATE TABLE Uczestnik ( pesel CHAR(11) REFERENCES Pracownik, numer NUMERIC(5) REFERENCES Kurs, PRIMARY KEY (pesel, numer)); 10

Zrealizuj w PL/SQL następujące warunki poprawności: i. Nikt nie może byc równocześnie prowadzącym i uczestnikiem tego samego kursu. ii. Nikt nie może być uczestnikiem dwóch kursów odbywających się w tym samym dniu. iii. Uczestnikiem kursu o danej nazwie mozna być tylko raz. iv. Nie można być uczestnikiem kursu (o danej nazwie), dla którego było się wcześniej prowadzącym. (b) W tym zadaniu korzystać będziemy z bazy danych o następującym schemacie: CREATE TABLE Samochody ( nrrej CHAR(10) PRIMARY KEY, wlasciciel VARCHAR(30) NOT NULL, typ CHAR(1) CHECK (typ IN ( o, c )), miasto VARCHAR(20)); CREATE TABLE Ubezpieczenia ( polisa NUMERIC(5) PRIMARY KEY, data_od DATE NOT NULL, data_do DATE NOT NULL, limit NUMERIC(8) NOT NULL, auto CHAR(10) NOT NULL REFERENCES Samochody); CREATE TABLE Odszkodowania ( polisa NUMERIC(5) REFERENCES Ubezpieczenia, kwota NUMERIC(8), data DATE, PRIMARY KEY (polisa, data)); Zrealizuj następujące warunki poprawności: i. Daty wypłat odszkodowań powinny zawierać się w okresie obowiązywania ubezpieczenia. ii. Suma wypłat odszkodowań dla danego ubezpieczenia nie może przekroczyć jego limitu. Fakt odmowy wypłaty odszkodowania należy odnotować w dodatkowej tabeli (którą trzeba utworzyć). (c) W tym zadaniu korzystać będziemy z bazy danych o następującym schemacie: CREATE TABLE Lekarze ( numer NUMERIC(5) PRIMARY KEY, nazwisko VARCHAR(20) NOT NULL, imie VARCHAR(15) NOT NULL, miasto VARCHAR(20)); CREATE TABLE Pacjenci ( pesel NUMERIC(11) PRIMARY KEY, nazwisko VARCHAR(20) NOT NULL, imie VARCHAR(15) NOT NULL, limit NUMERIC(8) NOT NULL)); CREATE TABLE Zabiegi ( pacjent NUMERIC(11) REFERENCES Pacjenci, lekarz NUMERIC(5) REFERENCES Lekarze, 11

data DATE, krytyczny CHAR(3) NOT NULL CHECK (krytyczny IN ( tak, nie )); koszt NUMERIC(8) NOT NULL, PRIMARY KEY (pacjent, lekarz, data)); Zrealizuj następujące warunki poprawności: i. Lekarz nie może przeprowadzać więcej niż 6 zabiegów dziennie. ii. Sumaryczny roczny koszt zabiegów dla danego pacjenta nie może przekroczyć jego limitu świadczeń, chyba że zabieg jest krytyczny. Fakt odmowy wykonania zabiegu należy odnotować w dodatkowej tabeli (którą trzeba utworzyć). (d) Baza danych zawiera tabele: Komputer(producent, model, typ), PC(model, szybkość, ram, dysk, cdrom, cena), Laptop(model, szybkość, ram, dysk, ekran, cena). Zdefiniuj następujące ograniczenia: Komputery PC o szybkości mniejszej niż 150 MHz nie mogą być sprzedawane drożej niż za 2500 złotych lub muszą mieć co najmniej 64 MB pamięci RAM. Laptopy o ekranie mniejszym niż 11 cali, które nie mają dysku co najmniej 1GB, są sprzedawane poniżej 36000 złotych. (e) Baza danych zawiera tabele: Komputer(producent, model, typ), PC(model, szybkość, ram, dysk, cdrom, cena), Laptop(model, szybkość, ram, dysk, ekran, cena). Zdefiniuj następujące ograniczenie: Żaden laptop nie może być sprzedawany taniej niż PC o tej samej lub mniejszej szybkości i pamięci RAM. 12