Slik designer du et ER-diagram for et turismesystem: Steg-for-steg guide
Et Entity-Relationship (ER) diagram modellerer datastrukturen til et turismeinformasjonssystem. Her er et praktisk rammeverk for å designe ett.
Kjerneentiteter (Tabeller)
- Turist – tourist_id (PK), navn, e-post, telefon, nasjonalitet, pass_nr, preferanser, lojalitets_nivå.
- Destinasjon – dest_id (PK), navn, land, region, beskrivelse, lat/long, sesongvariert.
- Attraksjon – attr_id (PK), dest_id (FK), navn, type (natur, kultur, tema_park), åpningstider, billettpris, kapasitet.
- Overnatting – acc_id (PK), dest_id (FK), navn, type (hotell, hjemmestay, resort), stjerner, rom_antall, fasiliteter.
- Transport – trans_id (PK), origin_dest_id, destination_dest_id, mode (fly, tog, buss, ferge), rutetime, pris, kapasitet.
- TurPakke – pkg_id (PK), navn, beskrivelse, varighet, grunnpris, inkluderte_tjenester, operator_id (FK).
- Bestilling/Reservasjon – booking_id (PK), tourist_id (FK), pkg_id/attr_id/acc_id/trans_id (polymorf eller separate tabeller), dato, status, payment_id.
- Betaling – payment_id (PK), booking_id (FK), beløp, valuta, metode, status, transaksjons_ref.
- Anmeldelse – review_id (PK), tourist_id (FK), entity_type, entity_id, rating, kommentar, dato.
- Byrå/Operatør – org_id (PK), navn, kontakt, lisens_nr, provisjonssats.
Nøkkelrelasjoner
- Turist 1:N Bestilling
- Destinasjon 1:N Attraksjon, Overnatting, Transport
- TurPakke N:M Attraksjon/Overnatting/Transport (via PackageComponent)
- Byrå 1:N TurPakke
- Bestilling 1:1 Betaling
Designsteg
- Oppgi alle brukerhistorier (søk, bestill, anmeld, administrer, rapport).
- Identifiser entiteter & attributter fra historier.
- Definer primærnøkler, fremmednøkler, kardinaliteter.
- Normaliser til 3NF (unngå redundans).
- Tegn ved bruk av Crow's Foot eller Chen-notasjon (verktøy: draw.io, Lucidchart, MySQL Workbench, dbdiagram.io).
- Valider med interessenter; iterer.
Pro-tips
- Bruk supertype/subtype for Overnatting (Hotel, Hostel, Camping) hvis attributter skiller seg ut.
- Modellér dynamisk prising via en egen PriceCalendar-entitet.
- Inkluder revisjonsfelter (created_at, updated_by) på alle tabeller.
- Vurder GIS-utvidelser (PostGIS) for romlige spørringer (nærme attraksjoner).
Et vellykket ER-diagram er oppskriften på en skalerbar, vedlikeholdbar turismeplattform.