feat: Implement initial application structure with network view and SVG editor
- Added network-view.js for visualizing network topology with devices and connections. - Introduced svg-editor.js for managing ports on device types with drag-and-drop functionality. - Created bootstrap.php for application initialization, including configuration and database connection. - Established config.php for centralized configuration settings. - Developed index.php as the main entry point with module-based routing. - Integrated _sql.php for database abstraction. - Added auth.php for single-user authentication handling. - Included helpers.php for utility functions. - Created modules for managing connections, device types, devices, and floors. - Implemented database schema in init.sql for locations, buildings, floors, rooms, network outlets, devices, and connections. - Added Docker support with docker-compose.yml for web and database services. - Documented database structure and UI/UX concepts in respective markdown files.
This commit is contained in:
282
doc/DATABASE.md
Normal file
282
doc/DATABASE.md
Normal file
@@ -0,0 +1,282 @@
|
||||
# Datenbankdokumentation
|
||||
|
||||
Dieses Dokument beschreibt das Datenbankschema des
|
||||
netzwerkbasierten Dokumentations- und Verkabelungstools.
|
||||
|
||||
Die Datenbank ist so entworfen, dass sie:
|
||||
- reale Netzwerkinfrastrukturen exakt abbildet
|
||||
- keine Annahmen über Topologien erzwingt
|
||||
- auch exotische Technologien unterstützt
|
||||
- langfristig erweiterbar bleibt
|
||||
|
||||
Die Datenbank ist für **Single-User-Betrieb** ausgelegt.
|
||||
|
||||
---
|
||||
|
||||
## Überblick
|
||||
|
||||
Die Datenbank lässt sich grob in folgende Bereiche gliedern:
|
||||
|
||||
1. Standort- & Gebäude-Struktur
|
||||
2. Racks & physische Infrastruktur
|
||||
3. Gerätetypen & Geräte
|
||||
4. Ports, Module & Verbindungstypen
|
||||
5. Logische & physische Verbindungen
|
||||
|
||||
---
|
||||
|
||||
## 1. Standort- & Gebäude-Struktur
|
||||
|
||||
### `locations`
|
||||
Repräsentiert einen übergeordneten Standort (z. B. Firmencampus, Außenstelle).
|
||||
|
||||
**Verwendung**
|
||||
- Oberste organisatorische Ebene
|
||||
- Kann mehrere Gebäude enthalten
|
||||
|
||||
---
|
||||
|
||||
### `buildings`
|
||||
Ein Gebäude innerhalb eines Standorts.
|
||||
|
||||
**Verwendung**
|
||||
- Gruppiert Stockwerke
|
||||
- Ermöglicht mehrere Gebäude pro Standort
|
||||
|
||||
**Beziehung**
|
||||
- Gehört zu genau einem Standort
|
||||
|
||||
---
|
||||
|
||||
### `floors`
|
||||
Ein Stockwerk innerhalb eines Gebäudes.
|
||||
|
||||
**Verwendung**
|
||||
- Träger für Stockwerkspläne (SVG)
|
||||
- Gruppiert Räume, Racks und Netzwerkdosen
|
||||
|
||||
**Besonderheiten**
|
||||
- `svg_path` verweist auf den grafischen Stockwerksplan
|
||||
|
||||
---
|
||||
|
||||
### `rooms`
|
||||
Ein Raum innerhalb eines Stockwerks.
|
||||
|
||||
**Verwendung**
|
||||
- Dient zur räumlichen Zuordnung von Netzwerkdosen
|
||||
- Kann im SVG-Plan positioniert werden
|
||||
|
||||
**Grafische Attribute**
|
||||
- `x`, `y`, `width`, `height` zur visuellen Darstellung im Stockwerks-SVG
|
||||
|
||||
---
|
||||
|
||||
## 2. Netzwerkdosen
|
||||
|
||||
### `network_outlets`
|
||||
Physische Netzwerkdose innerhalb eines Raums.
|
||||
|
||||
**Verwendung**
|
||||
- Repräsentiert Wand- oder Bodendosen
|
||||
- Kann mehrere Ports besitzen
|
||||
|
||||
**Grafische Attribute**
|
||||
- `x`, `y` zur Platzierung im Stockwerksplan
|
||||
|
||||
---
|
||||
|
||||
### `network_outlet_ports`
|
||||
Einzelne Ports einer Netzwerkdose.
|
||||
|
||||
**Verwendung**
|
||||
- Jeder Port ist ein vollwertiger Verbindungspunkt
|
||||
- Kann direkt mit Geräten, Switches oder Modulen verbunden werden
|
||||
|
||||
---
|
||||
|
||||
## 3. Racks & physische Infrastruktur
|
||||
|
||||
### `racks`
|
||||
Ein Serverschrank oder Netzwerkschrank.
|
||||
|
||||
**Verwendung**
|
||||
- Befindet sich auf einem Stockwerk
|
||||
- Enthält Geräte
|
||||
|
||||
**Wichtige Attribute**
|
||||
- `height_he`: Gesamthöhe des Racks in Höheneinheiten (HE)
|
||||
|
||||
---
|
||||
|
||||
## 4. Gerätetypen & Geräte
|
||||
|
||||
### `device_types`
|
||||
Definiert eine Gerätevorlage.
|
||||
|
||||
**Verwendung**
|
||||
- Bestimmt Aussehen, Portanzahl und Portpositionen
|
||||
- Wird beim Anlegen eines Geräts instanziiert
|
||||
|
||||
**Grafik**
|
||||
- Unterstützt SVG und Bitmap (PNG/JPG)
|
||||
- Grundlage für alle grafischen Ansichten
|
||||
|
||||
---
|
||||
|
||||
### `device_type_ports`
|
||||
Portdefinitionen eines Gerätetyps.
|
||||
|
||||
**Verwendung**
|
||||
- Definiert, wo sich Ports im Bild befinden
|
||||
- Wird beim Erzeugen eines Geräts kopiert
|
||||
|
||||
**Grafische Attribute**
|
||||
- `x`, `y`: relative Position im Gerätebild
|
||||
|
||||
**Metadata**
|
||||
- JSON-Feld für erweiterte Eigenschaften
|
||||
|
||||
---
|
||||
|
||||
### `devices`
|
||||
Konkretes Gerät in der Infrastruktur.
|
||||
|
||||
**Verwendung**
|
||||
- Instanz eines Gerätetyps
|
||||
- Kann in einem Rack platziert werden
|
||||
|
||||
**Rack-Attribute**
|
||||
- `rack_position_he`
|
||||
- `rack_height_he`
|
||||
|
||||
---
|
||||
|
||||
### `device_ports`
|
||||
Ports eines konkreten Geräts.
|
||||
|
||||
**Verwendung**
|
||||
- Entstehen aus `device_type_ports`
|
||||
- Tragen den aktuellen Betriebszustand
|
||||
|
||||
**Technische Attribute**
|
||||
- Status (aktiv / deaktiviert)
|
||||
- VLAN-Konfiguration
|
||||
- Modus (Access, Trunk, Custom)
|
||||
|
||||
---
|
||||
|
||||
## 5. Port- & Verbindungstypen
|
||||
|
||||
### `port_types`
|
||||
Definiert die physische oder logische Art eines Ports.
|
||||
|
||||
**Beispiele**
|
||||
- RJ45
|
||||
- SFP
|
||||
- LC
|
||||
- BNC
|
||||
- Proprietär
|
||||
|
||||
**Zweck**
|
||||
- Einheitliche Typisierung von Ports
|
||||
- Grundlage für Modul-Kompatibilität
|
||||
|
||||
---
|
||||
|
||||
### `connection_types`
|
||||
Definiert die Art einer Verbindung.
|
||||
|
||||
**Verwendung**
|
||||
- Bestimmt technische Eigenschaften
|
||||
- Steuert grafische Darstellung
|
||||
|
||||
**Grafische Attribute**
|
||||
- Linienfarbe
|
||||
- Linienart (durchgezogen, gestrichelt, gepunktet)
|
||||
|
||||
---
|
||||
|
||||
## 6. Module (z. B. SFP)
|
||||
|
||||
### `modules`
|
||||
Ein Modul, das in einen Port eingesetzt werden kann.
|
||||
|
||||
**Verwendung**
|
||||
- SFP, SFP+, QSFP, Medienkonverter, Spezialkarten
|
||||
- Kann selbst Ports besitzen
|
||||
|
||||
---
|
||||
|
||||
### `module_ports`
|
||||
Ports eines Moduls.
|
||||
|
||||
**Verwendung**
|
||||
- Verbindungspunkt nach außen
|
||||
- Typischerweise Glasfaser- oder Spezialports
|
||||
|
||||
---
|
||||
|
||||
### `device_port_modules`
|
||||
Verknüpfung zwischen Geräteport und eingesetztem Modul.
|
||||
|
||||
**Verwendung**
|
||||
- Erlaubt modulare Portstrukturen
|
||||
- Unterstützt komplexe Hardware-Topologien
|
||||
|
||||
---
|
||||
|
||||
## 7. VLANs
|
||||
|
||||
### `vlans`
|
||||
Definiert VLANs unabhängig von Ports.
|
||||
|
||||
**Verwendung**
|
||||
- Wiederverwendbare VLAN-Definitionen
|
||||
- Referenz in Port- und Verbindungs-Konfigurationen
|
||||
|
||||
---
|
||||
|
||||
## 8. Verbindungen
|
||||
|
||||
### `connections`
|
||||
Zentrale Tabelle für alle Verbindungen.
|
||||
|
||||
**Verwendung**
|
||||
- Verbindet beliebige Ports miteinander
|
||||
- Unterstützt:
|
||||
- Geräteports
|
||||
- Modulports
|
||||
- Dosenports
|
||||
|
||||
**Designentscheidung**
|
||||
- Ports werden polymorph referenziert (`port_type`, `port_id`)
|
||||
- Ermöglicht maximale Flexibilität ohne Schemaänderungen
|
||||
|
||||
**Zusatzinformationen**
|
||||
- VLAN-Konfiguration
|
||||
- Betriebsmodus
|
||||
- Freitext-Kommentare
|
||||
|
||||
---
|
||||
|
||||
## Designphilosophie
|
||||
|
||||
- **Grafik ist Teil des Modells**
|
||||
- **Ports sind universelle Verbindungspunkte**
|
||||
- **Keine Einschränkung auf Ethernet**
|
||||
- **Keine Annahmen über Netzwerk-Topologie**
|
||||
- **Erweiterbarkeit vor Perfektion**
|
||||
|
||||
---
|
||||
|
||||
## Hinweis zur Erweiterung
|
||||
|
||||
Das Schema ist vorbereitet für:
|
||||
- Mehrbenutzerbetrieb
|
||||
- Historisierung
|
||||
- API-Nutzung
|
||||
- Exporte
|
||||
- Design-Themes
|
||||
|
||||
Diese Funktionen sind bewusst **nicht Bestandteil der ersten Version**.
|
||||
Reference in New Issue
Block a user