Entwurfsüberlegungen

Gedanken zum Entwurf der Architektur

Architekturentwurf



Speicherung der Daten

Entwurf der Datenbank Tabellen



anpassbare Variablen

WertSorted descending Datentyp Beispiele + Begründung
Maske für Anzeige der Detailinformationen je nach Raumtyp Template individuell anpassbar, für jeden definierten Raumtyp andere Anzeigeform
Anzahl Etagen Javascript Integer → Wiederverwendung für Gebäude mit mehr oder weniger Etagen (Umgebungspläne gelten intern als weitere Etage)


sonstige Daten

Belegungsplan - Link zu jeweiliger KVV-Seite



Use Cases

  • Nutzer
    • Suche per Suchbegriff (Name, Raumnr. Telefon …)
    • Navigation (Raum in der Grafik anklicken → Detailinformationen)
    • Sprache umstellen
  • Admin
    • Datenänderung
      • Miarbeiter - weg / neu / sonstige Änderung
      • Access Points - weg / hinzu / woanders
      • Raumbelegung ändert sich
      • Raumaufteilung / Umbaumassnahmen (Änderung der Grafiken und HTML-Tabelle nötig)
    • Daten Import / Update durchführen
    • Template Änderungen



Rechtevergabe

Nutzergruppen:

  • externe Besucher: nur Lesezugriff über Webseite
  • Studenten mit Account: nur Lesezugriff über Webseite
  • Mitarbeiter des Fachbereichs:
    • Leserecht: alle Tabellen (auch über Datenbank Interface)
    • Schreibrecht: Tabelle Person (alle Attribute)
  • Admin: in allen Tabellen Schreib- und Leserechte



Funktionen

Update

Daten aus dem Active Directory (AD) oder anderen Quellen in die Datenbank (DB) kopieren

Vorgehensweise:

Schritt 1: kleines Script je Quelle, das die Daten aus dieser Quelle in einer genau vordefinierter Form in eine Textdatei schreibt.

Schritt 2: PHP-Funktion die diese Daten aus der Textdatei in die Datenbank überträgt und auf die Synchronisierung achtet

Probleme:

Schreibweisen im AD evtl. nicht einheitlich:
  • z.B.: Raumnummer "008", "R008", "Raum 008", "Zimmer 008" …
    • Lösung: nur Zahlen bzw. erlaubte Sonderzeichen (K bei den Kellerräumen, a bei 022a …) rausfiltern
    • Problem: externe Arbeitsgruppen z.B. Fabeckstr.

Mitarbeiter aus alle eingetragenen Personen im AD filtern:
  • Lösung 1: nur Eintragungen mit angegeben Raumnummer beachten
    • Problem: Mitarbeiter die im AD noch keine Raumnummer angegeben haben gehen verloren / müssen von Hand in DB nachgetargen werden

Synchronisierung / Konflikvermeidung:
  • Fall 1: Datensatz in DB und AD identsch => Keine Änderung nötig + Keine Konflikt
  • Fall 2: Datensatz in DB noch leer in AD vorhanden => Dten aus AD in DB kopieren - kein Konflikt aber falsche Informationen möglich wenn Daten im AD an falscher Stelle gemacht (z.B. falscher Raum eingetragen).
  • Fall 3: Datensatz in DB vorhanden und ungleich mit AD => Konflikt
    • Lösung 1: Datensatz überspringen und keine Änderung in DB vornehmen (ungünstig - Änderungen müssten also immer in der Datenbank vorgenommen werden evtl. aktuelle Informationen des AD wären sinnlos)
    • Lösung 2: Daten aus AD überschreiben Daten in DB (ebenfalls üngünstig aus gleichem Grund)
    • Lösung 3: Daten werden nicht überschrieben, aber eine Konflikmitteilung an Admin ausgegeben mit betroffenem Datensatz zur Klärung (Konflikte am besten vermieden aber für Admin sehr aufwändig)
    • Lösung 4: letztes Änderungsdatum der Daten word verglichen und der neue Datensatz wird geschrieben bzw. belassen (Problem: ist Änderungsdatum im AD gespeichert/auslesbar? in DB zusätzliche Spalte nötig)