Frage Zu Normalformen
steckl
- datenbank
Hi,
ich hatte gerade eine Diskussion über Normalformen.
Folgende Ausgangssituation:
Ich habe eine Tabelle Milchproduktion mit den Spalten Kuh, Milchmenge, Datum datum und Uhrzeit. Für die Verknüpfung mit Verkauf wird ein Fremdschlüssel namens verk_nr hinzugefügt, und der Einfachheit halber noch ein Primärschlüssel prod_nr.
Dann noch eine Tabelle Verkauf mit verk_nr, Verkaufsdatum, Gesamtmilchmenge, Preis, Umsatz.
Die Tabelle Verkauf ist nicht in der 3. Normalform, weil man ja den Umsatz über Gesamtmilchmenge und Preis berechnen könnte.
Was wäre aber wenn der Umsatz nicht in der Tabelle stehen würde. Wäre die Tabelle dann 3. Normalform, weil kein anderer Wert transitiv abhängig von einem nicht-Schlüsselkandidaten ist? Oder wäre es die 2. Normalform, weil man die Gesamtmilchmenge über die Milchmenge der einzelnen Produktionen an dem Tag berechnen könnte und somit Redundanz in der Datenbank (nicht aber in der Tabelle hat)?
Also wir waren uns nicht einig, ob das mit den Normalformen immer nur auf eine Tabelle bezogen ist, oder auf die ganze Datenbank.
mfG,
steckl
Also wir waren uns nicht einig, ob das mit den Normalformen immer nur auf eine Tabelle bezogen ist, oder auf die ganze Datenbank.
Auf die Datenbank. Es kommt ja immer drauf an ob Daten noch irgendwo anders abhängig gespeichert sind.
In deinem Fall (mit dem berechenbaren Feld) würde ich das nicht auf eine Normalform beziehen, denn bei den Normalformen gehts auch um Schlüsselbeziehungen, die da eine Rolle spielen.
Falls du übrigens überlegst ob du den Umsatz wegen der Normalformen rausmachen solltest, ein Tip: wenn du ihn brauchst, lass ihn drin. Zum Beispiel wenn du alle Umsätze größer x suchen willst. Dann ist das über einen Index schöner als jeden Wert bei der Suche zu berechnen.
Wenn du sowas nicht brauchst, kannst du das Feld ja rausmachen.
Hi,
Also wir waren uns nicht einig, ob das mit den Normalformen immer nur auf eine Tabelle bezogen ist, oder auf die ganze Datenbank.
Auf die Datenbank. Es kommt ja immer drauf an ob Daten noch irgendwo anders abhängig gespeichert sind.
Ich war mir da nicht sicher, weil bei Wikipedia bei der Erklärung von 1. NF und 2. NF nur die Rede von eine "Entität ...". Und bei der 3. NF steht auch nichts, was darauf hindeutet, dass es sich auf die ganze DB bezieht.
Falls du übrigens überlegst ob du den Umsatz wegen der Normalformen rausmachen solltest, ein Tip: wenn du ihn brauchst, lass ihn drin. Zum Beispiel wenn du alle Umsätze größer x suchen willst. Dann ist das über einen Index schöner als jeden Wert bei der Suche zu berechnen.
Wenn du sowas nicht brauchst, kannst du das Feld ja rausmachen.
Ich will die Datenbank nicht verbessern. Es geht um eine alte Klausur-Aufgabe. Dort waren 4 Entitäten mit ihren Eigenschaften gegeben und man musste dazu zuerst ein ER-Diagramm zeichnen. Anschließend war eine Frage, was die höchste Normalform (nur bis zur 3.) ist, in der sich die einzelnen Entitäten befinden.
Mit Umsatz ist es klar, dass es bei Verkauf nicht die 3. sein kann, aber ohne Umsatz bin ich mir (immer noch) nicht sicher.
mfG,
steckl