Gå till innehållet

Domänmodell

Salieri hanterar bokningar av rum och nödvändig tillhörande information. Några av de centrala begreppen coh sakerna är exempelvis rum, bokning, användare, kontakt och facilitet. Följande bild listar begrepp och dess relationer.

erDiagram
  BOOKING {
    int Id PK
    string Title
    string Contact
    DocumentLink[] DocumentLinks
  }
  DOCUMENTLINK {
    string Name
    string Url
  }
  BOOKINGSTATUS {
    int Id PK
    string Name
  }
  TIMEINFO {
    int Id PK
    DateOnly StartDate
    DateOnly EndDate
    TimeOnly StartTime
    TimeOnly EndTime
    bool AllDay
  }
  ROOM {
    int Id PK
    string Identifier
    string Name
  }
  FACILITY {
    int Id PK
    string Name
  }
  ROOMTYPE {
    int Id PK
    string Name
  }
  CAPACITY {
    int Id PK
    int MaxPersons
    double Area
  }
  FLOOR {
    int Id PK
    string Name
    int FloorNumber
  }
  BUILDING {
    int Id PK
    string Name
    string Address
    string Contact
  }
  LOCATION {
    int Id PK
    string Name
    string City
    string Region
  }
  USERROLE {
    int Id PK
    string Name
    SystemRoleType SystemRole
  }
  RECURRINGINFO {
    int Id PK
    int Interval
    Period Period
  }
  RECURRINGWEEKDAY {
    int Id PK
    Weekday Weekday
  }
  PERIOD {
    int Year
    int Month
    int Week
    int Day
  }
  WEEKDAY {
    int Monday
    int Tuesday
    int Wednesday
    int Thursday
    int Friday
    int Saturday
    int Sunday
  }
  SYSTEMROLETYPE {
    int User
    int AuthorizedUser
    int Admin
    int ServiceUser
  }

  %% Relations
  BOOKING ||--o{ BOOKINGSTATUS : "status_of"
  BOOKING ||--|| TIMEINFO : "has"
  TIMEINFO ||--o{ RECURRINGINFO : "may_have"
  RECURRINGINFO ||--o{ RECURRINGWEEKDAY : "weekdays"

  %% Many-to-many relationships (inferred)
  ROOM }|--|{ BOOKING : "bookings"
  ROOM }|--|{ ROOMTYPE : "types"
  ROOM }|--|{ FACILITY : "facilities"
  ROOM }|--|{ USERROLE : "bookable_by"

  %% One-to-many / one-to-one
  CAPACITY ||--o{ ROOM : "capacity_of"
  FLOOR ||--o{ ROOM : "rooms_on"
  BUILDING ||--o{ FLOOR : "has_floors"
  LOCATION ||--o{ BUILDING : "location_of"

  %% Booking <> Facility (desired facilities)
  BOOKING }|--|{ FACILITY : "desired_facilities"
classDiagram

    namespace Salieri ["Salieri domänmodell"] {
        class App {
            Version
        }
    }

    namespace Salieri.Base ["Grunddata"] {
        class Building ["Byggnad"] {
            Namn
            Adress
            Kontakt
        }

        class Floor ["Våningsplan"] {
            Namn
            Våning
        }

        class Room ["Rum"] { 
            Identitet
            Namn
        }

        class Capacity ["Kapacitet"] {
            Max antal personer
            Yta
        }

        class Location ["Plats"] {
            Ort
            Område
            Namn
        }

        class RoomType ["Rumstyp"] <<enumeration>> {
            Orkestersal
            Konsertsal
            Ensemblerum
            Övningsrum
            ...(konfigurerbart)
        }

        class Facility ["Facilitet"] <<enumeration>> {
            Flygel/Piano
            Projektor
            Talarstol
            Hörslinga
            Ljudsystem
            Ljuddämpat
            Whiteboard
            ... (konfigurerbart)
        }

        class BookingStatus ["Bokningsstatus"] <<enumeration>> {
            Preliminär
            Väntande
            Klar
            ... (konfigurerbart)
        }
    }

    namespace Salieri.Bookings ["Bokningar"] {
        class Booking ["Rumsbokning"] {
            Titel
            Kontakt
            Dokument
        }

        class TimeInfo ["TidsInformation"] {
            Startdatum
            Slutdatum
            Starttid
            Sluttid
            Hela dagen
        }

        class RecurringInfo ["Återkommande"] {
            Intervall
        }

        class Period ["Period"] <<enumeration>> {
            År
            Månad
            Vecka
            Dag
        }

        class Weekday ["Veckodag"] <<enumeration>> {
            Måndag
            Tisdag
            Onsdag
            Torsdag
            Fredag
            Lördag
            Söndag
        }
    }

    namespace Salieri.Roles ["Roller"] {
        class UserRole ["Användarroll"] {
            Namn
            Systemroll
        }

        class SystemRole ["Systemroll"] {
            Användare
            Auktoriserad användare
            Administratör
            Tjänsteanvändare
        }
    }

    App *--> "1..n" Room
    App *--> "1..n" Building
    App *--> "1..n" Location
    App *--> "1..n" Facility
    App *-- "0..n" Booking
    App *-- "4" SystemRole
    App *-- "1..n" UserRole

    Building --> "n" Floor
    Building ..> "1" Location
    Floor *--> "0..n" Room
    UserRole ..> "1" SystemRole
    Room *--> "1" Capacity
    Room *--> "1..n" RoomType
    Room ..> "1..n" UserRole : kan bokas av
    Room ..> "0..n" Facility
    Booking ..> "1..n" Room
    Booking *--> "1" BookingStatus
    Booking ..> "0..n" Facility : önskar
    Booking *--> "1" TimeInfo
    TimeInfo *--> "0..1" RecurringInfo
    RecurringInfo *--> "1" Period
    RecurringInfo *--> "1..n" Weekday

Bokningar

Under kategorin bokningar samlas information som berör själva bokningen. Dels det sammanhållande rumsbokningen och dels associerad information som exempelvis tid.

  • Bokning

Byggander och rum

Denna kategori av domänmodellen utgör grunddata för Salieri. Här defineras rum, byggnader med våningsplan, platser och diverse listor som faciliteter, bokningsstatus osv.

  • Byggnad

  • Plats

  • Våningsplan

  • Rum

  • Kapacitet

  • Listor

    • Rumstyp
    • Facilitet
    • Bokningsstatus

Roller

Här återfinns begreppen användar- och systemroll. Mer information om roller finns finns att läsa här.