"long_description":"bazy przechowującej zamówienia sklepu internetowego. Baza śledzić ma konta użytkowników i złożone przez nich zamówienia. Pamiętaj, że każde zamówienie składa się z możliwie wielu pozycji, oraz informacji rozliczeniowych, transportowych (wraz z płatnością za transport).",
"min_tables":"3",
"min_fields":"5"
},
{
"long_description":"bazy przechowującej wizyty pacjentów w przychodni POZ. Baza ma śledzić pacjentów, lekarzy, recepcjonistek oraz umówione terminy wizyt. Pamiętaj że to recepcjonistka umawia wizytę konkretnego pacjenta do konkretnego lekarza na konkretny termin."
"min_tables":"4",
"min_fields":"4"
},
{
"long_desciption":"bazy rejestrującej rezerwację miejsc w kinach. Baza ma śledzić sale kinowe, seanse oraz rezerwacje miejsc",
"min_tables":"3",
"min_fields":"5"
},
{
"long_description":"bazy rejestrującej wypożyczenia książek. Baza ma śledzić książki, czytelników oraz wypożyczenia. Czym różni się książka jako pozycja wydawnicza od książki jako fizycznego bytu?",
@@ -13,6 +13,11 @@ Rzeczy oznaczone tak, jak poniżej, dotyczą tego, co masz zawrzeć w sprawozdan
Zapisz swoje imię, nazwisko, adres e-mail, kierunek i rok studiów
oraz grupę laboratoryjną i numer albumu.
Wpisując się na liście, wpisuj przy swoim nazwisku również liczbę porządkową. Określi
ona wariant instrukcji, z której będziesz korzystać. Podaj ją przy sprawozdaniu.
Ten wariant ma numer $lp$.
Podaj również numer zajęć laboratoryjnych (nr 4).
Mogą być to też pytania, na które w sprawozdaniu udzielisz odpowiedzi. Możesz pomagać
...
...
@@ -22,7 +27,8 @@ sobie wyszukiwarką internetową, oraz zabrać głos w dyskusji, jeśli się jak
Relacyjne bazy danych (ang. _relational database management systems_, RDBMS, może bardziej poprawnie
_system zarządzania relacyjną bazą danych_), to pewien pomysł na przechowywanie danych. Pomysł ten polega
na rozbiciu naszego świata w szereg takich _obiektów_, które będzie można wygodnie umieścić w _tabelach_.
na rozbiciu naszego świata w szereg takich _obiektów_, _bytów_ (w żargonie bazodanowców **encji**,
od ang. _entity_ czyli w zasadzie _byt_), które będzie można wygodnie umieścić w _tabelach_.
Obiekt taki charakteryzuje się tym, że ma swoją pewną _tożsamość_, po której to tożsamości będziemy
go potem identyfikować i po tejże się do niego odwoływać.
...
...
@@ -114,6 +120,10 @@ a ktoś w piśmie wspomniał o dowodzie o określonym identyfikatorze, a w międ
to teraz jego papier mógłby się odwoływać do *istniejącego dowodu w innej sprawie*, a nie po prostu do *niczego*.
Byłoby to katastrofalne w skutkach, a błąd programisty mógłby kosztować kogoś pozbawienie wolności.
Istotne w kluczu podstawowy jest to, że w danej tabeli istnieć może tylko jeden rekord o tym kluczu. Nie
jest możliwe wstawienie dwóch - mamy więc podstawowy system zapobiegający sytuacjom niemożliwym, na przykład
istnieniu dwóch _różnych_ osób o identycznym PESEL-u.
Kolumnę, która stanowi klucz podstawowy w innej tabeli - czyli odnosi się do innej tabeli - nazywamy **kluczem obcym**
(ang. _foreign key_). W naszej tabeli _Obywatel_ mamy dwa klucze obce - oba odnoszą się do tabeli
_Adres. Ponieważ wielu obywatelom przypisać można jeden adres, istnieje więc relacja **wiele-do-jednego**
...
...
@@ -136,9 +146,66 @@ po odesłaniu ostatniej instrukcji.
Projektując bazę danych, dobrze jest ją sobie narysować. Służy do tego [diagram związków encji](https://pl.wikipedia.org/wiki/Diagram_zwi%C4%85zk%C3%B3w_encji)
lub inaczej ERD. Na egzaminie najpewniej będzie (jeśli będzie) jej wariant w postaci [notacji kruczej stopki](https://pl.wikipedia.org/wiki/Diagram_zwi%C4%85zk%C3%B3w_encji).
Użyj Google i naucz się rysować diagramy ERD w maksymalnie 15 minut.
Narysuj diagram ERD dla tabel Obywatel i Adres.
Jeśli chcemy zamodelować relację "jedna encja posiada inne" najlepiej to zrobić właśnie na dwóch tabelach.
Gdybyśmy chcieli stworzyć tabelę pt. "czy obywatel rozliczył podatek", możemy zrobić tabelę
_CzyRozliczyłPodatek_, która wyglądać będzie mniej więcej tak:
* PESEL obywatela
* Rok fiskalny
* Czy rozliczone?
Przy czym pola PESEL i rok fiskalny stanowić będą klucz podstawowy, zaś sam PESEL - klucz obcy. Jest to
dobry wybór na tożsamość tego pola, bo przecież jedna osoba rozliczyć za dany rok może się tylko raz (
albo tak myślimy). Jak tu widzimy, klucz podstawowy może się również składać z klucza obcego - bo czemu nie.
Wystąpi również relacja **jeden-do-wielu** w stosunku Obywatel - CzyRozliczyłPodatek, bo jedna osoba
może (a nawet musi) się rozliczać wielokrotnie - raz z każdego roku.
# Zadanie laboratoryjne
Na dzisiejszym laboratorium przygotujemy schemat bazy danych do pewnego zastosowania.
Każda osoba ma inne zadanie. Twoje zadanie to przygotować schemat $long_description$.
Minimalnie użyjesz $min_tables$ tabel, choć jeśli jesteś w stanie znormalizować ten schemat bardziej,
to będzie to mile widziane. Każda z tabel ma zawierać minimalnie $min_fields$ pól. Nie wolno tworzyć
identyfikatorów automatycznie generowanych, jeśli użyć można istniejącego w rzeczywistości atrybutu
(np. [EAN](https://pl.wikipedia.org/wiki/EAN)).
1. Zastanów się, co w zasadzie śledzisz. Gdybyś prowadził kartotekę papierową z tymi informacjami, to jak poukładałbyś szufladki?
2. Jakie _byty_ śledzisz w swojej bazie danych?
Krótki opis zagadnienia bazy oraz odpowiedzi na powyższe pytania zapisz w sprawozdaniu.
3. Rozplanuj bazę danych, każdą tabelę z osobna i opisz je słowami.
4. Narysuj jej diagram ERD
Plan bazy i tabel umieść w sprawozdaniu wraz z diagramem ERD.
Diagram ERD koniecznie w postaci zdjęcia narysowanego odręcznie na papierze schematu.
Pamiętaj, aby schematem tabeli uniemożliwić sytacje niemożliwe (np. dwie osoby mają rezerwację na
identyczne miejsca w tym samym seansie kinowym).
**Zanim zakończysz pracę, skonsultuj swoje wyniki z prowadzącym!**
# Wyślij sprawozdanie
_Fast fertig_! Zapisz i wyślij swoje sprawozdanie. Jeśli masz problem z wklejeniem zdjęcia zrobionego
z telefonu to wyślij sprawozdanie później. Jeśli nie masz takiego telefonu, wykorzystaj kolegę.
Wyślij je na adres sprawozdania@henrietta.com.pl.
W tytule umieść imię, nazwisko i numer zadania.
Załącz sprawozdanie, lub wklej je w treść maila.
Pamiętaj, uczestniczysz w zajęciach LABORATORYJNYCH,
więc nie pisz "Projekt Adam Nowak".
Podejście takie będzie aktywnie penalizowane.
Teraz idź korzystać z dobrej pogody, bo na weekendzie ma kropić.