Bazy Danych - poniedziałek, 15.00 - 18.00 - zadania zestaw 07.

Diagramy ER.

Szybka pomoc w notacji:

Wykonaj poniższe polecenia (w grupach projektowych)

  1. Zaproponujcie 5 funkcjonalności dla swojego tematu projektu. Opis funkcjonalności powinien być zdaniem typu 'System umozliwia...' lub 'System pozwala na...'. Zdania powinny być rozbudowane, aby łatwo można było zidentyfikować elementy (entities) biorące udział w relacjach (relationships).
    Przykład:
    1. System pozwala użytkownikom wyszukiwać i zamawiać bilety na koncerty. Kryteriami wyszukiwania są data, cena, rodzaj muzyki, występujący artysta. Przy zamawianiu biletu użytkownik podaje swoję imię, nazwisko, datę urodzenia i e-mail a system generuje zamówienie biletu z unikalnym identyfikatorem i wiąże je z danym koncertem. System przekazuje przekazuje wygenerowany numer użytkownikowi. System dba aby nie przekroczyć maksymalnej ilości dostępnych biletów.
    2. System pozwala dodawać i modyfikować (CRUD) nowe koncerty. Informacje o koncercie to data, czas trwania, miejsce, ilość dostępnych miejsc, cena biletu w przedsprzedaży, cena biletu w dniu koncertu, opis koncertu. Z koncertem powiązani są artyści którzy biorą w nim udział. Po stworzeniu koncert musi być aktywowany, aby mozna było zamówić bilet w systemie. Po aktywowaniu koncerty nie ma mozliwości usunięcia koncertu. W przypadku modyfikacji aktywnego koncertu wszyscy użytkownicy muszą zostać powiadomieni.
    3. System umożliwia CRUD artystów. Artysta posiada nazwę, opis, typ muzyki, listę zdjęć. Artysty nie można usunąć jeśli istnieją koncerty z nim powiązane.
    4. itd...

  2. W zaproponowanym opisie systemu zidentyfikuj encje, atrybuty, relacje. Zaprojektuj diagram ER, który reprezentuje model dla Twojego systemu. Zastanów się nad opisem atrybutów (typ danych, dozwolone wartości) oraz cechami relacji (stopień, karynalność, istnienie - obowiązkowość).

  3. Jeśli diagram wydaje się niepełny, brakuje informacji o kardynalności, obowiązkowości, atrybutach, dozwolonych wartościach - wróć do opisu funkcjonalności i uszczegółów go, tak aby zawierał potrzebne informacje oraz zmodyfikuj diagramy ER.

  4. Stwórz model wdrożenia tego wycinka projektu w formie bazy danych - stwórz zapytania SqL definiujące schemat relacyjnej bazy danych. Pamiętaj o warunkach ograniczeń i o więzach integralności. Dla bardziej skomplikowanych więzów możesz użyć triggerów.

  5. Zaimplementuj logikę zaproponowanych funkcjonalności systemu jako procedury/funkcje składowane.

  6. Przeprowadź test modelu - zaproponuj kilka (najbardziej prawdopodobnych) scenariuszy użycia*, oraz spróbuj je zrealizować za pomocą stworzonych funkcji/procedur. Jeśli udało się wszystkie zadania zrealizować bez pomocy zapytań DML (SELECT, INSERT, itp), oraz stan bazy danych po wykonaniu wszystkich operacji jest spójny (żadne narzucone ograniczenia nie są naruszone) to najprawdopodobniej model i jego realizacja spełniają założenia systemu. Gratulacje!

    Przykład scenariusz użycia 1:
    Administrator chce dodać nowy koncert zespołu Transformers, odbywający się za dwa tygodnie w Katowickim Spodku, ilośc biletów jest ograniczona przez 500, cena to 200zł, w dniu koncertu 300zł. Użytkownik wyszukuje zespoł o nazwie Metallica i zauważa że zespołu nie ma jeszcze w bazie danych dlatego dodaje nowy zespół. Dodaje koncert i dodaje artystę. Uzytkownik przypomina sobie, że przed głównym artystą pojawią się jeszcze dwa zespoły: Kikimora i Dzieci z Bulerbyn. Użytkownik dodaje nowe zespoły i dodaje je do koncertu. Uzytkownik aktywuje koncert, aby pozwolić na zamawianie biletów.

    Przykład scenariusz użycia 2:
    Użytkownik wyszukuje koncerty odbywające się od dzisiaj do końca roku. Zauważa, że na liście jest koncert zespołu Transformers. Uzytkownik sprawdza ilośc dostępnych biletów po czym upewniwszy się że jest na tyle wolnych miejsc wybiera zamówienie biletu, podaje niezbędne dane i zapisuje otrzymany numer biletu.

* czasem scenariusze uzycia proponuje się podczas tworzenia opisu funkcjonalności systemu lub nawet jako alternatywę dla tego opisu. Jest to bardziej zgodne z metodologią TDD (Test Driven Development).

Do poprzednich ćwiczeń (dla osób, które skończą pracę nad powyższymi ćwiczeniami)

  1. Stwórz funkcję, która zwraca pierwiastki równania kwadratowego danego przez współczynniki a, b, c będące liczbami rzeczywistymi. Pierwiastki mogą być zwracane jako parametry typu OUTPUT albo funkcja może zwracać dane tabelaryczne (jedna kolumna, typu rzeczywistego).

  2. Stwórz dwie tabele: rownania(id int, a float, b float, float c) oraz rozwiazania(idRownania, x). Wstaw do tabeli rownania wszystkie mozliwe rownania o wspolczynnikach z przedziału 0 .. 10, z krokiem 0,1. Do tabeli rozwiazania wstaw wszystkie rozwiązania wszystkich stworzonych rownań (jednym zapytaniem typu INSERT INTO).