Entwurfsüberlegungen

Gedanken zum Entwurf der Architektur

Architekturentwurf



Speicherung der Daten

Entwurf der Datenbank Tabellen



anpassbare Variablen

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


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)