Zadania do schematu UCZELNIA 725KB Jan 22 2012 09:09:22
Transkrypt
Zadania do schematu UCZELNIA 725KB Jan 22 2012 09:09:22
Zadania do schematu UCZELNIA 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: a) Dla MS SQL Server „Skrypt do schematu UCZELNIA dla MS SQL Server”. Należy uruchomić ten skrypt przez dwukrotne kliknięcie. b) Dla ORACLE „Skrypt do schematu UCZELNIA dla MS SQL Server”. Plik ten należy otworzyć przy pomocy programu Notepad lub Notepad++, zawartość skopiować do aplikacji klienckiej ORACLE (SQL_Plus lub Sqldeveloper) i uruchomić skrypt. Zostaną utworzone tabele i ich związki w Twojej bazie danych, oraz zostaną wypełnione przykładowymi danymi. Wstawianie danych, tworzenie tabel, modyfikacja danych, zmiana schematu tabeli, więzy spójności. 2. Dopisz do bazy po dwa rekordy nowych studentów i dydaktyków. Strona 1 z 5 Zadania do schematu UCZELNIA 3. Nowych dydaktyków zrób podwładnymi pana Eustachego Jajecznicy. Zadanie należy wykonać przy użyciu JEDNEGO polecenia SQL. 4. Utwórz tabelę MIASTO (Miasto_Id PK, Miasto Not Null). Dobierz odpowiednie typy danych dla kolumn. W MS SQL Server zapewnij automatyczną generację wartości klucza głównego. 5. Wstaw kilka przykładowych rekordów do tabeli MIASTO. 6. Do tabeli OSOBY dodaj kolumnę Miasto_Id, utwórz więzy referencyjne do tabeli MIASTO. 7. Przypisz osoby z tabeli OSOBY do wybranych dowolnie miast. 8. „Przenieś” wszystkie osoby mieszkające w Warszawie do Krakowa. 9. Pani Gryzelda Kapusta obroniła doktorat. Odnotuj to w bazie. 10. Do tabeli DYDAKTYCY dodaj kolumnę Placa (Money w MS SQL Server i NUMBER(6,2) w ORACLE) z więzami DEFAULT = 2000. Wypełnij kolumnę, przypisując inżynierom i magistrom płacę w wysokości 2500, pozostałym 5000. Sprawdź działanie więzów przez dodanie nowego dydaktyka. 11. Podnieś płacę panu profesorowi Apolinaremu Bigosowi o 10%. Widoki (Perspektywy) 12. Utwórz widok DYDAKTYCY_VIEW prezentujący dane dydaktyków – Imię, Nazwisko, Stopień (tekst), Miasto (tekst). 13. Utwórz widok PODLEGA_VIEW z danymi dydaktyków i ich podwładnych. Widok ma zawierać dwie kolumny: Dydaktyk (Imię i Nazwisko) oraz Podwładny (Imię i Nazwisko). Widok With Check Option 14. Wykonaj widok OCENAINS_VIEW służący do wpisywania ocen. Zagwarantuj niemożliwość wstawienia poprzez ten widok oceny spoza zbioru {2, 3.0, 3.5, 4.0, 4.5, 5.0}. Usuwanie danych z tabel 15. Usuń jednego dopisanego przez siebie dydaktyka i jednego studenta, odwołując się do ich nazwisk. 16. Sprawdź, czy uda się usunąć miasto z tabeli MIASTO do którego odwołują się rekordy z tabeli OSOBY. A może uda się usunąć tabelę MIASTO? Zmiana schematu tabeli, więzy spójności. 17. Do tabeli OSOBY dodać kolumnę PESEL Varchar(11) z opcją UNIQUE. Sprawdzić wstawiając kilka rekordów, czy unikalność numerów PESEL będzie rzeczywiście sprawdzana. Strona 2 z 5 Zadania do schematu UCZELNIA UWAGA: MS SQL Server traktuje NULL jako wartość znaczącą, mogącą pojawić się tylko jeden raz w kolumnie z więzami UNIQUE!!! Problem ten nie występuje w ORACLE. 18. Do tabeli OSOBY dodać kolumnę Data_urodzenia z więzami CHECK pilnującymi, aby w bazie nie pojawiły się osoby urodzone po 1994-01-01. Sprawdź działanie tych więzów. 19. Do tabeli OSOBY dodać kolumnę PLEC Bit z opcją NOT NULL. UWAGA: Serwer bazy danych nie dopuści do dodania do tabeli kolumny z więzami NOT NULL, jeżeli w tej tabeli znajdują się rekordy. Rozwiązaniem jest dodanie kolumny, uzupełnienie jej znaczącymi danymi a następnie utworzenie na niej więzów NOT NULL. W ORACLE możliwe jest zadeklarowanie na tej kolumnie dodatkowych więzów DEFAULT. Komórki w nowej kolumnie istniejących rekordów zostaną wypełnione wartością domyślną. 20. Sprawdź działanie wszystkich utworzonych więzów. Usuwanie obiektów bazy danych 21. Usunąć tabelę MIASTO oraz perspektywę DYDAKTYCY_VIEW. Transact_SQL i PL/SQL 22. Napisz prosty program w Transact-SQL (PL/SQL). Zadeklaruj zmienną, przypisz na tą zmienną liczbę rekordów w tabeli OSOBY (lub jakiejkolwiek innej) i wypisz uzyskany wynik używając instrukcji Print (T-SQL) lub dbms_output (PL/SQL), w postaci napisu np. "W tabeli jest 10 osób". 23. Używając T-SQL (PL/SQL), policz dydaktyków z tabeli DYDAKTYCY. Jeśli ich liczba jest mniejsza niż 15, wstaw dydaktyka: doktora Alcesta Dynię i wypisz odpowiedni komunikat. Jeśli liczba pracowników jest większa niż 15, wypisz komunikat informujący o tym, że nie wstawiono danych z powodu braku etatów. Procedury Transact_SQL i PL/SQL 24. Utwórz procedurę zwracającą dane studentów (Imię, Nazwisko, Miasto, Numer indeksu), których rok rekrutacji będzie podawany w parametrze procedury. W T_SQL skorzystaj z funkcji DATEPART(yyyy, hiredate), w Pl/SQL z funkcji To_char(hiredate, 'yyyy'). 25. Utwórz procedurę zwracającą liczbę studentów, których rok rekrutacji zostanie podany w parametrze procedury. W T_SQL przećwicz 3 sposoby zwracania danych przez procedurę (parametr typu OUTPUT, RETURN i ResultSet). 26. Utwórz procedurę, która będzie „przenosiła” zapisane w bazie danych osoby z miasta którego nazwa zostanie podana w parametrze procedury do innego miasta, też o nazwie podanej w parametrze procedury . Porównaj rozwiązanie z rozwiązaniem zadania 8. 27. Utwórz procedurę służącą do dopisywania nowego przedmiotu do bazy. Procedura będzie otrzymywała w parametrach nazwę i skrót nazwy przedmiotu. W procedurze należy sprawdzić, czy przedmiot o danej nazwie lub skrócie istnieje. Jeżeli nie, należy go Strona 3 z 5 Zadania do schematu UCZELNIA dopisać. Na zakończenie należy wypisać komunikat z informacją o wykonaniu (lub nie) operacji. 28. Przekształć blok z zadania 23 w procedurę dopisująca nowego dydaktyka do bazy. Imię, nazwisko i stopień naukowy będą podawane w parametrach procedury (nazwa, lub skrót nazwy stopnia). W procedurze nie sprawdzaj liczby zatrudnionych dydaktyków, lecz istnienie w bazie rekordu zawierającego dane kandydata. Jeżeli już jest w bazie odnotowany, nie dopisuj go. Sprawdź także, czy podany w parametrze stopień jest zapisany w bazie. Procedurę należy zakończyć komunikatem w wykonanej operacji. W PL/SQL utwórz i wykorzystaj sekwencję do realizacji wartości klucza głównego w tabelach OSOBA i DYDAKTYCY. Procedury z wykorzystaniem kursora 29. Przy pomocy kursora przejrzyj wszystkich dydaktyków i zmodyfikuj wynagrodzenia tak, aby osoby zarabiające mniej niż 2500 miały zwiększone wynagrodzenie o 10%, natomiast osoby zarabiające powyżej 4000 miały zmniejszone wynagrodzenie o 10%. Wypisz informacje o wszystkich wprowadzanych zmianach. 30. Przerób kod z zadania 29 na procedurę tak, aby progowe wartości kwot nie były stałe, lecz zadawane parametrami procedury. Wyzwalacze bazy danych 31. Utwórz wyzwalacz, który nie pozwoli usunąć rekordu z tabeli OCENY. 32. Utwórz wyzwalacz niepozwalający usunąć osoby (dydaktyka), która ma podwładnych. Zakładamy, że może być usuwany tylko jeden rekord i nie jest to zrealizowane przez więzy referencyjne. 33. Utwórz wyzwalacz, który przy wpisywaniu nowego studenta do bazy wygeneruje mu numer indeksu, jeśli nie był on podany w instrukcji INSERT. 34. Utwórz wyzwalacz, który przy wstawianiu, lub modyfikowaniu danych w tabeli DYDAKTYCY sprawdzi, czy nowe zarobki (wstawiane lub modyfikowane) są większe niż 2000. W przeciwnym wypadku wyzwalacz powinien zgłosić błąd i nie dopuścić do wstawienia rekordu (można to oczywiście osiągnąć również używając więzów CHECK na tabeli). 35. Utwórz tabelę BUDZET (Wartosc INT NOT NULL, Data_aktualizacji). W tabeli tej będzie przechowywana łączna wartość wynagrodzeń wszystkich dydaktyków. Tabela będzie zawsze zawierała jeden wiersz. 36. Oblicz początkową sumę zarobków i uzupełnij tabelę BUDZET. Należy to zrealizować jednym poleceniem! 37. Utwórz wyzwalacz, który będzie pilnował, aby wartość w tabeli BUDZET była zawsze aktualna, a więc przy wszystkich operacjach aktualizujących tabelę EMP (INSERT, UPDATE, DELETE), wyzwalacz będzie aktualizował wpis w tabeli BUDZET. 38. Utwórz tabelę ROCZNIK {Rok Int UNIQUE, Liczba Int, DataAktualizacji Date}. Na tabeli STUDENCI utwórz wyzwalacz, który po każdej zmianie w tabeli (INSERT, UPDATE, DELETE) uaktualni tabelę STUDENCI tak, aby zawsze zawierała aktualne liczby studentów każdego rocznika (według dat rekrutacji). Strona 4 z 5 Zadania do schematu UCZELNIA Zadania dodatkowe 39. Usuń wszystkie wpisy z kolumny Placa w tabeli DYDAKTYCY. 40. Utwórz tabelę SIATKA_PLAC (Stopien_Id Int Primary Key, Placa_Min Money, Placa_Max Money) – T-SQL i SIATKA_PLAC (Stopien_Id Int Primary Key, Placa_Min Numbert(10, 2), Placa_Max Numbert(10, 2)) – Pl/SQL. Utwórz więzy referencyjne do tabeli STOPNIE_TYTULY. 41. Napisz procedurę, która otrzyma w parametrach dwie wartości „widełek” płacowych dla stopnia „inżynier” (np. 1500 i 2000), nastepnie wypełni całą tabelę SIATKA_PLAC wartościami, według następujacego klucza: płaca minimalna każdego wyższego stopnia jest o 10 procent niższa, niż płaca maksymalna stopnia niższego, a płaca maksymalna każdego stopnia jest o 25 procent wyższa niż płaca minimalna tego stopnia. Zakładamy, że stopnie w tabeli STOPNIE_TYTULY są posortowane malejąco (od profesora do inżyniera). 42. Utwórz wyzwalacz na tabeli DYDAKTYCY, który będzie pilnował, aby płace pozostawały zgodne z siatką. Spróbuj uwzględnić zmianę stopnia (tylko podwyższenie) – wówczas należy przypisać najnizszą płacę dopuszczalną dla danego stopnia. Strona 5 z 5