1
1. Zarządzanie funkcjonowaniem wortalu internetowego fir-
my z elementami zarządzania informacjami
Internetowy wortal informacyjny
Wyobraź sobie, że pracujesz w czasopiśmie o ogólnopolskim zasięgu jako specjalista od nowocze-
snych technologii. Nowy redaktor naczelny magazynu podjął niedawno decyzję o stworzeniu wielo-
tematycznego portalu internetowego (wortalu), który stanowiłby wizytówkę magazynu w sieci. Two-
im zadaniem jest stworzenie bazy danych obsługujących nowe informacje (newsy) pojawiające się na
witrynie. W bazie przechowywane mają być informacje o użytkownikach uprawnionych do dodawa-
nia informacji, treści tych informacji, słowa kluczowe powiązane z informacjami (tagi) oraz komenta-
rze do informacji.
•
każdy użytkownik może być autorem dowolnej liczby informacji, każda informacja ma jednego
autora
•
każda informacja może mieć wiele powiązanych słów kluczowych, każde słowo kluczowe może
być powiązane z dowolną liczbą informacji
•
każda informacja może być skomentowana dowolną ilość razy, dany komentarz odnosi się tylko
do jednej informacji
•
każdy komentarz może być autorstwa użytkownika lub być anonimowy
Minimalne informacje przechowywane w bazie:
użytkownicy: login, imię, nazwisko, data dołączenia
informacje: treść, data dodania, średnia ocena wieści, liczba komentarzy
słowa kluczowe: słowo (np. IBM, filmy, George Clooney, Web 2.0 itd.)
komentarze: treść, data dodania, autor, ocena informacji
Widoki:
vw_liczba_informacji – dla każdego użytkownika wypisuje liczbę dodanych przez niego informacji
vw_informacji_wg_tagu – dla każdego słowa kluczowego wypisuje informacje z nim powiązane
vw_komentarze – dla każdej informacji wypisuje komentarze do niej dodane
vw_uzytkownicy_tagi – dla każdego użytkownika wypisuje wszystkie słowa kluczowe powiązane
z dodanymi przez niego informacjami oraz liczbę ich wystąpień
vw_uzytkownicy_ranking – dla każdego użytkownika wypisuje średnią ocen wszystkich informacji
dodanych przez danego użytkownika
Wyzwalacz:
W momencie wstawienia nowego komentarza obliczana jest średnia ocena danej informacji oraz
liczba komentarzy do niej dodanych. Obie te wartości są wstawiane (lub aktualizowane) w odpo-
wiednich miejscach w tabeli przechowującej informacje o informacjach.
Minimalne dane:
•
przynajmniej 5 użytkowników
•
przynajmniej 20 informacji, każda powiązanymi z przynajmniej dwoma słowami kluczowymi
•
przynajmniej 20 słów kluczowych
•
przynajmniej 60 komentarzy
2
2. Aukcja jako element gry strategicznej
System
aukcyjny
Właściciel pewnego znanego portalu społecznościowego postanowił rozszerzyć swoją ofertę. Pragnie
on, aby użytkownicy portalu mieli możliwość wystawiania różnych przedmiotów na aukcje. Otrzyma-
łeś zlecenie stworzenia bazy danych obsługującej prosty internetowy system aukcyjny. W bazie prze-
chowywane są informacje o użytkownikach, aukcjach, kategoriach aukcji oraz ofertach. Po pomyślnej
weryfikacji systemu zostanie on zintegrowany z dotychczasową bazą użytkowników portalu. Wyma-
gania dla systemu:
•
każdy użytkownik może być wystawić na aukcję dowolną liczbę przedmiotów (czyli być właścicie-
lem dowolnej liczby aukcji), każda aukcja ma tylko jednego właściciela
•
każda aukcja ma dokładnie jedną kategorię, różne aukcje mogą mieć te same kategorie
•
każda kategoria może być związana z dokładnie jedną kategorią nadrzędną (taka kategoria na-
zywana jest wtedy kategorią podrzędną); kategorie nadrzędne (te, które nie mają własnych ka-
tegorii nadrzędnych) mogą mieć dowolną liczbę kategorii podrzędnych
•
do każdej aukcji można składać wiele ofert, każda oferta przyporządkowana jest tylko jednej au-
kcji
Dla uproszczenia zakładamy, że każda kategoria jest albo nadrzędna, albo podrzędna (nie występują
kategorie, które są jednocześnie nadrzędne i podrzędne). Aukcje powinny być powiązane
z kategoriami podrzędnymi.
Minimalne informacje przechowywane w bazie:
użytkownicy: login, imię, nazwisko, nr kontaktowy, nr gg albo innego komunikatora
aukcje: data i godzina rozpoczęcia, data i godzina zakończenia, nazwa przedmiotu, opis przedmiotu,
cena wywoławcza
kategoria: nazwa
oferty: wartość oferty, data i godzina
Widoki:
vw_aukcje_zakonczone – dla każdej zakończonej aukcji wypisuje wartość najwyższej oferty
vw_kategorie – dla każdej kategorii nadrzędnej wypisuje wszystkie kategorie podrzędne oraz liczbę
aukcji należących do tych kategorii
vw_aukcje_wg_kategorii – dla każdej kategorii wypisuje wszystkie aukcje oraz aktualną (tzn. najwyż-
szą) wartość zaoferowaną za dany przedmiot
vw_aukcje_uzytkownikow – dla każdego użytkownika wypisuje zaoferowane przez niego przedmioty
Wyzwalacz:
Kontrola czy użytkownik nie składa oferty pod swoją aukcją oraz czy aktualnie składana oferta jest
wyższa od poprzedniej oferty.
Minimalne dane:
•
przynajmniej 10 użytkowników
•
przynajmniej 20 aukcji (w tym przynajmniej 6 niezakończonych)
•
przynajmniej 3 kategorie nadrzędne i 7 kategorii podrzędnych
•
przynajmniej 3 oferty do każdej aukcji
3
3. Utworzenie bazy danych na potrzeby edukacji (z możliwo-
ścią wykorzystania w zdalnym nauczaniu)
Geografia
Nauczyciel geografii prowadzący szkolne kółko geograficzne „Ferdynand Magellan” marzy
o utworzeniu bazy danych, dzięki której jego wychowankowie mogliby łatwiej i przyjemniej opano-
wać informacje o otaczającym nas świecie. Nauczyciel chciałby uwzględnić informacje o państwach,
miastach, morzach i kontynentach. Pomóż mu zbudować bazę danych do gromadzenia takich właśnie
informacji, wiedząc że:
•
Jedno państwo leży na jednym lub dwóch kontynentach, a na każdym kontynencie może znaj-
dować sie wiele państw
•
Każde miasto znajduje się w jednym państwie, w danym państwie jest wiele miast
•
Każde morze oblewa jedno lub wiele państw, natomiast państwo może graniczyć z jednym,
z kilkoma lub z żadnym z mórz (uwzględnij długość granicy morskiej)
•
Każde państwo ma swój ustrój, wiele państw może mieć taki sam ustrój
Minimalne informacje przechowywane w bazie:
Państwa: nazwa państwa, powierzchnia państwa, liczba ludności,
Miasta: nazwa miasta, liczba mieszkańców, czy stolica?
Morza: nazwa morza
Kontynenty: nazwa kontynentu, powierzchnia kontynentu
Ustrój: nazwa, opis
Widoki:
vw_zaludnienie – dla każdego państwa wypisuje gęstość zaludnienia
vw_panstwa_wokol_morza – dla każdego z mórz wypisuje kraje z nim sąsiadujące
vw_panstwa_na_kontynentach – dla każdego kontynentu wypisuje państwa na nim się znajdujące
vw_panstwa_na_wielu_kontynentach – wypisuje nazwy państw, które leżą na więcej niż jednym
kontynencie
Wyzwalacz:
Uniemożliwienie przypisania do państwa więcej niż dwóch kontynentów. Kontrola czy każde państwo
posiada co najwyżej jedną stolicę.
Minimalne dane:
•
Przynajmniej 4 kontynenty
•
Przynajmniej 30 państw
•
Przynajmniej 50 miast
•
Przynajmniej 10 mórz
4
4. Utworzenie bazy danych do zarządzania zasobami ludzkimi
Drużyny piłkarskie
Twój przyjaciel, miłośnik futbolu, chciałby utworzyć bazę danych służącą do gromadzenia informacji
na temat rozgrywek piłkarskich. Ponieważ nie ma on zbyt dużego doświadczenia w projektowaniu
baz danych, poprosił Cię o pomoc. Obiecałeś, że utworzysz bazę danych umożliwiającą przechowy-
wanie informacji o drużynach, piłkarzach, meczach oraz „czerwonych kartkach”. Dodatkowo ustalili-
ście, że:
•
W jednej drużynie jest wielu piłkarzy, a jeden piłkarz gra dokładnie w jednej drużynie (nie intere-
suje nas, w jakich drużynach piłkarz grał wcześniej)
•
Jeden piłkarz gra w wielu meczach, a w jednym meczu gra wielu piłkarzy
•
W jednym meczu grają dwie drużyny (jedna jako drużyna gospodarzy, druga gości)
•
Piłkarz w danym meczu może dostać maksimum jedną „czerwoną kartkę”
Minimalne informacje przechowywane w bazie:
Piłkarze: imię, nazwisko, data urodzenia
Drużyny: nazwa, miasto
Mecze: data, godzina, drużyna gości, drużyna gospodarzy
Występ piłkarza w meczu: liczba strzelonych bramek, minuta otrzymania czerwonej kartki
Widoki:
vw_lista_strzelców – wypisuje piłkarzy i liczbę strzelonych przez nich bramek we wszystkich dotych-
czasowych meczach
vw_najbliższe_mecze – lista planowanych meczy w ciągu następnych 30 dni
vw_czerwone_kartki – wypisuje piłkarzy wraz liczbą otrzymanych czerwonych kartek
vw_bramki_na_wyjeździe - wypisuje listę drużyn wraz z liczbą zdobytych bramek w meczach wyjaz-
dowych
vw_klasyfikacja_drużynowa – wypisuje listę drużyn wraz z sumą zdobytych bramek
Wyzwalacz:
Kontrola czy piłkarz wystąpił w meczu swojej drużyny
Minimalne dane:
•
przynajmniej 8 drużyn
•
przynajmniej 40 piłkarzy
•
przynajmniej 10 meczów
5
5. Stworzenie bazy danych dotyczącej sieciowej struktury
organizacyjnej
Komunikacja miejska
Stanąłeś przed koniecznością pracowania bazy danych dla komunikacji autobusowej w Twoim mie-
ście. Ma on zawierać informacje o liniach autobusowych, przystankach i godzinach odjazdu z nich
autobusów. W bazie danych należy uwzględnić następujące zależności:
•
każda linia autobusowa (tzn. autobus o danym numerze) obsługuje kilka przystanków w ustalo-
nej kolejności, na każdym przystanku może zatrzymywać się kilka różnych autobusów
•
z każdą kombinacją linia autobusowa-przystanek związany jest (przynajmniej jeden) czas odjazdu
danego autobusu z tego przystanku
•
z każdym czasem odjazdu związany jest atrybut informujący, w jakie dni dany kurs się odbywa;
różne czasy odjazdów mogą mieć te same atrybuty (np. kursuje przez całe rok, nie kursuje w
niedzielę i święta itp.)
Minimalne informacje przechowywane w bazie:
Linie: numer linii, zakład obsługujący
Przystanki: nazwa, lokalizacja
Kolejność: numer opisujący, którym z kolei postojem jest dany przystanek na trasie danego autobusu
Czasy odjazdów: godzina odjazdu
Atrybuty odjazdów: skrót atrybutu, opis (np. CR – kursuje cały rok za wyjątkiem świąt – jakich?, NW –
nie kursuje w okresie wakacji itd.)
Widoki:
vw_rozkład – dla każdej linii i dla każdego przystanku wypisuje godziny odjazdów (wraz z atrybutami)
vw_przystanki_linii – dla każdej linii autobusowej wypisuje we właściwej kolejności przystanki przez
nią obsługiwane
vw_odjazdy_z_przystanków – dla każdego przystanku wypisuje liczbę autobusów, które z niego od-
jeżdżają w ciągu jednego dnia
Procedura składowana (MySQL lub MS SQL Server):
Wyzwalacz (SQLite):
Kontrola więzów integralności w bazie
Minimalne dane:
•
przynajmniej 5 linii autobusowych
•
przynajmniej 20 przystanków
•
przynajmniej 5 przystanków na trasie każdej linii
•
przynajmniej 4 czasy odjazdów dla każdego przystanku na każdej linii
6
6. Przygotowanie bazy danych wspomagającej proces
edukacyjny i weryfikację wiedzy
Testy kolokwialne
Znajomy wykładowca uniwersytecki poprosił cię o stworzenie systemu wspomagającego proces edu-
kacyjny i weryfikację wiedzy. Celem systemu jest automatyczne generowanie testów kolokwialnych.
W bazie przechowywane są informacje o przedmiotach, różnych zestawach testowych powiązanych z
przedmiotami, treści pytań oraz odpowiedzi (wraz z prawidłowymi rozwiązaniami) oraz odpowiedzi
udzielane przez studentów.
•
Z każdym przedmiotem powiązany jest przynajmniej jeden test; każdy test należy do jednego
przedmiotu.
•
Każdy test ma kilka pytań (między 10 a 20); każde pytanie może znaleźć się w kilku różnych te-
stach.
•
Każde pytanie związane jest dokładnie z jednym przedmiotem. Każdy przedmiot ma wiele pytań
(należy pamiętać, że żeby utworzyć test potrzebnych jest przynajmniej 10 pytań z danego
przedmiotu).
•
Z każdym testem związane są odpowiedzi, choć mogą się zdarzyć testy, na które jeszcze nikt nie
odpowiadał. Każda odpowiedź przypisana jest tylko i wyłącznie do jednego testu.
Dla uproszczenia przyjmujemy, że każde pytanie posiada cztery odpowiedzi, z których tylko jedna jest
prawidłowa.
Minimalne informacje przechowywane w bazie:
przedmioty: nazwa (np. statystyka, podstawy zarządzania itp.)
testy: oznaczenie testu (np. stat01)
pytania: treść pytania (wraz z odpowiedziami), odpowiedź prawidłowa (np. a, b itp.)
odpowiedzi: data, oznaczenie zdającego (np. numer albumu), numer pytania w teście (to samo pyta-
nie w różnych testach może mieć różny numer), udzielona odpowiedź
Widoki:
vw_testy – dla każdego testu wypisuje jego treść (tzn. wszystkie pytania)
vw_odpowiedzi – dla każdej kombinacji zdający+test wypisuje odpowiedzi udzielone przez zdającego
na dany test
vw_prawidlowe_odpowiedzi – dla każdego testu wypisuje prawidłowe odpowiedzi na poszczególne
pytania
vw_ile_razy – dla każdego testu wypisuje ile razy dany test zdawano
Wyzwalacz:
Uniemożliwienie przypisania pytania do testu, w wypadku gdy przedmiot pytania oraz przedmiot
testu są różne.
Minimalne dane:
•
przynajmniej 3 przedmioty
•
przynajmniej 5 testów
•
przynajmniej 40 różnych pytań
•
przynajmniej 6 odpowiedzi (przez „odpowiedź” rozumie się odpowiedź na cały test, tzn. na każ-
de pytanie z danego testu)
7
7.
Stworzenie bazy danych wspomagającej zarządzanie
procesami dydaktycznymi z wybranego przedmiotu
Międzyszkolne zawody sportowe
Celem projektu jest stworzenie, w ramach wspomagania procesów dydaktycznych w szkole podsta-
wowej, prostej bazy danych obsługującej lekkoatletyczne zawody międzyszkolne szkół podstawo-
wych. W bazie przechowywane są informacje o szkołach, kategoriach wiekowych, uczestnikach, kon-
kurencjach i wynikach uczestników w poszczególnych konkurencjach.
•
Każdy uczestnik należy do jednej szkoły, każda szkoła może wystawić wielu uczestników.
•
Każdy uczestnik może brać udział w jednej lub kilku konkurencjach. Każda konkurencja musi
mieć kilku uczestników (przynajmniej dwóch).
•
Każdy uczestnik należy do jednej kategorii wiekowej. Oczywiście do tej samej kategorii może
należeć kilku zawodników.
Dla uproszczenia przyjmujemy, że w każdej konkurencji może startować dowolna ilość uczestników.
Minimalne informacje przechowywane w bazie:
szkoły: nr szkoły, imię szkoły, adres (ulica, numer)
uczestnik: imię, nazwisko, data urodzenia
kategorie wiekowe: nazwa, minimalna data urodzenia, maksymalna data urodzenia
konkurencje: nazwa, opis, jednostka miary, sposób oceny (np. ‘max’ jeśli im wyższy wynik tym lepszy i
‘min’ jeśli im niższy wynik tym lepszy)
wyniki: rezultat uzyskany przez uczestnika w danej konkurencji
Widoki:
vw_uczestnicy - dla każdej szkoły wypisuje zawodników z danej szkoły
vw_rezultaty – dla każdej konkurencji i każdej kategorii wiekowej wypisuje rezultaty wszystkich
uczestników uporządkowane od najlepszego do najgorszego
*
vw_liczba_uczestników - dla każdej konkurencji i każdej kategorii wiekowej wypisuje liczbę uczestni-
ków danej konkurencji w danej kategorii
vw_liczba_konkurencji - dla każdego uczestnika wypisuje liczbę konkurencji, w których dany uczestnik
bierze udział
Procedura składowana (MySQL lub MS SQL Server):
Przypisywanie kategorii do uczestników na podstawie ich wieku
Wyzwalacz (SQLite):
Kontrola więzów integralności w bazie
Minimalne dane:
•
przynajmniej 3 szkoły
•
przynajmniej 20 uczestników
•
przynajmniej 5 konkurencji
•
2 lub 3 kategorie wiekowe
•
przynajmniej 50 wyników
*
dla każdej konkurencji można stworzyć osobny widok
8
8.
Stworzenie tematycznej (dziedzinowej) bazy wiedzy
Konferencje
Wyobraź sobie, że pracujesz w firmie zajmującej się organizowaniem imprez masowych. Twoim za-
daniem jest stworzenie niewielkiego systemu wspomagającego obsługę organizacji konferencji.
W bazie przechowywane są informacje o organizatorach, konferencjach, uczestnikach, zgłoszeniach,
branżach.
•
Każda firma może organizować wiele konferencji, ale każda konferencja jest organizowana tylko
przez jedną firmę.
•
Każdy konferencja ma wielu uczestników, każdy uczestnik może brać udział w wielu konferen-
cjach.
•
Każda firma należy do jednej branży, do każdej branży może należeć wiele firm.
Dla uproszczenia przyjmujemy, że wszystkie konferencje są jednodniowe.
Minimalne informacje przechowywane w bazie:
branże: rodzaj (np. budownicza, chemiczna)
firmy: nazwa, adres, telefon, nazwisko przedstawiciela
konferencje: nazwa, data, godzina, koszt, cena, czy zakończona?
uczestnicy: imię i nazwisko, telefon, reprezentowana firma
zgłoszenia: data zgłoszenia, czy zapłacone?
Widoki:
vw_konferencje_wg_branz – dla każdej branży wypisuje wszystkie konferencje w systemie uporząd-
kowane wg daty
vw_liczba_uczestnikow – dla każdej konferencji wypisuje liczbę uczestników (z podziałem na tych,
którzy już zapłacili oraz tych, którzy nie zapłacili)
vw_konferencje_firmy – dla każdej firmy wypisuje liczbę zorganizowanych przez nią konferencji
vw_konferencje_bilans – dla każdej konferencji wypisuje jej koszt, przychód oraz bilans
UWAGA. Wszystkie zapytania powinny mieć możliwość zawężenia wyświetlanych wyników do wy-
branego okresu (tzn. widoki powinny zawierać datę konferencji).
Wyzwalacz:
W momencie wstawienia do bazy informacji o zakończeniu konferencji, do osobnej tabeli wstawiany
jest rekord z podsumowaniem konferencji: identyfikator konferencji, data, koszt, przychód
(cena * liczba opłaconych zgłoszeń), bilans (koszt – przychód).
Minimalne dane:
•
przynajmniej 3 branże
•
przynajmniej 7 firm
•
przynajmniej 10 konferencji
•
przynajmniej 30 uczestników
•
przynajmniej 100 zgłoszeń
9
9. Zarządzanie projektami
Celem projektu jest stworzenie niewielkiego systemu wspomagającego zarządzanie projektami reali-
zowanymi w pewnej firmie. W bazie przechowywane są informacje o projektach, osobach, zespołach,
etapach projektów, zleceniodawcach.
•
Każdy projekt posiada jednego zleceniodawcę (osobę prawną). Każdy zleceniodawca może zlecić
kilka projektów.
•
Każda osoba może uczestniczyć w dowolnej ilości projektów, a każdy projekt może mieć dowol-
ną ilość uczestników. Kombinacje uczestników i projektów tworzą zespoły. Każdy projekt ma
jednego szefa, przy czym ta sama osoba może być szefem tylko jednego projektu (nawet jeśli
uczestniczy w kilku projektach).
•
Każdy projekt ma kilka etapów, dany etap należy tylko do jednego projektu. W trakcie realizacji
projektu kolejne etapy odznaczane są jako „zakończone”.
Minimalne informacje przechowywane w bazie:
zleceniodawcy: nazwa firmy, adres firmy, telefon, nazwisko przedstawiciela
projekty: nazwa projektu, koszt projektu, opis projektu, data zlecenia
osoby: imię, nazwisko, data urodzenia
zespoły: kto kierownikiem?
etapy projektów: nazwa, opis, data rozpoczęcia, czy zakończony?
Widoki:
vw_zespoly – dla każdego projektu (nazwy projektu) wypisuje osoby, które go realizują
vw_liczba_zespolow – dla każdej osoby wypisuje liczbę projektów, w których uczestniczy
vw_firma_koszt – dla każdej firmy wypisuje łączny koszt projektów zleconych przez tę firmę
vw_etapy_projektów – dla każdego projektu wypisuje etapy tego projektu wraz z zaznaczeniem, któ-
re z nich są już zakończone
Wyzwalacze:
Kontrola czy etap późniejszy nie został zaznaczony jako zakończony przed etapem wcześniejszym.
Kontrola czy dana osoba jest kierownikiem co najwyżej jednego zespołu
Minimalne dane:
•
przynajmniej 5 firm
•
przynajmniej 8 projektów
•
przynajmniej 12 osób
•
przynajmniej 30 etapów
•
przynajmniej 25 członków zespołów
10
10. Stworzenie bazy danych wspomagającej proces zarządza-
nia informacją przestrzenną
Szlaki
górskie
Celem systemu jest przechowywanie i udostępnianie informacji o trasach turystycznych w polskich
górach. W bazie znajdują się informacje o schroniskach, punktach docelowych (atrakcjach), szlakach,
pasmach górskich, rodzajach atrakcji.
•
Każde schronisko łączy się z wieloma punktami docelowymi, do każdego punktu można dojść
z wielu schronisk. Kombinacje schronisk i punktów tworzą szlaki.
•
Każdy punkt należy do jednego pasma górskiego, każde pasmo może mieć wiele punktów.
•
Każdy punkt ma dokładnie jeden określony rodzaj (kategorię), np. szczyt, kotlina, dolina,
staw, przełęcz itp.
Minimalne informacje przechowywane w bazie:
schroniska: nazwa, cena noclegu, ilość miejsc, czy jest darmowy wrzątek, opis
punkty docelowe: nazwa, wysokość nad poziomem morza, atrakcyjność (przyjąć skalę liczbową), czy
zamknięty?
szlaki: kolor, trudność (przyjąć skalę liczbową), czas przejścia do punktu docelowego, czas przejścia
od punktu docelowego, czy zamknięty?
pasma górskie: nazwa
rodzaje punktów: kategoria (np. szczyt, kotlina itp.)
Widoki:
vw_szlaki – dla każdego schroniska wypisuje wszystkie szlaki, tzn. punkty docelowe, ich atrakcyjność
oraz czasy przejścia do danego punktu i z powrotem
vw_trudnosc – dla każdego schroniska wypisuje średnią trudność wszystkich szlaków prowadzących z
danego schroniska
vw_atrakcyjnosc – dla każdego schroniska wypisuje średnią atrakcyjność wszystkich punktów doce-
lowych, do których można dojść z tego schroniska
vw_szukaj_szlaku – dla każdego punktu docelowego wypisuje wszystkie schroniska, z których można
dojść do tego punktu oraz czasy przejścia
Wyzwalacz:
Aktualizacja szlaków w przypadku zamknięcia punktu docelowego.
Minimalne dane:
•
przynajmniej 3 pasma górskie
•
przynajmniej 10 schronisk
•
przynajmniej 20 atrakcji
•
przynajmniej 50 szlaków
•
przynajmniej 4 rodzaje punktów docelowych