--- 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:

  1. Gruppeering kommentaaridega - Kasutasin %% === GRUPI NIMI === et visuaalselt grupeerida seotud olemeid
  2. Olemite järjekord - Panin seotud olemid üksteise lähedale (nt RUUMI_TYYP enne RUUM'i)
  3. Seosete grupeerimine - Jaotasin seosed gruppide kaupa, et vähendada ristumisi
  4. Lühemad seosenimed - Kasutasin lühemaid nimesid ("omab" vs "omab kasutajaid")

CruiseMe.com ERD mudeli selgitused

Põhiprintsiibid:

  1. Firma ja füüsilise isiku lahusus: Üks füüsiline isik saab olla kasutaja mitme firma juures
  2. Kasutajatüübid: Administraatorid, klienditeenindajad (kontoris ja laeval), tavalised ostjad
  3. Kruiis vs Reis: Kruiis on mall/kirjeldus, reis on konkreetne toimumine
  4. Broneeringu struktuur: Eristab ostjat reisijatest, võimaldab erinevaid kombinatsioone
  5. Teenused: Saab broneerida ette või osta laeval

Peamised funktsioonid:

Kasutajate õigused: