Bazy danych: zadania cwiczebne na tempo i dykcj˛e
Transkrypt
Bazy danych: zadania cwiczebne na tempo i dykcj˛e
Bazy danych: zadania ćwiczebne na tempo i dykcj˛e 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˛etrznym do Firma. Należy zapisać w SQL nast˛epujace ˛ zapytania: (a) Podaj nazwy i adresy firm, które sprzedaja˛ co najmniej dwa modele komputerów tego samego typu. (b) Podaj nazw˛e 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˛edziemy z bazy danych o nast˛epujacym ˛ 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˛epujace ˛ pytania (Uwaga: jeśli pytamy o najwi˛ekszy (najdroższy itp.) obiekt, a jest kilka obiektów najwi˛ekszych, to należy podać wszystkie): 1 (a) Która obecnie wypożyczona ksia˛żka jest najdłużej trzymana i przez kogo (może być kilka takich ksia˛żek — należy podać wszystkie)? (b) Jaki jest procent przebywania poszczególnych ksia˛żek poza biblioteka? ˛ (c) Podaj numery katalogowe i tytuły pi˛eciu (lub wi˛ecej, jeśli jest “remis”) ksia˛żek o najwi˛ekszej liczbie wypożyczeń. (d) Kto czytał najdroższa˛ ksia˛żk˛e wydana˛ przed 1989 rokiem (może być kilka takich ksia˛żek — podaj dla wszystkich)? (e) Którzy czytelnicy wypożyczyli w tym roku najwi˛ecej ksia˛żek? 3. W bazie danych znajduja˛ si˛e 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˛epujace ˛ polecenia: • Jaka jest maksymalna liczba ubezpieczeń jednej osoby? • Wypisz nazwy miast wraz z liczba˛ ubezpieczonych osób w każdym mieście. • Wypisz łaczn ˛ a˛ prowizj˛e 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˛ety umowa˛ ubezpieczenia. • Który agent zawarł umow˛e ubezpieczenia o najdłuższym okresie? • Który agent nie zawarł żadnego ubezpieczenia? 2 • Z jakiego miasta pochodzi najwi˛ecej ubezpieczonych? • Czy wśród numerów agentów zawierajacych ˛ umowy ubezpieczenia wyst˛epuje numer niezarejestrowany w tabeli AGENCI? • Czy wszystkie osoby zarejestrowane w tabeli OSOBY sa˛ obecnie obj˛ete ochrona˛ w wariancie ’B’? • Którzy spośród agentów stracili klienta (nast˛epne ubezpieczenie z ta˛ sama˛ osoba˛ zawarł inny agent)? • W którym roku zawarto najwi˛ecej ubezpieczeń? • Czy sa˛ osoby, które były jednocześnie obj˛ete dwoma różnymi ubezpieczeniami w tym samym wariancie? • Wypisz numery polis i czas ich trwania w dniach, miesiacach ˛ i latach. • Ile jest ubezpieczeń? • Jaka jest najwi˛eksza 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˛epujace ˛ zapytania: (a) Podaj nazwy i adresy producentów, wytwarzajacych ˛ co najmniej dwa różne typy nart o tym samym przeznaczeniu. (b) Podaj nazw˛e i telefon producenta wytwarzajacego ˛ najdroższe narty. (c) Podaj te typy nart, które sa˛ wytwarzane przez wszystkich producentów. 5. W alpinistycznej bazie danych znajduja˛ si˛e 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 sa˛ podane z dokładnościa˛ do pi˛eciu stopni w postaci ’35N’ lub ’22W’, gdzie litera wskazuje półkul˛e. Zakładamy także, że dla każdego szczytu istnieje w bazie co najmniej jedna droga. Zapisz w SQL nast˛epujace ˛ polecenia: (a) Wypisz wszystkie szczyty wraz z najtrudniejszymi drogami i ich pierwszymi zdobywcami, o ile istnieja.˛ (b) Wypisz szerokość geograficzna,˛ wyst˛epujac ˛ a˛ przy najwi˛ekszej liczbie ośmiotysi˛eczników. (c) Sprawdź, czy istnieja˛ i podaj niezdobyte drogi. (d) Wypisz zdobywców, którzy zdobyli najwi˛ecej szczytów w Tatrach. 6. Baza danych zawiera tabele • Gatunki(gatunek, kontynent) — kluczem jest gatunek (zakłada si˛e, że każdy gatunek pochodzi z dokładnie jednego kontynentu); • Zwierzaki(imie, gatunek, waga) — kluczem jest imie. Zrealizuj w postaci zapytania SQL nast˛epujace ˛ polecenia: (a) Dla każdego gatunku podaj wag˛e najci˛eż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˛epuja˛ zwierzaki ważace ˛ wi˛ecej, niż średnia waga zwierzaków z tego kontynentu. 7. Baza danych zawiera tabele: • Gatunki(nazwa, kontynent, chroniony, lubi): kluczem jest nazwa, • Zwierzaki(imi˛ e, gatunek, płeć, wiek, waga, wybieg): kluczem jest imi˛ e, zaś gatunek kluczem zewn˛etrznym do Gatunki. Należy zapisać w SQL nast˛epujace ˛ 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˛eższe zwierzaki z tego kontynentu (jego wag˛e, imi˛e i gatunek). (d) Dla każdego kontynentu podaj cztery najlżejsze zwierzaki z tego kontynentu (jego wag˛e, imi˛e i gatunek). 4 (e) Podaj średnia˛ liczb˛e zwierzaków dla gatunków chronionych. (f) Podaj średnia˛ liczb˛e zwierzaków z kontynentu. 8. Baza danych o sprz˛ecie komputerowym zawiera nast˛epujace ˛ 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˛eci w MB, hd pojemność dysku w GB, cd szybkość czytnika CD-ROM, zaś ekran rozmiar ekranu. Zrealizuj w SQL nast˛epujace ˛ zapytania: (a) Podaj te rozmiary twardego dysku, które wyst˛epuja˛ co najmniej w dwóch pecetach. (b) Kto produkuje komputer (pecet lub laptop) o najwi˛ekszej dost˛epnej szybkości? 9. Spedycyjna kolejowa baza danych zawiera tabele: • Pociag(nazwa, ˛ stacja, kierownik) : kluczem jest nazwa, • Wagon(numer, pociag, ˛ typ, producent, ładowność) : kluczem jest numer, zaś pociag ˛ kluczem zewn˛etrznym do Pociag. ˛ Należy zapisać w SQL nast˛epujace ˛ zapytania: (a) Podaj nazwy pociagów, ˛ które zawieraja˛ co najmniej dwa różne typy wagonów od tego samego producenta. (b) Podaj kierownika pociagu ˛ zawierajacego ˛ wagon o najwi˛ekszej ładowności. (c) Podaj te typy wagonów, które znajduja˛ si˛e we wszystkich pociagach. ˛ 10. Tabela Spółki (definicja poniżej) zawiera w każdym wierszu w kolumnie Wkład kwot˛e wpłacona˛ 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˛e 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˛e Udziały zawierajac ˛ a˛ oprócz wszystkich kolumn tabeli Spółki jeszcze nast˛epujace ˛ kolumny: ProcentGłosów (danego udziałowca w danej spółce) oraz SpółkaZależna, w której wyst˛epuje ’TAK’ gdy ProcentGłosów jest wi˛ekszy od 50, zaś ’NIE’ w przeciwnym przypadku. (b) Utwórz perspektyw˛e Kapitały z kolumnami Spółka, SumaWkładów podajac ˛ a˛ wartości sum wkładów (kapitały) poszczególnych spółek. 5 Portfelem inwestora (udziałowca) nazywamy sum˛e jego wkładów we wszystkich spółkach. (a) Utwórz perspektyw˛e Inwestycje zawierajac ˛ a˛ oprócz wszystkich kolumn tabeli Spółki jeszcze nast˛epujace ˛ kolumny: ProcentWPortfelu (danego wkładu w całym portfelu udziałowca) oraz SpółkaUlubiona, w której wyst˛epuje ’TAK’ gdy ProcentWPortfelu jest wi˛ekszy od 50, zaś ’NIE’ w przeciwnym przypadku. (b) Utwórz perspektyw˛e Portfele z kolumnami Udziałowiec, SumaWkładów podajac ˛ a˛ wartości sum wkładów (portfele) poszczególnych inwestorów. 2 Normalizacja (a) Dana jest tabela o schemacie R(A, B, C, D, E, F ) z nast˛epujacymi ˛ zależnościami: BC → D, BCD → E, BE → F i. Podaj wszystkie klucze tej tabeli. ii. Sprowadź t˛e tabel˛e do trzeciej postaci normalnej (3NF). (b) Dana jest tabela Katalog o schemacie Katalog(numer, nazwa, typ, klasa, upust, cena) z nast˛epujacymi ˛ zależnościami: nazwa typ → klasa nazwa klasa → upust typ upust → cena i. Podaj wszystkie klucze tej tabeli. ii. Sprowadź t˛e tabel˛e do trzeciej postaci normalnej (3NF). (c) Dany jest schemat relacji R = {A, B, C, D, E} z nast˛epujacym ˛ 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 R(A, B, C, D, E, F ) z nast˛epujacymi ˛ zależnościami: A → B, B → C, E → F, F → E, EC → D i. Podaj wszystkie klucze tej tabeli. ii. Sprowadź t˛e tabel˛e do trzeciej postaci normalnej (3NF). (e) Dany jest schemat relacji R(A,B,C,D,E) z nast˛epujacym ˛ zbiorem zależności funkcyjnych: 6 AB → C C→D D→B D→E Podaj wszystkie klucze i sprowadź ten schemat do trzeciej postaci normalnej. (f) Dana jest tabela o schemacie R(A, B, C, D, E, F ) z nast˛epujacymi ˛ zależnościami: A → B, AB → C, E → F, F D → E i. Podaj wszystkie klucze tej tabeli. ii. Sprowadź t˛e tabel˛e do trzeciej postaci normalnej (3NF). (g) Rozważmy tabel˛e o schemacie R(A, B, C, D, E, F ) z nast˛epujacymi ˛ zależnościami: AB → C, AD → E oraz CE → F . i. Podaj wszystkie klucze tej relacji. ii. Sprowadź t˛e tabel˛e do trzeciej postaci normalnej (3NF). (h) Rozważmy tabel˛e o schemacie R(A, B, C, D, E) z nast˛epujacymi ˛ zależnościami: AB → C C→D C→E D→A E → B. i. Podaj wszystkie klucze tej relacji. ii. Sprowadź t˛e tabel˛e do trzeciej postaci normalnej (3NF). (i) Rozważmy tabel˛e o schemacie R(A, B, C, D, E, F ) z nast˛epujacymi ˛ zależnościami: AB → CE, C → D, CD → E. i. Podaj wszystkie klucze tej relacji. ii. Sprowadź t˛e tabel˛e do trzeciej postaci normalnej (3NF). (j) Dany jest schemat relacji R(A, B, C, D, E) z nast˛epujacym ˛ zbiorem zależności funkcyjnych: AB → C DE → C B→D Podaj wszystkie klucze i sprowadź ten schemat do trzeciej postaci normalnej. (k) Dana jest tabela o schemacie R(A, B, C, D, E, F ) z nast˛epujacymi ˛ zależnościami: BC → D, BD → E, CE → F i. Podaj wszystkie klucze tej tabeli. ii. Sprowadź t˛e tabel˛e do trzeciej postaci normalnej (3NF). 7 (l) Dana jest tabela R z atrybutami A,B,C,D,E i zależnościami funkcyjnymi A → C → B D BD → E E → C Odpowiedz na nast˛epujace ˛ pytania. i. Ile kluczy ma tabela R? Podaj je. ii. Które z podanych zależności naruszaja˛ postać normalna˛ Boyce’a-Codda (BCNF)? iii. Które z podanych zależności naruszaja˛ trzecia˛ postać normalna˛ (3NF)? (m) Dana jest tabela R z atrybutami A,B,C,D,E,F i zależnościami funkcyjnymi A → B B E → C → F F → E i. Podaj wszystkie klucze tej tabeli. ii. Czy któreś z podanych zależności naruszaja˛ trzecia˛ postać normalna˛ (3NF)? Jeśli tak, to dokonaj dekompozycji na trzecia˛ postać normalna.˛ (n) W bazie danych znajduja˛ si˛e tabele Sklepy Sklep Bobas ... Miasto Kraków ... Towar-1 Smoczek ... Towar-2 Pieluszka ... Towar-3 null ... Towar-4 null ... oraz Towary Towar Smoczek ... Cena 1 ... Dostawca Superpol ... Adres Warszawa ... Należy ja˛ przekształcić do 3 postaci normalnej (podajac ˛ skrypt SQL) uwzgl˛edniajac ˛ podane poniżej zależności funkcyjne: Sklep → Miasto Towar → Cena Dostawca Dostawca → Adres Nast˛epnie należy napisać zapytanie podajace ˛ w ilu sklepach sprzedawane sa˛ towary dostawców z Krakowa. 8 3 ERD (a) Na podstawie podanego diagramu ERD napisac polecenia SQL tworzace ˛ odpowiednia˛ baz˛e danych. Osoba # id * imi˛e * nazwisko o PESEL o data urodzenia o dowód o płeć ubezpieczony ubezpieczajacy ˛ Polisa dla # numer * typ * data zawarcia * poczatek ˛ ochrony * koniec ochrony * suma zawarta przez Wiadomo, że: • • • • Dla każdej osoby musi być znany numer PESEL lub numer dowodu. Istnieja˛ trzy typu ubezpieczeń: wyjazdowe, życiowe, komunikacyjne. W ubezpieczeniu komunikacyjnym może być ubezpieczona tylko jedna osoba. Minimalny okres ochrony to 3 tygodnie. Uwaga: • Pami˛etaj o wi˛ezach integralności — im b˛edzie ich wi˛ecej i sensowniejsze tym lepiej. • Zastosuj swoja˛ wiedz˛e i doświadczenie w zakresie ubezpieczeń (lub zdrowy rozsadek. ˛ • Typy kolumn dobierz według własnego uznania (własne uznanie też punktujemy. (b) Rozważmy baz˛e danych warsztatu samochodowego, zawierajac ˛ a˛ informacje o wykonywanych naprawach. Warsztat naprawia samochody klientom (klient może posiadać kilka samochodów). Każda naprawa wymaga użycia pewnych cz˛eści, opisanych w cenniku. W skład kosztu naprawy wchodzi też robocizna. Niektóre naprawy sa˛ skutkiem reklamacji dotyczacej ˛ poprzednio wykonanej naprawy, wi˛ec sa wykonywane bezpłatnie. Zaproponuj baz˛e danych dla takiej firmy (w postaci diagramu zwiazków-encji) ˛ i podaj polecenia SQL tworzace ˛ taka˛ baz˛e. Pami˛etaj o warunkach integralności — im wi˛ecej i sensownych ich b˛edzie tym lepiej. (c) Kolejowa baza danych ma zawierać informacje pociagach ˛ i stacjach. Pociagi ˛ bywaja˛ osobowe albo pośpieszne, każdy z nich ma unikalny numer (lub jak kto woli nazw˛e), kierownika i tras˛e. Trasa pociagu ˛ to lista stacji, na których pociag ˛ zatrzymuje si˛e. Dla każdej stacji podany jest czas odjazdu/przyjazdu. Stacje dziela˛ si˛e na lokalne i w˛ezłowe. Pociagi ˛ powinny rozpoczynać i kończyć bieg na stacjach w˛ezłowych. Pociagi ˛ pośpieszne zatrzymuja˛ si˛e wyłacznie ˛ na stacjach w˛ezłowych, lokalne na każdej stacji. Polecenia: • Wykonaj model danych w postaci diagramu zwiazków-encji ˛ oraz dodatkowych założeń, których nie da si˛e wyrazić diagramem. • Według stworzonego modelu zaimplementuj baz˛e danych w SQL, podajac ˛ ciag ˛ poleceń tworzacych ˛ ja.˛ 9 Uwagi: • Zakładamy na poczatek, ˛ że nie sa˛ dost˛epne informacje “geograficzne” o położeniu stacji. Potem można dołożyć informacje o bezpośrednim sasiedztwie ˛ i weryfikować trasy. • Pami˛etaj o kontroli poprawności. • Brakujac ˛ a˛ informacj˛e (np. typy kolumn) uzupełnij zgodnie ze zdrowym rozsadkiem ˛ (zdrowy rozsadek ˛ też punktujemy ;-). (d) W Urz˛edzie Pracy jest potrzebna baza danych dotyczaca ˛ dost˛epnych miejsc pracy oraz bezrobotnych. Dane opisujace ˛ miejsca pracy powinny obejmować dane pracodawcy, stanowisko i liczb˛e 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 zwiazków-encji ˛ oraz spisu dodatkowych założeń, których nie da si˛e wyrazić diagramem. • Według stworzonego modelu zaimplementuj baz˛e danych w SQL, podajac ˛ ciag ˛ poleceń tworzacych ˛ ja.˛ Uwagi: • Zakładamy, że bezrobotni sa˛ obywatelami polskimi. • Pami˛etaj o kontroli poprawności. • Brakujac ˛ a˛ informacj˛e (np. typy kolumn) uzupełnij zgodnie ze zdrowym rozsadkiem ˛ (zdrowy rozsadek ˛ też punktujemy ;-). 4 Wyzwalacze i PL/SQL (a) W tym zadaniu korzystać b˛edziemy z bazy danych o nast˛epujacym ˛ 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˛epujace ˛ warunki poprawności: i. ii. iii. iv. Nikt nie może byc równocześnie prowadzacym ˛ i uczestnikiem tego samego kursu. Nikt nie może być uczestnikiem dwóch kursów odbywajacych ˛ si˛e w tym samym dniu. Uczestnikiem kursu o danej nazwie mozna być tylko raz. Nie można być uczestnikiem kursu (o danej nazwie), dla którego było si˛e wcześniej prowadzacym. ˛ (b) W tym zadaniu korzystać b˛edziemy z bazy danych o nast˛epujacym ˛ 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˛epujace ˛ warunki poprawności: i. Daty wypłat odszkodowań powinny zawierać si˛e w okresie obowiazywania ˛ 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óra˛ trzeba utworzyć). (c) W tym zadaniu korzystać b˛edziemy z bazy danych o nast˛epujacym ˛ 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˛epujace ˛ warunki poprawności: i. Lekarz nie może przeprowadzać wi˛ecej 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óra˛ 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˛epujace ˛ ograniczenia: • Komputery PC o szybkości mniejszej niż 150 MHz nie moga˛ być sprzedawane drożej niż za 2500 złotych lub musza˛ mieć co najmniej 64 MB pami˛eci RAM. • Laptopy o ekranie mniejszym niż 11 cali, które nie maja˛ dysku co najmniej 1GB, sa˛ 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˛epujace ˛ ograniczenie: • Żaden laptop nie może być sprzedawany taniej niż PC o tej samej lub mniejszej szybkości i pami˛eci RAM. 12