12.07.2015 Aufrufe

Datenbanken – Entwurf – Normalisierung – Beispiel Kantine

Datenbanken – Entwurf – Normalisierung – Beispiel Kantine

Datenbanken – Entwurf – Normalisierung – Beispiel Kantine

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

H:\public_html\db\5entwurf\7normalisierung\beispiel-kantine.doc<strong>Datenbanken</strong> – <strong>Entwurf</strong> – <strong>Normalisierung</strong> – <strong>Beispiel</strong> <strong>Kantine</strong>Gekürzte Fassung von http://www.access-paradies.de/download/access_beispiele2.phpIn der Praxis ist es ja leider nicht damit getan, irgendwelche Daten in unterschiedliche Tabellen zupacken, erstmal muss man wissen, welche Daten denn in welche Tabelle gehören ... und dasgehorcht logischen „Spielregeln“.Es gibt 5 - 6 sog. <strong>Normalisierung</strong>sformen; in <strong>Datenbanken</strong> sind aber meist nur drei üblich undauch ausreichend. Die sind aber in sehr abstrakter Form verfasst und kein Normalsterblicher kannda was mit anfangen. Ich habe deshalb versucht das, in eine verständliche Form zu bringen, inkl.<strong>Beispiel</strong>e - das ist dann immer noch schwer genug.Erste NormalformWissenschaftliche Aussage: Eine Relation ist in erster Normalform, wenn alle Attributeelementar (atomar) sind.Umgangssprachlich (möglicherweise etwas ungenau): Alle Felder einer Tabelle müssen sosein, dass sie nicht mehr unterteilt werden können.1. <strong>Beispiel</strong>Gibt es in der Tabelle das Feld „Adresse“, so wäre das nicht gut, denn „Adresse“ kann nochunterteilt werden (z.B. in Nachname, Vorname, Straße, PLZ und Ort)2. <strong>Beispiel</strong>Es könnte aber auch bei einer an sich richtigen Benennung von Tabellen-Feldern zu falschenEingaben kommen.• <strong>Beispiel</strong>sweise hat ein Betrieb eine <strong>Kantine</strong> mit Tischen, die nummeriert sind (Tisch 1,Tisch 2, usw.).• An jedem Tisch sitzen Personen des Betriebspersonals, die eine Personal-Nummer haben(Herr Müller hat die Nummer 12, Frau Meier 56, Herr Schulze 36, Frau Lehmann 73)• Jede Person ißt eine andere SpeiseDie Tabelle hat die Felder „Tisch“, „Personalnummer“, „Speise“FalschRichtigTisch PersNr Speise Tisch PersNr Speise1 12, 56 Fleisch, Fleisch 1 12 Fleisch2 36, 73 Fleisch, Fisch 1 56 Fleisch2 36 Fleisch2 73 Fisch


Ergebnis / ZusammenfassungAuf den ersten Blick sieht so eine Ursprungstabelle wie die nachfolgende doch ganz„unverdächtig“ aus (bitte beachten, das ist ja schon gegenüber der allerersten Version eine nachder ersten Normalform veränderte Tabelle, daher Version 2!!).Version 2Tisch TischPlatz PersNr Speise Preis1 Eingang 12 Fleisch 10 €1 Eingang 56 Fleisch 10 €2 Fensterseite 36 Fleisch 10 €2 Fensterseite 73 Fisch 15 €Am Ende der drei <strong>Normalisierung</strong>en kommt ein Gebilde heraus, das kompliziert zu sein scheint.Version 3TischPlatz Tisch Tisch PersNr Speise Speise PreisEingang 1 1 12 Fleisch Fleisch 10 €Fensterseite 2 1 56 Fleisch Fisch 15 €2 36 Fleisch2 73 FischIn der Praxis würde man nun noch an die rechte Tabelle (Speise/Preis) ein Feld Speise-Nr (SpNr)anfügen und in der mittleren Tabelle statt „Speise“ „SpNr“ verwenden:Version 4TischPlatz Tisch Tisch PersNr SpNr SpNr Speise PreisEingang T1 T1 12 S1 S1 Fleisch 10 €Fensterseite T2 T1 56 S1 S2 Fisch 15 €T2 36 S1T2 73 S2Lohnt also dieser Aufwand?Bei näherem Hinsehen erweist sich sehr schnell der Sinn (wir müssen uns nur mal vorstellen, dieursprüngliche Tabelle = Version 1 oder auch Version 2 hätte nicht 4, sondern 2.000 Datensätze):• wir hätten dann zweitausend Mal die Worte Fleisch oder Fisch, Eingang oder Fensterseitegeschrieben, statt der jeweiligen Zahlen „1“ oder „2“ = viel mehr Arbeit und viel mehrSpeicherplatzbedarf in der Datenbank• es ändert sich der Preis der beiden Speisen von 10 € auf 11 € und von 15 € auf 16 €. Wirmüssten somit in der Tabelle 2.000 Preise ändern - bei der Tabelle gemäß <strong>Normalisierung</strong>müssen nur die beiden Preise in der rechten Tabelle geändert werden = enormeArbeitsersparnis plus Sicherheit, weil keine Schreibfehler beim Ändern der 2000 Datensätzevorkommen.• ein ähnliches Ergebnis, wenn sich die Bezeichnungen für „Eingang“ und „Fensterseite“ ändernwürden.• Sortierungen nach „Speise“ oder „Tischplatz“ wären in Version praktisch nicht durchführbar• Die Datenredundanz würde bei den Versionen 1 und 2 praktisch mit jedem Feld, das manzusätzlich in die Tabelle einfügt, zunehmen.• Wollte man die Datenbank ausbauen, weitere Tabellen dann mit der Tabelle gemäß Version 1oder 2 verbinden, so würde man damit auch die Probleme übernehmen und erweitern, die wirmit Version 3 und 4 ausgemerzt haben.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!