Files
netwatch/doc/DATABASE.md
fixclean ec20fa2f96 docs: update open TODO status and patchpanel documentation
- refresh TODO.md section for bugs/docs/status files

- align implementation status for delete/auth progress

- mark patchpanel infrastructure and floor SVG editor status in README

- finalize database patchpanel status notes and init.sql connection rules
2026-02-18 09:29:57 +01:00

324 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
- `polygon_points` (JSON) fuer optionale Freiform-Polygone auf Basis der Stockwerkskarte
---
## 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
---
### Patchpanel-Objekte im Floorplan
Patchpanels haben eine Sonderstellung: Sie sind fest verkabelte Bündel von Ports und werden **nicht** wie normale `devices` im Rack verschoben, sondern als eigene Floorplan-Objekte fest auf einem Stockwerk positioniert.
**Verwendung**
- Repräsentieren physische Patchfelder auf dem Stockwerksplan.
- Werden im SVG mit festen `x`/`y`-Koordinaten verankert und symbolisieren deren reale Position.
- Ermöglichen die Dokumentation der dauerhaften Verbindungen zu anderen Patchpanels, Netzwerkdosen oder Geräteports ohne Rack-Neuanlage.
**Grafische Attribute**
- `x`, `y`, `width`, `height` für die Visualisierung im Floorplan.
- `name`/`label` und `port_count` für die eindeutige Kennzeichnung.
- Optional: `connection_group` oder `cross_connect_id`, um zusammengehörige Patchfelder zu bündeln.
**Verbindungen**
- Jeder Patchpanel-Port wird über `connections` mit passenden Gegenstellen verbunden (andere Patchpanels, Dosen, Geräteports, Module).
- Da sie Teil der Floorplan-Grafik sind, lassen sich die permanenten Kabelverbindungen direkt auf der Stockwerkskarte darstellen.
### Tabellenstruktur `floor_patchpanels`
Die Bühne für Patchpanel-Objekte auf dem Stockwerkplan.
- `floor_id` referenziert das Stockwerk, in dem das Panel liegt.
- `pos_x`, `pos_y`, `width`, `height` definieren das feste Rechteck auf der SVG.
- `port_count` und `comment` beschreiben die Kapazität und zusätzliche Hinweise.
### Tabellenstruktur `floor_patchpanel_ports`
- Jeder Eintrag ist ein physischer Port eines Patchpanels.
- Attributes: Panel-Referenz, `name`, `port_type_id`, optionale VLAN- bzw. Status-Attribute.
- Ports werden über `connections` sowohl mit anderen Patchpanels als auch mit Netzwerkbuchsen (`network_outlet_ports`) oder Gerätports verbunden; dadurch lassen sich Router-Kabel grafisch darstellen.
**Status (18. Februar 2026)**
- [x] Floorplan- und CRUD-Module wurden für Patchpanels als Floor-Objekte inkl. Port-Pflege erweitert (`floor_patchpanels`, `floor_patchpanel_ports`).
- [x] Verbindungen zwischen Patchpanel ↔ Patchpanel und Patchpanel ↔ Netzwerkbuchse sind in der `connections`-Logik abbildbar.
- [ ] UI/CSV/Export-Dokumentation weiter ausbauen, damit Planer Kabelverläufe direkt auswerten können.
---
## 3. Racks & physische Infrastruktur
### `racks`
Ein Serverschrank oder Netzwerkschrank.
**Verwendung**
- Befindet sich auf einem Stockwerk
- Enthält Geräte
---
## 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
**Technische Attribute**
- `shape_definition`: JSON-Objekt mit `meta` und `shapes`. `meta` enthält den Formfaktor (`'10'`, `'19'`, `'other'`), die Rack-Höhe in HE (`heightHe`) sowie die Zeichenflächen-Abmessungen (`canvasWidth`, `canvasHeight`). Bei 1HE-Geräten mit 10" oder 19" Frontpanel wird der Zeichenbereich automatisch auf die dort üblichen Breiten/Höhen (420×80px bzw. 760×80px) skaliert und zusätzlich von einem weißen Rahmen mit schwarzer Linie umgeben, damit die Darstellung den realen Formfaktor besser widerspiegelt. Der `shapes`-Array enthält wie bisher die einzelnen Formen (`rect`, `circle`, `text`), die im Editor platziert wurden.
---
### `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
- Beim Anlegen eines Geräts werden Ports aus `device_type_ports` übernommen
**Rack-Attribute**
- `rack_position_he`
- `rack_height_he`
**Technische Attribute**
- `web_config_url`: Optionale Adresse zur Weboberfläche / Webconfig des Geräts.
---
### `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**.