![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBDAC
Datenbank - Normalisierung Richtlinie oder Pflicht?
Hallo,
ich habe mal eine grundsätzliche Frage und würde gerne hören wie Ihr das handhabt! Ich habe in meiner neuen Anwendung eine Rechtesystem. Diese besteht aus einem Formular, ~ 40 Checkboxen wo man die Rechte entsprechend zuweisen kann. Soweit so gut. In der Datenbank wird der Wert als string gespeichert (also 40x 0 oder 1 hintereinander). Laut erster Normalform müsste ich aber 40 Felder mit boolean-Werten speichern (atomarer Wertebereich), was aber beim verarbeiten ungemein aufwändiger wäre. Sind Normalformen verpflichtend einzuhalten oder sind das eher "Richtlinien"? Viele Grüße ... |
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Wenn du die Tabelle richtig Normalisieren würdest hättest du 40 Einträge und nicht 40 Felder. Ich würde das aber nicht als aufwendiger ansehen, da du den string ja auch zerlegen musst.
Die von dir gewählte Lösung sieht man aber recht oft. In der Regel ist Normalisierung aber sinnvoll, wobei von fall zu Fall aber entschieden werden muss, welcher Normalisierungsgrad ( bis zu welcher Normalform) sinnvoll ist. |
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Es sind Richtlinien. Niemand wird bei dir vorbei kommen und schauen das du auch ja die höchst Mögliche Normalform hast. :mrgreen:
|
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Eine Datenbank muss immer so konzipiert sein, das sie für den Aufgabenbereich optimal geeignet ist. Eine Verwaltungs-DB wird immer an der 3.NF orientiert sein, wobei man nicht jedes Detail durchnormalisieren muss. Ein Datawarehouse dagegen bricht mit so ziemlich jeder Konvention hinsichtlich des Normalisierens, hier geht es nur um Geschwindigkeit bei der Auswertung.
Bei deinem Design sehe ich große Probleme bei der Auswertung und Filterung. Stringoperationen eignen sich nicht dazu, Daten effizient zu filtern. Auch wirst du auf deine kodierte Information keinen Index setzen können, um Abfragen zu beschleunigen. Wenn Du jedoch eh nur wenige Einträge hast, ist das wurscht. Aber dann kannst Du auch eine Stringlist nehmen und deine Daten als Textdatei ablegen. |
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Hi,
Zitat:
Zitat:
Zitat:
Viele Grüße ... |
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Blöde Laienfrage:
Wenn schon komprimiert auf einen Wert, wäre es dann nicht einfacher, die 40 Bool-Werte in einem 64bit Integer zu speichern und die Bits abzufragen? |
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Hi,
Zitat:
Viele Grüße ... |
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Zitat:
Zitat:
Fazit: Mach es gleich ordentlich. |
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Hi,
@omata Die Datenbank ist ja bis auf diesen einen Punkt normalisiert. Der String ist für die Lösung mit der ich am flexibelsten bin, aber eben nicht ganz im Sinne der 1 Normalform :angel2: Viele Grüße .... |
Re: Datenbank - Normalisierung Richtlinie oder Pflicht?
Also ich kenne Systeme, die sind zwar normalisiert, in der DB werden jedoch keine Relationsinformationen gepflegt. Das heisst, obwohl ein Feld eigentlich ein Fremdschlüssel ist, kann man alles dort eintragen - auch wenn es in der eigentlich referenzierten Tabelle keinen Eintrag zu dem Schlüsselwert gibt. Hintergrund ist Performance, bzw. konkret das Vermeiden von (sehr kurzen, aber sehr häufigen) Table-Locks wenn eine der ansonsten referenzierten Tabelle aktualisiert wird.
Genauso kann man aus Performancegründen auf eine Normalisierung verzichten, wenn es wirklich notwendig ist. Aus Erfahrung kann ich jedoch auch sagen: Wenn es nicht durch besondere Gründe notwendig ist, auf die Normalisierung zu verzichten, gibt es keinen Grund es NICHT zu tun :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 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 by Thomas Breitkreuz