Databasemodell - aTrueYety/idatt2106-2025-09-backend GitHub Wiki

Databasemodell

Denne siden beskriver databasemodellen for applikasjonen. Den viser hvordan informasjon om brukere, husholdninger, matvarer, ekstra beboere, hendelser og kartobjekter mm. er strukturert og koblet sammen i relasjonelle tabeller.

ER-diagram

Diagrammet nedenfor gir en visuell oversikt over tabellenes relasjoner. For best lesbarhet anbefales det å åpne bildet i full størrelse.

ER-2

Tabeller og struktur

1. user

  • Primærnøkkel: id
  • Felt: username, email, password, first_name, last_name, household_id, is_admin, is_super_admin, email_confirmed, share_position_household, share_position_group, picture
  • Relasjon: Valgfri kobling til household. Hvis husholdningen slettes, settes household_id til NULL.

2. household

  • Primærnøkkel: id
  • Felt: name, adress, latitude, longitude, amount_water, last_water_change

3. food_type

  • Primærnøkkel: id
  • Felt: name, unit, calories_per_unit, picture

4. food

  • Primærnøkkel: id
  • Felt: type_id, household_id, expiration_date, amount
  • Relasjoner:
    • Kobling til food_type
    • Kobling til household

5. extra_resident_type

  • Primærnøkkel: id
  • Felt: name, consumption_water, consumption_food

6. extra_resident

  • Primærnøkkel: id
  • Felt: household_id, type_id, name
  • Relasjoner:
    • Kobling til extra_resident_type
    • Kobling til household

7. map_object_type

  • Primærnøkkel: id
  • Felt: name, icon

8. map_object

  • Primærnøkkel: id
  • Felt: type_id, latitude, longitude, opening, closing, contact_phone, contact_email, contact_name, description, picture
  • Relasjon: Kobling til map_object_type

9. severity

  • Primærnøkkel: id
  • Felt: colour, name, description

10. info_page

  • Primærnøkkel: id
  • Felt: title, short_description, content, created_at, updated_at

11. event

  • Primærnøkkel: id
  • Felt: info_page_id, name, latitude, longitude, radius, start_time, end_time, severity_id, recomendation
  • Relasjoner:
    • Valgfri kobling til info_page
    • Kobling til severity

Alle datatyper er basert på SQL/MySQL. Blob brukes for å lagre bilder direkte i databasen (som for user.picture eller food_type.picture). Tidsstempler og datoer brukes til å logge endringer og spore utløpsdatoer.