9
K. Matouk – ćwiczenia z Accessa
Zaprojektować bazę danych zawierającą informacje o pewnej FIRMIE.
Potrzebne są informacje o
PRACOWNIKACH,
GRUPACH (grupach pracowników) i
ZADANIACH.
TABELE
(Koniecznie, ale być może niewystarczające).
TABELA
ATRYBUTY (KOLUMNY)
Pracownik
ID_Pracownika, Imię, Nazwisko, DataUr, Zwierzchnik (identyfikator pracownika w tej samej tabeli)
Grupa
ID_Grupy, Nazwa, ID_Szefa (identyfikator pracownika)
Zadania
ID_Zadania, ID_Grupy, Nazwa, DataRozp, DataZak, MinLiczbaOsób
????
Klucze, jeśli są pojedynczymi polami, powinny być typu Autonumer.
POWIĄZANIA (RELACJE)
(Występują powiązania 1-1 i 1-Wiele.)
· Grupy są tworzone tylko na potrzeby zadań (jednej grupie odpowiada jedno zadanie i odwrotnie). Zadanie może być jednak utworzone przed utworzeniem grupy. Sprzężenie powinno być takie, by można było oglądać wszystkie zadania, nie tylko te, którym przydzielono grupy.
(uwaga: należy połączyć pole IDGrupy (od tabeli Zadania) z IDgrupy (do tabeli Grupa). Na pierwszy rzut oka może to wyglądać jako relacja 1-∞, ale w momencie kiedy zmieniamy właściwości pola IDGrupy (w tabeli Zadania) w miejscu indeksowane na Tak (Bez duplikatów), relacja staje się 1-1).
· Jeden pracownik może być szefem wielu grup. Grupa nie musi mieć określonego szefa. Więzy integralności mają być sprawdzane, ale niewymuszane (bez operacji kaskadowych). Sprzężenie między tablicami należy określić tak, by w zapytaniach można było oglądać grupy i nazwiska ich szefów oraz grupy nieposiadające szefów.
· Pracownik może należeć do wielu grup. Grupa może składać się z wielu pracowników. Należy wymusić przestrzeganie więzów integralności i kaskadowe usuwanie i modyfikowanie rekordów. Relacje
WARUNKI POPRAWNOŚCI (REGUŁY)
Jeśli znana jest data urodzenia pracownika (może być pusta), to na pewno spełniony jest warunek, że pracownik ma nie więcej niż 65 lat (nie jest jeszcze na emeryturze).
W wyznaczonej bazie danych (zawierającej informacje o pracownikach pewnej firmy) należy utworzyć poniższe zapytania:
1. pracownicy (imię, nazwisko, data urodzenia) urodzeni w roku 1970 lub później, uszeregowani malejąco wg wieku, zad1
2. jak wyżej, a ponadto należy podać wiek pracowników (liczbę lat) zad2
3. pracownicy i dane (imiona i nazwiska) ich stałych zwierzchników zad3
4. pracownicy pracujący w grupie pod nazwą „Marketing”; nazwisko i imię pracownika mają się znaleźć w jednym polu (w tej kolejności) o nazwie „Pracownik”; dane mają być uporządkowane rosnąco wg tego pola zad4
5. pracownicy pracujący w grupie o zadanej nazwie (parametr), uporządkowani rosnąco wg nazwisk i imion)
6. pracownicy i liczba grup, w których pracują zad6
7. pracownicy, którzy pracują w więcej niż dwóch grupach i liczba grup, w których pracują
zad7
8. pracownicy urodzeni w roku 1970 lub później i liczba grup, w których pracują zad8
9. wszyscy podwładni zwierzchnika o zadanym nazwisku (parametr)
10. 5 pracowników z największą sumą zarobków (suma po wszystkich grupach) zad10
1. pracownicy i grupy, w których pracują zad1cd
(pola: IDPracownika, Pracownik zawierający nazwisko i imię pracownika, IDGrupy, Nazwa grupy).
Uporządkowanie: rosnąco wg pola Pracownik
2. daty urodzenia pracowników, których nazwiska rozpoczynają się podanym ciągiem znaków (parametr)
(pola: Nazwisko, Imię, DataUr).
Uporządkowanie: rosnąco wg nazwisk
UWAGA
Podanie pustego ciągu znaków powinno spowodować wyświetlenie wszystkich pracowników
3. suma zarobków pracowników: zad3cd
Sumowane mają być zarobki >= 400 zł, a wyświetlane tylko sumy zarobków >=1000 zł;
(pola: Pracownik, Suma zarobków).
Uporządkowanie: malejąco wg sumy zarobków
4. długości trwania zadań zad4cd
(pola: Szef grupy (nazwisko i imię szefa), Nazwa grupy, Nazwa zadania, Data Rozpoczęcia, Długość zadania (liczba dni, jeśli znane są data rozpoczęcia i data zakończenia zadania, w przeciwnym wypadku - wartość „?”).
Uporządkowanie: malejąco wg długości zadań
Zadania nie muszą mieć przydzielonych grup, a grupy nie muszą mieć wyznaczonych swoich szefów
5. pracownicy i grupy, w których pracują, oraz nazwiska szefów tych grup zad5cd
6. nazwy grup i dane ich szefów zad6cd
(pola: Szef zawierające Nazwisko i imię, Rok urodzenia).
Uporządkowanie: wg pola Szef
Należy także wyświetlić grupy niemające szefów.
7. zadania, dla których liczba przydzielonych pracowników jest przynajmniej taka, jak podano w polu MinLiczbaPrac) zad7cd
Należy zwrócić uwagę na pola wg, których ma przebiegać grupowanie i pola, które mają być zliczane.
8. zestawienie zawierające grupy i wypłaty w grupach; zad8cd
zapytanie krzyżowe:
nagłówki wierszy - nazwa grupy, suma wypłat w danej grupie,
nagłówek kolumny - dane pracownika (nazwisko i imię) (rosnąco),
wartości - wypłaty pracownika w danej grupie.
9. to samo, co w zadaniu 8, a oprócz tego nagłówkiem wiersza ma być nazwisko szefa grupy
zad9cd
Relacje
Zadanie 1
Zadanie 2
Zadanie 3
Zadanie 4
Zadanie 5
Zadanie 6
Zadanie 7
Zadanie 8
Zadanie 10
w widoku SQL modyfikujemy instrukcję dodając TOP 5
SELECT TOP 5 Pracownik.Imię, Pracownik.Nazwisko, Sum(PracWGrupie.[Miesięczna Wypłata]) AS [SumazMiesięczna Wypłata]
FROM Pracownik INNER JOIN PracWGrupie ON Pracownik.IDPracownika = PracWGrupie.IDPracownika
GROUP BY Pracownik.Imię, Pracownik.Nazwisko;
Zadanie 1 cd
Zadanie 3 cd
Zadanie 4 cd
Zadanie 5 cd
Zadanie 6 cd
...
ghito