Skip to content
This repository has been archived by the owner on Apr 12, 2021. It is now read-only.

Die Server Datenbank

firesoft-de edited this page Feb 24, 2018 · 15 revisions

Die serverseitige Datenbank basiert auf einer SQL Datenbank. Sie besteht im Kern aus drei Tabellen. Jeweils eine um die Ausrüstungsgegenstände (equipment), die Gerätefächer (trays) und die Positionsbilder (positionimage) zu verwalten.

Grundsätzliches

Jede Datenbank enthält min. eine Spalte "version". In dieser wird die Version des Eintrages hinterlegt. Der Vorteil an dieser Methode ist, dass durch die Serverskripte immer nur die Einträge an den Client ausgeliefert werden die dieser auch benötigt. Es kann also Traffic auf Server und Client Seite gespart werden.

Die leeren Datenbanken sind im .sql Format im Ordner server/tools in diesem Repo gespeichert. Sie können per Import schnell geladen werden.

Die Equipment-Tabelle

Feld Datentyp Beschreibung
id integer Eindeutige Kennung des Nutzers
categoryID integer In diesem Feld wird die ID des Gerätefachs hinterlegt, welchem der Gegenstand unterstellt ist.
positionID integer Die PositionsID enthält eine Kennung welche zur Identifikation des Markierungsbereiches in der Detailansicht verwendet wird. Die zugehörigen Einträge sind im Trayeintrag hinterlegt.
name string Der Name des Gegenstandes
setName string Der Name des Ausstattungssatzes (Eintrag optional)
description string Eine Beschreibung zum Gegenstand (Eintrag optional)
position string Eine Beschreibung zur Position des Gegenstandes in Textform
count integer Anzahl wie oft der Gegenstand vorhanden ist
notes string Anmerkungen zum Gegenstandes bspw. Benutzungshinweise, Vorsichtsmaßnahmen etc. (Eintrag optional)
keywords string Stichwörter welche in der Appinternen Suche verwendet werden
version integer Diese Spalte kennzeichnet zu welcher Datenbankversion der Eintrag gehört

Die Tray-Tabelle

Feld Datentyp Beschreibung
id integer Eindeutige Kennung des Nutzers
name string Der Name des Gerätefachs
description string Eine Beschreibung zum Gerätefach
descriptionTwo string Dieser Eintrag wird momentan nicht verwendet!
positions string Die verfügbaren Markierungspositionen
version integer Diese Spalte kennzeichnet zu welcher Datenbankversion der Eintrag gehört

Die Markierungspositionen werden nach folgendem Muster angelegt: 0:27-269-188-415

  • 0 - stellt dabei die ID des Markierungsfeldes dar
  • 27 - ist der Abstand zwischen linkem Bildrand und der linken Seite des Markierungsrechteck in Pixel
  • 269 - ist der Abstand zwischen oberen Bildrand und der linken Seite des Markierungsrechteck in Pixel
  • 188 - ist der Abstand zwischen linkem Bildrand und der rechten Seite des Markierungsrechteck in Pixel
  • 415 - ist der Abstand zwischen oberen Bildrand und der unteren Seite des Markierungsrechteck in Pixel

Genauere Informationen zur Erstellung der Positionen gibt es hier:

Anleitung: Die Markierungspositionen erstellen

Die PositionImage-Tabelle

In dieser Tabelle werden Pfadangaben zu den Positionsbildern hinterlegt. Momentan ist vorgesehen die Bilder als .jpg zu hinterlegen. Es muss zu jedem Element der Tray Tabelle ein passendes Element in der PositionImage Tabelle existieren! Ein Bild muss aber nicht zwangsläufig hinterlegt werden (siehe Artikel Die Datenbank managen)

Feld Datentyp Beschreibung
id integer Eindeutige Kennung des Nutzers
path string Der Ordnerpfad an dem das Bild hinterlegt ist
categoryID integer Die ID des zugehörigen Gerätefaches
version integer Diese Spalte kennzeichnet zu welcher Datenbankversion der Eintrag gehört

Die Group-Tabelle

In dieser Tabelle werden die verfügbaren Gruppen gespeichert. Da der Tabellenname group durch MySQL reserveriert ist, wird stattdessen als Tabellenname "groupx" verwendet.

Im Vergleich zu den anderen Tabellen ist die Gruppentabelle sehr simpel aufgebaut.

Feld Datentyp Beschreibung
id integer Eindeutige Kennung des Nutzers
name string Namen der Gruppe. Wird durch den Client bei der Kommunikation mit dem Server verwendet.
version integer Diese Spalte kennzeichnet zu welcher Datenbankversion der Eintrag gehört

Die User-Tabelle

Die User-Tabelle enthält Benutzerdaten für die Verwendung der Daten-API. Momentan wird sie damit vor allem bei der Verwendung des ServerManagers benötigt.

Feld Datentyp Beschreibung
id integer Eindeutige Kennung des Nutzers
name string Der Name des Benutzers. Dieser wird beim Einloggen verwendet.
groups string Gruppen welche der Nutzer bearbeiten darf. Es werden die Gruppennamen mit dem Muster gruppenname1_gruppenname2_gruppenname3 verwendet (Trennzeichen "_"). Es kann auch die Gruppenid verwendet werden (0_1_2_3). Wenn der Benutzer Rechte für alle Gruppen erhalten soll, kann der Schlüssel all verwendet werden.
tables string Tabellen welche der Nutzer bearbeiten darf. Es werden die Tabellennamen mit dem Muster tray_equipment_userx_groupx_positionimage verwendet (Trennzeichen "_"). Wenn der Benutzer Rechte für alle Tabellen erhalten soll, kann der Schlüssel all verwendet werden.
pass string Passwort des Nutzers. Durch den ServerManager werden eingegebene Passwörter standardmäßig mit einem SHA256 gehasht.
login_attempts integer Gibt die Anzahl der aktuellen Fehlversuche für den Benutzer an. Bei fünf Fehlversuchen wird der Nutzer automatisch gesperrt.
active integer-boolean Gibt an ob der Nutzer aktiviert (1) oder deaktiviert (0) ist.