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

Podobne dokumenty