AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank - Normalisierung Richtlinie oder Pflicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank - Normalisierung Richtlinie oder Pflicht?

Ein Thema von Grolle · begonnen am 13. Mär 2009 · letzter Beitrag vom 14. Mär 2009
Antwort Antwort
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#1

Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 13. Mär 2009, 18:44
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBDAC
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 ...

  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 13. Mär 2009, 18:47
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 13. Mär 2009, 18:54
Es sind Richtlinien. Niemand wird bei dir vorbei kommen und schauen das du auch ja die höchst Mögliche Normalform hast.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 13. Mär 2009, 19:22
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 13. Mär 2009, 19:33
Hi,

Zitat von mkinzler:
Wenn du die Tabelle richtig Normalisieren würdest hättest du 40 Einträge und nicht 40 Felder.
So war das auch gemeint!
Zitat von freak4fun:
Es sind Richtlinien. Niemand wird bei dir vorbei kommen und schauen das du auch ja die höchst Mögliche Normalform hast.
Glück gehabt
Zitat von alzaimar:
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.
Der String wird ja nur einmal bei der Benutzeranmeldung aus der Datenbank gelesen. Somit habe ich für eine "Session" alle Rechte in einem String und kann die auf die entsprechenden Elemente in der Applikation verteilen. Einen Index werde ich da nicht brauchen. Es werden ja schätzungsweise nur 5-20 Rechtegruppen.

Viele Grüße ...

  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 13. Mär 2009, 19:35
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?
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 13. Mär 2009, 19:41
Hi,

Zitat von Satty67:
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?
Klar, ist auch naheliegend, aber der Wert kann natürlich auch noch wachsen. Wieviel, kann ich jetzt noch nicht sagen.

Viele Grüße ...

  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 14. Mär 2009, 00:07
Zitat von Grolle:
...der Wert kann natürlich auch noch wachsen. Wieviel, kann ich jetzt noch nicht sagen.
Und genau deshalb solltest du Normalisieren, nur dann ist dein System flexibel. Somit schließt sich der Kreis und wir sind wieder bei der ersten Antwort...

Zitat von mkinzler:
Wenn du die Tabelle richtig Normalisieren würdest hättest du 40 Einträge und nicht 40 Felder.
Normalisierung ist wichtig, damit die Datenbank die Möglichkeit erhält die Daten selbstständig korrekt zu halten. Diese Datenintegrität ist das wichtigste Merkmal der Normalisierung und die wichtigste Funktion einer Datenbank. Eine Datenbank enthält die Daten einer Firma, das sind die wichtigsten Informationen, sie halten länger als jede Anwendung. Softwareprogramm sind unwichtig, im Vergleich zu Daten in einer Datenbank. Deshalb ist die Normalisierung dieser Daten oberstes Ziel und immer durchzuführen. Die Überlegung, nicht zu normalisieren ist einfach nur sträflich. Damit schaufelt man sich sein eigenes Grab, weil man nicht flexibel und sicher (Datensicherheit) auf Veränderungen/Neuerungen reagieren kann bzw. eben ein unnötiger Mehraufwand entsteht.

Fazit: Mach es gleich ordentlich.
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 14. Mär 2009, 06:53
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

Viele Grüße ....

  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#10

Re: Datenbank - Normalisierung Richtlinie oder Pflicht?

  Alt 14. Mär 2009, 07:59
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
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz