= Systemübersicht

== Systemkontext

== Systemarchitektur

== Systemschnittstellen

=== Realisierte Schnittstellen

=== Verwendete Schnittstellen

== Logisches Datenmodell

#figure(
  kind: image,
  ```pintora
  erDiagram
    USER {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string email
      boolean enabled
      string firstName
      string lastName
      string password
      string token
      boolean tokenExpired
      string userName UNIQUE
    }
    USER ||--o{ AUTHORIZATION_MATRIX : "matrix"
    ROLE {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string name
    }
    ROLE ||--o{ AUTHORIZATION_MATRIX : "matrix"
    AUTHORIZATION_MATRIX {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string user_id FK
      string role_id FK
    }
  ```, 
  caption:  [Benutzer ER-Diagramm]    
)

#figure(
  kind: image,
  ```pintora
  erDiagram
    comic {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      boolean completed
      boolean currentOrder
      string title
      string publisher_id FK
    }
    comic ||--o{ comic_work : "1"
    comic ||--o{ issue : "1"
    comic ||--o{ volume : "1"
    comic ||--o{ story_arc : "1"
    comic ||--o{ trade_paperback : "1"
    volume {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string name
      string comic_id FK
    }
    volume ||--o{ issue : "1"
    issue {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      boolean in_stock
      boolean is_read
      string issue_number
      string comic_id FK
      string volume_id FK
    }
    publisher {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string name
    }
    publisher ||--o{ comic : "1"
    artist {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string name
    }
    artist ||--o{ comic_work : "1"
    story_arc {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string name
      string comic_id FK
    }
    trade_paperback {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      int issueStart
      int issueEnd
      string name
      string comic_id FK
    }
    worktype {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string name
    }
    worktype ||--o{ comic-work : "1"
    comic_work {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string artist_id FK
      string comic_id FK
      string worktype_id FK
    }
  ```,
  caption: [Comics ER-Diagramm]
)

#figure(
  kind: image,
  ```pintora
  erDiagram
    sport {
      string id PK
      datetime created_date
      datetime last_modified_date
      int version
      string   name
    }
    team {
      string id PK
      datetime created_date
      datetime last_modified_date
      int      version
      string   name
      string   short_name
      string   sport_id FK
    }
    field_position {
      string   id PK
      datetime created_date
      datetime last_modified_date
      int      version
      string   name
      string   short_name
      string   sport_id FK
    }
    rooster {
      string   id PK
      datetime created_date
      datetime last_modified_date
      int      version
      int      year
      string   player_id FK
      string   position_id FK
      string   team_id FK
    }
    player {
      string   id PK
      datetime created_date
      datetime last_modified_date
      int      version
      string   first_name
      string   last_name
    }
    vendor {
      string   id PK
      datetime created_date
      datetime last_modified_date
      int      version
      string   name
    }
    card_set {
      string   id PK
      datetime created_date
      datetime last_modified_date
      int      version
      boolean  insert_set
      string   name
      boolean  parallel_set
      string   vendor_id FK
    }
    card {
      string   id PK
      datetime created_date
      datetime last_modified_date
      int      version
      int      cardNumber
      int      year
      string   card_set FK
      string   rooster_id FK
      string   vendor_id FK
    }
    sport ||--o{ team : "1"
    sport ||--o{ field_position : "1"
    field_position ||--o{ rooster : "1"
    player ||--o{ rooster : "1"
    team ||--o{ rooster : "1"
    vendor ||--o{ card : "1"
    card_set ||--o{ card : "1"
    rooster ||--o{ card : "1"
  ```,
    caption: [TYSC ER-Diagramm]
)

#figure(
    kind: image,
    ```pintora
    erDiagram
      book {
        string   id PK
        datetime created_date
        datetime last_modified_date
        int      version
        string   isbn UNIQUE
        string   title
        int      year
        string   publisher_id FK
      }
      bookshelf_publisher {
        string   id PK
        datetime created_date
        datetime last_modified_date
        int      version
        string   name UNIQUE
      }
      author {
        string   id PK
        datetime created_date
        datetime last_modified_date
        int      version
        string   first_name
        string   last_name
      }
      article {
        string   id PK
        datetime created_date
        datetime last_modified_date
        int      version
        string   title
      }
      article_author {
        string   id PK
        datetime created_date
        datetime last_modified_date
        int      version
        string   article_id FK
        string   author_id FK
      }
      book_author {
        string   id PK
        datetime created_date
        datetime last_modified_date
        int      version
        string   book_id FK
        string   author_id FK
      }
      bookshelf_publisher ||--o{ book : "1"
      article ||--o{ article_author : "1"
      author ||--o{ article_author : "1"
      book ||--o{ book_author : "1"
      author ||--o{ book_author : "1"
    ```,
    caption: [Bookshelf ER-Diagramm]
)

#figure(
    kind: image,
    ```pintora
    erDiagram
      mail {
        string id PK
        datetime created_date
        datetime last_modified_date
        int version
        string subject
        string content
        datetime received_date
        datetime sent_date
      }
      mail_account {
        string id PK
        datetime created_date
        datetime last_modified_date
        int version
        string host
        string password
        int port
        string protocol
        boolean start_tls
        string user_name
      }
      mail_address {
        string id PK
        datetime created_date
        datetime last_modified_date
        int version
        string internet_address UNIQUE
        string personal
        string user_id FK
      }
      user ||--o{ mail_address : "1"
    ```,
    caption: [Mail ER-Diagramm]
)

=== Einschränkungen
