---
# System prepended metadata

title: 'Ćwiczenia z baz danych 20.05.2020, grupa PWi'

---

# Ć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}
}
```

