verwendetes Datenbanksystem: <ACCESS 2007>
Hallo zusammen,
ich habe ein paar Fragen zu DB Design. Ich möchte Euch um Rat fragen, wie Ihr es lösen würdet.
Hier die Aufbau:
Ein Packet beinhaltet verschiedene Botschaften, Botschaften beinhalten verschiedene Signalen, welche wieder verschiedene Attributen haben.
Beispiel Aufbau:
Packet A beinhaltet
Botschaft_1
Botschaft_2
Botschaft_3
Botschaft_xx
Botschaft_1 beinhaltet:
Signal_1_1
Signal_1_2
Signal_1_xxx
Botschaft_2 beinhaltet:
Signal_2_1
Signal_2_2
Signal_2_xxx
usw
Es kann mehrere Versionen von Packeten geben z.B. Packet(n), welche viele gleiche Botschaften beinhalten wie Packet(n-1) aber es sind einige neue Botschaften dazugekommen bzw. welche gelöscht worden. Das gleiche kann mit Signalen passieren, die können einer Botschaft dazukommen bzw. entfallen.
Ich möchte z.B. viele Vergleiche machen z.B. Unterschiede zwischen Packet(n) und Packet(n-1) und Packet(n-2). Ach nochwas, ein Packet beinhaltet ca. 200 Botschaften und eine Botschaft ca. 10 Signalen --> ein Packet wird 2000 Signalen haben. Ich habe z.B. etwa 100 Packeten --> 100*2000 = 200000 Signalen. Es kann aber viel mehr werden.
Hier meine Vorschläge, was meint Ihr?
viele grüße
Also anhand deines "Aufbau Beispiels" wäre deine Lösung 1 passend. Hier wären aber die Versionen nicht möglich.
Die Lösung 2 wäre eine Möglichkeit um die "Versionen" zu realisieren.
Aber ich finde so würdest du einige Daten doppelt und dreifach speichern, da Version 2 und 3 von einem Packet (oder doch eher Paket? 😉 ) ja zum Teil gleiche/ähnliche Daten wie Version 1 speichern.
Mein 1. Ansatz wäre gewesen Packet eine weitere 1:1 Beziehung auf sich selbst zu geben um so die ID der Vorgänger Version zu speichern.
Dann müssten in der Tabelle PacketBotschaft nur noch die Änderungen gespeichert werden (inkl der Information ob diese Botschaft hinzugefügt oder entfernt wurde).
(das gleiche gilt dann auch bei der Tabelle Botschaft)
Wenn ein Paket mehrere Botschaften und umgekehrt haben kann, ist Lösung 1 gar nicht möglich.
Muss auf eine Beziehung zwischen Paket und Botschaft etwas angehängt werden, das sich auf diese Beziehung bezieht (zum Beispiel ein Datum) ist Lösung 2 unumgänglich.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code