# Ćwiczenia z baz danych 20.05.2020, grupa PWi
#### Zadanie
Taksówki wodne. Na tropikalnym archipelagu podstawowym środkiem komunikacji pomiędzy wyspami są łodzie - taksówki. Firma transportowa, która nimi zarządza wyznaczyła kilka stałych tras, po których łodzie kursują według rozkładu. Na kursową łódź można zamówić bilety z wyprzedzeniem lub przyjść na przystań i liczyć, że będzie miejsce. Dodatkowo można wynajmować rejsy prywatnie na ustalone trasy. Można także przeglądać listę otwartych rejsów prywatnych i próbować dołączyć, dzieląc się kosztami.
## Zbiory encji
- Trasy - ustalony ciąg przystanków
- id
- początek
- koniec
- czas trwania
- liczba przystanków
- spis przystanków (kody wg wbaz administracji państwowej JSON/ARRAY)
- Kursy - konkretna godzina i dzień o której jest wykonywana trasa
- id trasy
- data
- id łodzi
- wolne miejsca
- typ kursu (stały/prywatny/dzielony)
- Łodzie - konkretna taksówka wykonująca kurs
- id
- pojemność
- dostępność : boolean NOT NULL
- Bilet
- id
- cena
- liczba miejsc
- id kursu
- id pasażera
- Pasażer
- id
- imie
### Związki
Bilet -> kurs
Bilet -> Pasażer
Kurs -> łódz
Kurs -> Trasa
#### Taksówki wodne
https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf
```graphviz digraph summary
digraph ER{
nodesep=1.0
label="Diagram E-R"
edge[arrowhead=no]
node[shape=ellipse];
# sets of entities
Wyspa[shape=box];
Trasa[shape=box];
Kurs[shape=box];
Łódź[shape=box];
Przystanek[shape=box];
# attributes of Łódź
Łódź -> ID
# relationships
JestPrzystankiem[shape=diamond];
JestPrzystankiem->Wyspa
JestPrzystankiem->Trasa
{rank=same; Book, Customer, Loan}
}
```
#### Specyfikacja
- Kamila
- Paulina
- Bartosz
#### Implementacja
- Wszyscy pozostali
#### Przykładowy diagram E-R
https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf
```graphviz digraph summary
digraph ER{
nodesep=1.0
label="Diagram E-R"
edge[arrowhead=no]
node[shape=ellipse];
# sets of entities
Book[shape=box];
Customer[shape=box];
Author[shape=box];
# attributes of Book
BId[label=<<u>ID</u>>]
BTitle[label="Title \n text\n NOT NULL"]
BId->Book
BTitle->Book
# attributes of Customer
Name
Customer -> Name
CId[label=<<u>ID</u>>]
Customer -> CId
AmountDue[style=dashed label="Amount due"]
Customer -> AmountDue
# attributes of Author
ID -> Author
first_name -> Author
last_name -> Author
# comment attached somewhere
Comment[shape=plaintext label="aggregated\n from loans"]
AmountDue -> Comment[style=invis]
# relationships
Loan[shape=diamond];
LAmount[label="Amount \n Decimal(5,2)"]
Loan->LAmount
# edges
Loan->Book;
Customer->Loan[dir=back,penwidth=3.0,arrowhead=normal];
# relationships
Has[shape=diamond];
# edges
Author->Has[dir=back, arrowhead=normal];
Has -> Book[penwidth=3.0];
# tak samo wysoko:
{rank=same; Book, Customer, Loan}
}
```