![]() |
Datenbank: PostgreSQL • Version: 8.0 • Zugriff über: UniDac
Datenbankdesign: wiederkehrende [Ereignisse] Aktionen
Hallo,
in einer Tabelle habe ich mehrere Geräte eingetragen. Diese Geräte sollen Wochentags (Mo - Fr) zu einem bestimmten Zeitpunkt (5 Minuten Raster) ein- und ausgeschaltet werden. z.B. Mo-Fr: Einschalten: 08:00 Ausschalten: 17:30 Während des Wochenendes sollen die Geräte zu anderen Zeitpunkten geschaltet werden - oder komplett ausgeschaltet bleiben. Wie würdet Ihr das Datenbankdesign anlegen? Der Gerätetabelle noch zusätzliche Spalten spendieren z.B: Wochetags_einschalten Wochetags_ausschalten Wochenende_einschalten Wochenende_ausschalten Oder eine seperate Tabelle mit den Zeitdaten und Verweis auf die GeräteID? Oder gibt es noch einen anderen Ansatz? Ich stehe etwas ratlos da. Grüße Klaus |
AW: Datenbankdesign: wiederkehrende Ereignis
Moin...8-)
definitiv: Zitat:
|
AW: Datenbankdesign: wiederkehrende Ereignisse
Um das Ganze relativ flexibel zu machen, könnte die zusätzliche Tabelle so aussehen:
Zwei Zeitstempel geben dann jeweils einen Zeitpunkt relativ zu 0:00 des Tages an (von .. bis). Jedes Gerät, für das es einen Tabelleneintrag gibt, der den aktuellen Zeitpunkt einschließt, wird zu dieser Zeit aktiviert. Zusätzlich hast du eine Maske*, welche bestimmt, für welche Tage die Regel bestimmt ist. Das entscheidende Detail bei diesem Ansatz ist: Jedes Gerät kann mehrere Regeln besitzen, die an unterschiedlichen Tagen das Gerät anschalten. * z.B. ein Bitfeld oder einzelne boolesche Spalten; entweder für Werktags/Wochenende oder Mo..So. Mich würde es nicht wundern, wenn irgendwann kurzfristig der Bedarf besteht, einzelne Wochentage voneinander zu unterscheiden. In der Datenbank und der Logik könnte man das schon anlegen. |
AW: Datenbankdesign: wiederkehrende Ereignisse
Ich würde es so machen:
Da bist Du ganz frei in der Definition der Zeitspanne. Für Ein/Aus brauchst Du zwar 2 Datensätze aber Ein und Ausschalten sind ja auch zwei Aktionen. Gruß K-H |
AW: Datenbankdesign: wiederkehrende Ereignisse
Handelt es sich jetzt hierbei eigentlich um Regeln oder ganz strikt von extern immer wieder neu vorgegebene Ereignisse?
|
AW: Datenbankdesign: wiederkehrende Ereignisse
Der Versuch eines Ansatzes:
Code:
Sofern (technisch) erforderlich (wie von p80286 angeregt) auch einen Ausschaltzeitpunkt oder eine Dauer für den Betrieb in Minuten, Sekunden... ab der Uhrzeit.
Gerätetabelle
GeräteID,Name,Bezeichning,... 1,Staubsauger, WochenTagTabelle ID,Tag 1,Montag, 2,Dienstag, ... 7,Sonntag UhrzeitTabelle ID,WochenPlanID,Uhrzeit 10,1,10:00 ... 20,2,15:00 ... 30,3,17:00 ... 40,4,09:00 ... 50,4,08:00 ... 60,5,15:00 ... 70,6,12:00 ... 80,1,11:00 ... 90,1,17:15 ... TerminTabelle ID,GeräteID,WochenTagID,UhrzeitID 1,1,1,10 2,1,2,20 ... 9,1,6,70 Staubsauger startet demnach Montag 10:00 Dienstag 15:00 Samstag 17:15 oder TerminTabelle ID,GeräteID,WochenTagID 1,1,1 2,1,2 ... 9,1,6 Staubsauger startet zu allen Uhrzeiten, die sich zum Wochentag der Wochentagtabelle in der Tremintabelle finden lassen.
Code:
oder
UhrzeitTabelle
ID,WochenPlanID,Uhrzeit,Dauer 10,1,10:00,00:05:00 ... 20,2,15:00,00:15:00 ... 90,1,17:15,00:00:05 ...
Code:
UhrzeitTabelle
ID,WochenPlanID,Uhrzeit,Typ (1 = ein, 0 = aus) 10,1,10:00,1 11,1,10:05,0 ... 20,2,15:00,1 21,2,15:15,0 ... 90,1,17:15,1 91,1,18:00,0 ... |
AW: Datenbankdesign: wiederkehrende Ereignisse
Zitat:
|
AW: Datenbankdesign: wiederkehrende Ereignisse
Das sollte eigentlich reichen. Die Wochentage als ID-Tabelle ist überflüssig :)
Geräte
|
AW: Datenbankdesign: wiederkehrende Ereignisse
Zitat:
Sonntag oder Montag? Bin es halt seit Jahrzehnten gewohnt für jeden Schlüsselwert (wie es hier der Tag ist) gibt es eine Tabelle, in der man die Bedeutung des Schlüsselwertes nachlesen kann. Sicher kann man technisch gesehen hier auf diese Tabelle verzichten, ebenso, wie man technisch beim Gerät auf den Namen verzichten könnte. Der Informationsgehalt eines Steuersystemes wird hierdurch aber doch sehr eingeschränkt. Wenn man mehrere Geräte mit gleichem Typ und oder Name... hat, so könnte man hier anstelle der Namen beim Gerät auch einen Fremdschlüssel auf eine Tabelle verwenden, in der alle Gerätetypen mit ihren Detaildaten enthalten sind. Die Frage ist halt, wie weit man es mit der Normalisierung der Daten treibt. |
AW: Datenbankdesign: wiederkehrende Ereignisse
Zitat:
Die Zeitstempel werden vom Benutzer konfiguriert (per GUI) und in die Datenbank geschrieben. Ein Service liest die Daten aus der Tabelle und führt dann die Schaltaktion aus. Zitat:
Derzeit habe ich nur zwei Wochenteile (Wochentags und Wochenende). Wenn ich das flexibel halten soll (was ja erstmal nicht schlecht ist) könnten bei der Erstellung der Datensätze des Wochentags - Tageseinträge von 1 bis 5 erstellt werden. @Sir Rufo auf einen Wocheplan (mit Datum) und Terminplan wollte ich eigentlich nicht hinaus. Es würde dann auf eine Tabelle hinauslaufen wie von p80286 vorgeschlagen. Auch die von nahpets geht in diese Richtung. Danke für die rege Beteiligung. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz