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-