---
title: Cruise me - Margus Arm 242871IADB
config:
layout: elk
---
erDiagram
direction TB
%% === KASUTAJATE HALDUSE GRUPP ===
FIRMA:::kasutajad {
int firma_id PK
varchar nimi
varchar reg_kood
varchar aadress
varchar kontakt_info
boolean on_laeva_omanik
}
FYUUSILINE_ISIK:::kasutajad {
int isik_id PK
varchar eesnimi
varchar perekonnanimi
varchar isikukood
varchar telefon
varchar email
date synniaeg
}
KASUTAJA:::kasutajad {
int kasutaja_id PK
int isik_id FK
int firma_id FK
varchar kasutajanimi
varchar parool_hash
varchar kasutaja_tyyp
boolean on_aktiivne
datetime loodud
}
%% === LAEVADE GRUPP ===
RUUMI_TYYP:::laevad {
int ruumi_tyyp_id PK
varchar nimetus
varchar kategooria
varchar kirjeldus
}
LAEV:::laevad {
int laev_id PK
int omanik_firma_id FK
varchar nimi
varchar reg_number
int max_reisijaid
varchar kirjeldus
boolean on_aktiivne
}
RUUM:::laevad {
int ruum_id PK
int laev_id FK
int ruumi_tyyp_id FK
varchar ruumi_number
varchar nimetus
int mahutavus
varchar kirjeldus
}
%% === KRUIISIDE JA MARSRUUTIDE GRUPP ===
SADAM:::kruiis {
int sadam_id PK
varchar nimi
varchar riik
varchar linn
varchar koordinaadid
}
KRUIIS:::kruiis {
int kruiis_id PK
int laev_id FK
varchar nimetus
varchar kirjeldus
int kestus_paevades
boolean on_aktiivne
}
SADAMATE_JARJEKORD:::kruiis {
int jarjekord_id PK
int kruiis_id FK
int sadam_id FK
int jarjekorranumber
int viibimise_tunnid
}
REIS:::kruiis {
int reis_id PK
int kruiis_id FK
datetime algus_aeg
datetime lopp_aeg
varchar staatus
decimal baazhind
}
REISI_SADAM_AJAKAVA:::kruiis {
int ajakava_id PK
int reis_id FK
int sadam_id FK
datetime saabumine
datetime lahkumine
varchar staatus
}
%% === TEENUSTE GRUPP ===
TEENUS:::teenus {
int teenus_id PK
varchar nimetus
varchar kirjeldus
varchar kategooria
boolean saab_ette_broneerida
boolean saab_laeval_osta
}
KRUIISI_TEENUS:::teenus {
int kruiisi_teenus_id PK
int kruiis_id FK
int teenus_id FK
decimal hind
boolean on_saadaval
int max_kogus
}
%% === BRONEERINGUTE GRUPP ===
BRONEERING:::broneering {
int broneering_id PK
int ostja_kasutaja_id FK
int reis_id FK
datetime broneeritud
varchar staatus
decimal kogusumma
varchar maksete_staatus
}
BRONEERINGU_REISIJA:::broneering {
int broneeringu_reisija_id PK
int broneering_id FK
int reisija_isik_id FK
varchar staatus
datetime registreerimise_aeg
boolean on_kohale_tulnud
}
KAJUTI_BRONEERING:::broneering {
int kajuti_broneering_id PK
int broneering_id FK
int ruum_id FK
int reisijate_arv
decimal hind
}
TEENUSE_BRONEERING:::broneering {
int teenuse_broneering_id PK
int broneering_id FK
int kruiisi_teenus_id FK
int kogus
decimal yhiku_hind
datetime broneeritud
varchar staatus
}
%% === ARVELDUSE GRUPP ===
ARVE:::arveldus {
int arve_id PK
int broneering_id FK
varchar arve_number
date arve_kuupaev
decimal summa
varchar tyyp
varchar staatus
date taehtaeg
}
MAKSE:::arveldus {
int makse_id PK
int arve_id FK
decimal summa
date makse_kuupaev
varchar makseviis
varchar viitenumber
varchar staatus
}
%% === SEOSED GRUPPIDE KAUPA ===
%% Kasutajahaldus
FIRMA ||--o{ KASUTAJA : "omab"
FYUUSILINE_ISIK ||--o{ KASUTAJA : "saab_olla"
%% Laevad ja struktuur
FIRMA ||--o{ LAEV : "omab"
LAEV ||--o{ RUUM : "sisaldab"
RUUMI_TYYP ||--o{ RUUM : "maarab_tyybi"
%% Kruiisid ja marsruudid
LAEV ||--o{ KRUIIS : "pakub"
KRUIIS ||--o{ REIS : "toimub_kui"
KRUIIS ||--o{ SADAMATE_JARJEKORD : "labib"
SADAM ||--o{ SADAMATE_JARJEKORD : "kuulub_marsruuti"
REIS ||--o{ REISI_SADAM_AJAKAVA : "omab_ajakava"
SADAM ||--o{ REISI_SADAM_AJAKAVA : "kuulub_ajakavasse"
%% Teenused
KRUIIS ||--o{ KRUIISI_TEENUS : "pakub_teenuseid"
TEENUS ||--o{ KRUIISI_TEENUS : "saadaval_kruiisil"
%% Broneerimine
KASUTAJA ||--o{ BRONEERING : "teeb"
REIS ||--o{ BRONEERING : "voib_olla_broneeritud"
BRONEERING ||--o{ BRONEERINGU_REISIJA : "sisaldab_reisijaid"
FYUUSILINE_ISIK ||--o{ BRONEERINGU_REISIJA : "voib_reisida"
BRONEERING ||--o{ KAJUTI_BRONEERING : "sisaldab_kajuteid"
RUUM ||--o{ KAJUTI_BRONEERING : "voib_olla_broneeritud"
BRONEERING ||--o{ TEENUSE_BRONEERING : "sisaldab_teenuseid"
KRUIISI_TEENUS ||--o{ TEENUSE_BRONEERING : "voib_olla_broneeritud"
%% Arveldus
BRONEERING ||--o{ ARVE : "genereerib"
ARVE ||--o{ MAKSE : "voib_olla_makstud"
classDef kasutajad stroke:#2196f3,stroke-width:3px
classDef laevad stroke:#9c27b0,stroke-width:3px
classDef kruiis stroke:#ff9800,stroke-width:3px
classDef teenus stroke:#4caf50,stroke-width:3px
classDef broneering stroke:#ff5722,stroke-width:3px
classDef arveldus stroke:#e91e63,stroke-width:3px
Mermaid ERD paigutuse parandamise nipid:
- Gruppeering kommentaaridega - Kasutasin
%% === GRUPI NIMI === et visuaalselt grupeerida seotud olemeid
- Olemite järjekord - Panin seotud olemid üksteise lähedale (nt RUUMI_TYYP enne RUUM'i)
- Seosete grupeerimine - Jaotasin seosed gruppide kaupa, et vähendada ristumisi
- Lühemad seosenimed - Kasutasin lühemaid nimesid (
"omab" vs "omab kasutajaid")
Põhiprintsiibid:
- Firma ja füüsilise isiku lahusus: Üks füüsiline isik saab olla kasutaja mitme firma juures
- Kasutajatüübid: Administraatorid, klienditeenindajad (kontoris ja laeval), tavalised ostjad
- Kruiis vs Reis: Kruiis on mall/kirjeldus, reis on konkreetne toimumine
- Broneeringu struktuur: Eristab ostjat reisijatest, võimaldab erinevaid kombinatsioone
- Teenused: Saab broneerida ette või osta laeval
Peamised funktsioonid:
- Laevade registreerimine ja ruumide kirjeldamine
- Kruiiside loomine ja reisside planeerimine
- Broneeringute haldamine (kajutid + teenused)
- Reisijate registreerimine ja kohalesaamise jälgimine
- Arveldamine (ette- ja järelmaksed)
- Sadamate ajakavad ja marsruudid
Kasutajate õigused:
- Laeva omaniku admin: Laevad, kruiisid, hinnakirjad, kasutajad
- Klienditeenindaja: Broneeringud, reisijad, maksed
- Laeva teenindaja: Reisijate registreerimine, teenuste müük
- Ostja: Broneeringute tegemine, reisijate lisamine