Przykład zrealizowania pierwszej jego części

Transkrypt

Przykład zrealizowania pierwszej jego części
D
ŁA
PR
ZY
K
Prosta uczelnia
(przykładowy projekt)
Autor: Jan Kowalski
nr indeksu: 123456
Opis problemu
Projekt ten ma na celu stworzenie systemu do przechowywania i obróbki danych o wynikach egzaminacyjnych około 2345 studentów z 234 przedmiotów proponowanych na pięciu wydziałach uczelni X. Ze
względu na interdyscyplinarny charakter studiów na uczelni X każdy student ma możliwość studiowania i
bycia egzaminowanym z przedmiotów oferowanych przez różne wydziały. W związku z tym zaistniała konieczność stworzenia opisywanego systemu, gdyż powstałe do tej pory rozwiązania nie spełniają wymagań
D
uczelni X.
Projektowany system będzie umożliwiać dodawanie i modyfikowanie istniejących danych przy pomocy
przyjaznej użytkownikowi aplikacji klienckiej działającej w środowisku wielostanowiskowym (maksymalnie
ŁA
dwa stanowiska). Dodatkowo w systemie zrealizowane będą pewne mechanizmy raportowania: statystyki
wyników studentów i inne bardzo potrzebne do działania uczelni raporty.
Przy realizacji projektu wykorzystany zostanie serwer SQL Microsoft SQL Server Express Edition 2005,
a aplikacja kliencka oparta będzie na architekturze Microsoft .NET Framework 2.0.
PR
ZY
K
(i tak dalej . . . ale nie za dużo . . . )
Diagram ER
imie
adres
STUDENT
nr_indeksu
N
punkty
EGZAMINY
ocena
data
N
nazwa
WYDZ_PRZED
1
adres
symbol
PRZEDMIOT
N
D
nazwisko
WYDZIAL
id
ŁA
nazwa
Typ jednostki STUDENT(nr indeksu, imie, nazwisko, adres):
• nr indeksu – atrybut kluczowy (klucz), łańcuch znakowy długości sześciu znaków 0-9,
• imie – łańcuch znakowy długości 30 znaków, nie może zawierać wartości NULL,
ZY
K
• nazwisko – łańcuch znakowy długości 30 znaków, nie może zawierać wartości NULL,
• adres – łańcuch znakowy długości 30 znaków, może zawierać wartość NULL.
Typ jednostki PRZEDMIOT(symbol, nazwa, punkty):
• symbol – atrybut kluczowy (klucz), łańcuch znakowy długości trzech znaków A-Z,
• nazwa – łańcuch znakowy długości 30 znaków, nie może zawierać wartości NULL,
• punkty – liczba całkowita od 0 do 8, nie może zawierać wartości NULL.
Typ jednostki WYDZIAL(id, nazwa, adres):
• id – atrybut kluczowy (klucz), unikatowy identyfikator typu uniqueidentifier,
• nazwa – łańcuch znakowy długości 30 znaków, nie może zawierać wartości NULL,
PR
• adres – łańcuch znakowy długości 30 znaków, może zawierać wartość NULL.
Typy zdefiniowanych związków:
• EGZAMIN(ocena, data) – (jasne co reprezentuje ten związek; jeśli nie tu można coś napisać . . . ):
– ocena – liczba rzeczywista ze zbioru {2, 3, 3.5, 4, 4.5, 5}, może zawierać wartość NULL,
– data – może zawierać wartość NULL.
• WYDZ PRZED – (jasne co reprezentuje ten związek; jeśli nie tu można coś napisać . . . ):
– brak własnych atrybutów.
Reprezentacja tabelaryczna
1. STUDENCI(nr indeksu, imie, nazwisko, adres),
2. PRZEDMIOTY(symbol, nazwa, punkty, id wydzialu), (koniecznie zaznaczamy klucze obce!)
3. WYDZIALY(id, nazwa, adres),
D
4. EGZAMINY(nr indeksu, symbol, ocena, data)
Ad. 1.
Kluczem głównym jest: nr indeksu.
Z założenia każdy nowy student otrzymuje kolejny nie zajęty numer indeksu. Jeżeli z niewiadomych przy-
ŁA
czyn adres studenta nie jest znany w celu umożliwienia mu odebrania ewentualnej korespondencji adres
ustawiany jest na domyślną wartość „skrzynka w rektoracie”. W tabeli STUDENCI istnieje predefiniowany student o imieniu Jan i nazwisku Kowalski oraz numerze indeksu 000000 – student ten będzie
automatycznie zapisywany na egzamin z każdego nowo utworzonego przedmiotu (jest to sztuczne założenie
pozwalające zapewnić zgodność modelu ER z implementacją w momencie tworzenia nowego przedmiotu;
można to oczywiście rozwiązać inaczej (patrz poniżej przykład tabeli WYDZIALY) jednak trzeba być
ZY
K
świadomym tej możliwej rozbieżności). Student o indeksie 000000 nie będzie brany pod uwagę przy generowaniu jakichkolwiek raportów!
Ad. 2.
Kluczem głównym jest: symbol.
Kluczem obcym jest: id wydzialu odpowiadający polu id w tabeli WYDZIALY.
Z założenia każdy nowo utworzony przedmiot ma co najmniej dwa punkty jeśli nie zostanie to inaczej określone przy jego dodawaniu do bazy. Domyślnie na egzamin z każdego przedmiotu jest zapisany co najmniej
jeden student (w najgorszym razie jest to student 000000). Nie zakładamy, żadnych odstępstw od określo-
PR
nego w modelu ER całkowitego uczestnictwa jednostki PRZEDMIOT w związku WYDZ PRZED, to
znaczy nie dopuszczamy takiej sytuacji, aby przedmiot istniał bez wydziału!
Ad. 3.
Kluczem głównym jest: id.
Zakładamy odstępstwo od modelu ER w tym sensie, że nowo utworzony wydział nie musi z początku
oferować jakichkolwiek przedmiotów. Wydział taki nie będzie brany jednak pod uwagę w jakichkolwiek
zestawieniach danych z bazy.
Ad. 4.
Kluczem głównym jest para: symbol, nr indeksu.
Kluczami obcymi są: symbol odpowiadający polu symbol w tabeli PRZEDMIOTY oraz nr indeksu
odpowiadający polu nr indeksu w tabeli STUDENCI.
Z założenia każdy student zapisany na egzamin z danego przedmiotu ma domyślnie w polu ocena wpisaną
wartość NULLco oznacza, że nie zdawał jeszcze egzaminu, jak również w polu data znajduje się wartość
PR
ZY
K
ŁA
D
NULLdo czasu przystąpienia do egzaminu.
Mechanizmy bazy danych
W tym miejscu należy napisać jakie mechanizmy miałby się znaleźć w projektowanej bazie, na przykład:
Dla każdej tabeli w bazie danych zostanie utworzona tabela jej odpowiadająca o nazwie {nazwa tabeli} historyczna, do której kopiowane będą usuwane dane z tabeli {nazwa tabeli}; każda taka tabela bedzie
zawierała dodatkowo pole z datą wykonanai operacji wstawienia danej. Powstałe kopie danych nie będą
D
powiązane ze sobą zaprojektowanymi więzami integralności (klucze główne, klucze obce, itd.). Sam mechanizm przenoszenia danych będzie zrealizowany przy pomocy właściwej procedury samowyzwalanej (trigger
typu FORDELETE).
PR
ZY
K
ranckich mechanizmów)
ŁA
(i tym podobne . . . co nie znaczy, że podczas implementacji projektu nie można dodać kolejnych baje-