Benutzer-Werkzeuge

Webseiten-Werkzeuge


computer:tutorials:sql:normalisierung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte Überarbeitung Beide Seiten der Revision
computer:tutorials:sql:normalisierung [2011/03/03 16:16]
christian [3.Normalform]
computer:tutorials:sql:normalisierung [2013/05/13 07:58]
christian [2.Normalform]
Zeile 36: Zeile 36:
  
 Der oben angezeigt Entwurf erfüllt keine der drei Bedingungen - die Gründe sind: Der oben angezeigt Entwurf erfüllt keine der drei Bedingungen - die Gründe sind:
-  * Es sind Spalten mit gleichen Inhalten vorhanden - es gibt zwei Spalten für Kundennotizen und bestellte Artikel: **KND_Notiz** und **KND_Notiz2**. +  * Es sind Spalten mit gleichen Inhalten vorhanden - es gibt zwei Spalten für Kundennotizen und bestellte Artikel: **KND_Notiz** und **KND_Notiz2** sowie **ART_1** und **ART_2**. 
-  * Es gibt Werte, die sich weiter teilen ​ließen. Das Feld **KND_Name** lässt sich in zwei seperate Felder für den Vor- und Nachnamen des Kunden aufteilen, ferner vereint das Feld **KND_Adresse** neben der Adresse auch die Hausnummer, die PLZ und den Ortnamen. ​Die Spalte ​**Artikel** enthält ​neben der Artikelbezeichnung ​auch die Artikeldetails und Anzahl der erworbenen Artikel. Alle Bestellungspositionen werden mittels Komma getrennt aufgelistet ​- die Einzelpreise ​werden ​auf ähnliche Art und Weise mittels Komma getrennt und aufgelistet.+  * Es gibt Werte, die sich weiter teilen ​lassen. 
 +    * Das Feld **KND_Name** lässt sich in zwei seperate Felder für den Vor- und Nachnamen des Kunden aufteilen 
 +    * Das Feld **KND_Adresse** ​vereint ​neben der Adresse auch die Hausnummer, die PLZ und den Ortnamen. 
 +    ​Es gibt zwei Felder ​**ART_1** und **ART_2** - diese enthalten ​neben der Artikelbezeichnung ​noch Artikeldetails, den Einzelpreis ​und die Anzahl der erworbenen Artikel 
 +      * Da es nur zwei Spalten gibt, können Bestellungen nur zwei Positionen umfassen ​oder alle Posistionen müssen in die beiden Spalten geschrieben ​werden
   * Es gibt doppelte Einträge - die letzten beiden Datensätze sind identisch - hier hat sich der Entwickler wohl vertippt und somit eine unnötige Redundanz erschaffen. Solche Mehrfach-Einträge lassen sich mit dem Verwenden eines **Primärschlüssels** vermeiden.   * Es gibt doppelte Einträge - die letzten beiden Datensätze sind identisch - hier hat sich der Entwickler wohl vertippt und somit eine unnötige Redundanz erschaffen. Solche Mehrfach-Einträge lassen sich mit dem Verwenden eines **Primärschlüssels** vermeiden.
  
Zeile 58: Zeile 62:
   * Erfüllung der 1.Normalform   * Erfüllung der 1.Normalform
   * alle Spalten sind vom Primärschlüssel abhängig   * alle Spalten sind vom Primärschlüssel abhängig
-  * alle Informationen werden an einer Stelle und nicht mehrfach gesichert +  * alle Informationen werden an einer Stelle und nicht mehrfach gesichert ​(//keine Datenredundanz//​)
- +
  
 Diese Bedingungen werden vom aktuellen Entwurf nicht erfüllt: Diese Bedingungen werden vom aktuellen Entwurf nicht erfüllt:
Zeile 68: Zeile 70:
 |3|Theodor|Tester|Test-Solutions AG|Testweg|16|55353|Testort|Offene Rechnung|15.02.2011|nein|1|Thin-Client BAER|1.6 Ghz,​Sound,​VGA,​USB|nein|199.99| |3|Theodor|Tester|Test-Solutions AG|Testweg|16|55353|Testort|Offene Rechnung|15.02.2011|nein|1|Thin-Client BAER|1.6 Ghz,​Sound,​VGA,​USB|nein|199.99|
  
-Es sind Spalten vorhanden, die nicht vom Primärschlüssel **ID** abhängig sind - so sind beispielsweise die Artikel keineswegs vom Primärschlüssel abhängig. +Es sind Spalten vorhanden, die nicht vom Primärschlüssel **ID** ​(//​Kunde//​) ​abhängig sind
-Abgesehen davon, dass die Tabelle sehr unübersichtlich ist, werden Informationen mehrfach definiert (//​beispielsweise die Kunden- und Artikelinformationen//​) und sind somit anfällig für [[anomalie|Anomalien]].+  * BST_Datum 
 +  * BST_Bezahlt 
 +  * ART_Anzahl 
 +  * ART_Bez 
 +  * ART_Details 
 +  * ART_Auslauf 
 +  * ART_Preis 
 + 
 +Abgesehen davon, dass die Tabelle sehr unübersichtlich ist, werden Informationen mehrfach definiert (//​beispielsweise die Kunden- und Artikelinformationen, unnötige Datenredundanz//) und sind somit anfällig für [[anomalie|Anomalien]].
  
 Diese Tabelle muss in mehrere Tabellen aufgeteilt werden - ein korrekter Ansatz wäre: Diese Tabelle muss in mehrere Tabellen aufgeteilt werden - ein korrekter Ansatz wäre:
  
-Tabellen für:+Dedizierte ​Tabellen für:
   * Kunden   * Kunden
   * Artikel   * Artikel
Zeile 101: Zeile 111:
  
 Was wurde geändert? Was wurde geändert?
-  * Es gibt nun seperate Tabellen für Kunden, Artikel, Bestellungen und Bestellungspositionen ​((//​Definition ​von gekauften ​Artikeln//)+  * Es gibt nun seperate Tabellen für Kunden, Artikel, Bestellungen und Bestellungspositionen (//​Definition ​gekaufter ​Artikeln//)
   * Alle Informationen in den Tabellen sind vom Primärschlüssel abhängig   * Alle Informationen in den Tabellen sind vom Primärschlüssel abhängig
  
computer/tutorials/sql/normalisierung.txt · Zuletzt geändert: 2013/05/13 08:01 von christian