Datenbanken (Normalisierung)

Spricht man von einer Datenbank, meint man in der Regel ein Datenbanksystem (DBS). Dieses besteht aus zwei Teilen: Die eigentliche Datenbank (DB) ist eine programmunabhängige strukturierte Sammlung von Daten, die miteinander in Beziehung stehen. Um diese Daten sinnvoll und komfortabel nutzen zu können, wird eine Datenbanksoftware benötigt, das Datenbankmanagementsystem (DBMS).

Ziele einer Datenbank:

- Vereinheitlichung: Daten werden nur einmal erfasst und zentral gespeichert, sodass allen Benutzern eine einheitliche und aktuelle Datenbasis zur Verfügung steht.

- Flexibilität: Die erfassten Daten lassen sich mehrfach und unterschiedlich nutzen und auswerten.

- Programmunabhängigkeit der Daten: Wird durch die Trennung von DB und DBMS erreicht.

- Fehlerfreiheit: Datenbankfehler, die z.B. durch einen Programm- oder Computerabsturz entstehen, sollen automatisch korrigiert werden.

-Redundanz-Vermeidung: Unter Redundanz versteht man eine doppelte oder mehrfache Speicherung gleicher Daten. Dies führt zu Speicherplatzverschwendung, erhöht die Verarbeitungszeiten und kann zu widersprüchlichen Daten führen.

Folgende Kriterien für eine funktionierende Datenbank müssen erfüllt sein:

Datenkonsistenz: Jeder Datensatz muss eindeutig identifizierbar, also konsistent sein, z.B. werden Kundennummern nur ein einziges Mal vergeben. Wenn der Kunde nicht mehr existiert,  wird die Nummer nicht erneut verwendet. Somit sind konsistente Datensätze eindeutig unterscheidbar.
Beispiel: Selbst bei dem unwahrscheinlichen Fall, dass zwei Kunden dieselbe Adresse haben, kann mindestens durch die einmalig vergebene Kundennummer zwischen ihnen unterschieden werden.

Redundanzfreiheit: Sämtliche Daten werden nur einmal erfasst und gespeichert (=sie sind redundanzfrei). So treten bei Änderungen keine Probleme auf, da sie zentral abgelegt sind und nur ein Mal geändert werden müssen.
Beispiel: Ändert sich bei einem Kunden die Adresse, muss diese nicht für jede seiner Bestellungen erfasst und geändert werden, sondern nur ein Mal zentral in der Kundendatenbank, da den Bestellungen die eindeutige Kundennummer zugeordnet ist. Somit dient diese Nummer als Schlüssel.


Normalformen
1. Normalform: Jedes Datenfeld einer Tabelle enthält genau einen Eintrag, diese sind spaltenweise sortiert, z.B. nach Nachname, Straße, PLZ, Ort, Produkt und Datum. In der Tabelle der 1. NF sind alle Informationen gelistet, daher ist sie nicht konsistent und nicht redundanzfrei.
Beispiel: Der Kunde Winkler hat Visitenkarten und eine Website in Auftrag gegeben. Da ja jedes Datenfeld nur einen Eintrag enthält, ist der Kunde zwei Mal in der Auftragstabelle aufgeführt, ein Mal mit dem Produkt Website mit der Auftragsnummer 1 und ein Mal mit dem Produkt Visitenkarten mit der Auftragsnummer 5. Diese Nummern verweisen auf den Kunden und auf das Produkt.

2. Normalform: Nun wird die Tabelle in mehrere Tabellen zerlegt und zwar so, dass jeder Eintrag der entstandenen Tabellen einen eigenen Schlüssel erhält. Dieser Schlüssel wird dann anstatt des Produktes in der Tabelle der 1. NF aufgeführt. So befindet sich die Auftragstabelle in der 2. NF, da sie sich zum einen in der 1. NF befindet und zum anderen alle Datenfelder von einem Schlüssel funktional abhängig sind.
Beispiel: Die Produkte werden in einer eigenen Tabelle aufgeführt und jedes Produkt erhält eine Produktnummer (Schlüssel). So wird in der Auftragstabelle nun nicht das Produkt mit Namen angegeben, sondern der Schlüssel. Somit ist der Kunde Winkler zwar immernoch zwei Mal in der Auftragstabelle aufgeführt, jedoch ein Mal mit der Produktnummer 1 für die Website und ein Mal mit der Produktnummer 2 für Visitenkarten. Die Produktnummer 2 kann in der Tabelle natürlich ebenfalls für den Kunden Mayer vorkommen, der ebenfalls Visitenkarten in Auftrag gegeben hat.

3. Normalform: In dieser letzten Stufe werden die verbliebenen Redundanzen beseitigt. Die endgültige Tabelle befindet sich dann in der 3. NF, wenn sie sich zum einen in der 2. NF befindet und zum anderen alle Datenfelder, die keine Schlüssel sind (im Bsp. das Auftragsdatum), nicht funktional abhängig sind.
Beispiel: Nun sind die Kundenangaben in der Auftragstabelle funktional abhängig, also zum Kunden Winkler gehört genau eine Straße, eine PLZ und ein Ort. Das muss nun behoben werden, da ein weiterer Kunde namens Winkler hinzukommen kann und sich dadurch die Adresse anhand des Namens nicht mehr eindeutig ermitteln ließe. Deshalb wird eine weitere Tabelle mit neuem Schlüssel erstellt. Hier befinden sich die Daten der Kunden, die spaltenweise nach Name, Straße, PLZ und Ort aufgeführt sind. Das Wichtigste ist nun, dass jeder Kunde eine Kundennummer (Schlüssel) erhält, der in der Auftragstabelle angegeben werden kann. Diese Tabelle wird kann nun in die 3. NF gebracht werden: Eine Spalte gibt die Auftragsnummer an, eine die zugehörige Produktnummer, eine Spalte führt die Nummer des zugehörigen Kunden auf und eine weitere Spalte kann nun das Datum des Auftrags enthalten.

Nun ist die Normalisierung in die 3. NF abgeschlossen, alle Daten der 3 Tabellen sind redundanzfrei und konsistent.

Status: 
Von Moderator geprüft
4
Eigene Bewertung: Keines Durchschnitt: 4 (1 Stimme )

Kommentare

Super, danke!!

Super, danke!!

Datenbanken

Super, vielen Dank!

Habe ich auch so gelernt, ist eine gute Zusammenfassung!

4. und 5. Normalform?

Im Unterricht und im Kompendium wurden die 4. und 5. Normalform nie erwähnt, lernt ihr die aber auch mit?

Mir kommt das mit den Normalformen so wenig vor im vergleich zu den anderen Themen.

Naja, wenn man z.B. in der

Naja, wenn man z.B. in der Aufgabe eine große Tabelle in mehrere kleinere einordnen muss, wäre es doch schon wieder zeitaufwendiger...

Unterschied 2. NF und 3. NF

vielleicht kann mir ja nochmal jmd den Unterschied zwischen der 2. und der 3. NF erklären?

Mache ich nicht bei der dritten genau das mit den restlichen Attributen, was ich bei 2. schon mit einem Attribut gemacht habe?! (neue Tabelle mit eindeutig zuordnbarem Schlüssel des Attributs)

Wie gehe ich denn vor wenn zB die Aufgabenstellung heißt bringe folgende Tabelle in die 3. NF?

(wie hier http://www.mediencommunity.de/content/datenbanken-0)

Muss ich jeden einzelnen Schritt durchfürhern (also zuerst 1. NF, dann 2. NF, dann 3. NF..)

Oder kann man gleich das "fertige Endprodukt" - also die Tabelle in der 3. NF hinschreiben?

 

Danke schonmal für eure Antworten :)

VG

 

Zum Unterschied zwischen der

Zum Unterschied zwischen der 2. und der 3. Normalform

In der 2. NF darf ein Nichtschlüsselattribut von einem anderen Nichtschlüsselattribut abhängen. Diese Abhängigkeit führt aber immer zu Redundanz und damit möglicherweise zu Inkonsistenz.

In dem verlinkten Beispiel liegt keine Normalform vor, weil die Forderung der 1.NF nach atomaren Werten nicht erfüllt ist (Name und Vorname in einer einzigen Zelle).

Ich würde bei der Normalisierung schon Schritt für Schritt vorgehen.

zur 1.NF: Namen und Vornamen trennen (Tabelle atomarisieren), Ersatzschlüssel (Personalnummer) einführen, um einen Verbundschlüssel zu vermeiden (Familienname als PS ist nicht eindeutig); neuer Primärschlüssel ist dann die Personalnummer

zur 2.NF: wenn der Primärschlüssel der 1. NF nur aus einem Attribut besteht, liegt automatisch die 2.NF vor.

zur 3. NF: aus der Abteilung folgen Telefonnummer und Mailadresse - essind also Nichtschlüsselattribute nicht nur vom Primärschlüssel, sondern auch von einem Nichtschlüsselattribut abhängig. Es wird zunächst ein weiterer Ersatzschlüssel, nämlich die Abteilungsnummer, eingefügt. Dann bekommt die Abteilung eine neue Tabelle, in der MA-Tabelle verbleibt lediglich duie Abteilungsnummer als Fremdschlüssel.

Anmerkung: wenn man auf dem Weg zur ersten NF keinen Ersatzschlüssel einfügt, wird der Primärschlüssel aus Name und Abteilung gebildet. Dieser Verbundschlüssel erfüllt nicht die Bedingungen der 2.NF (Nichtschlüsselattribute hängen nur von einem Teil des Primärschlüssels ab), er wird dann "verhackstückt" - das heißt, jedes der beiden Attribute des Primärschlüssels bekommt eine eigene Tabelle. Hier sollten dann allerdings Ersdatzschlüssel (Personalnummer und Abteilungsnummer eingefügt werden). Zwischen der Abteilungsnumer und der Personalnummer besteht eine 1:n-Beziehung (ein MA gehört zu einer Abteilung, zu einer Abteilung können mehrere MA gehören), deshalb wird der PS der Abteilungstabelle als Fremdschlüssel in die MA-Tabelle eingetragen. Damit existieren in der 2. NF keine transitiven Abhängigkeiten, und die Bedingungen der 3. NF sind erfüllt.

Hier die vollständig normalisierte DB in einer Excel-Tabelle und als Access-Datenbank.

Hallo!   kann mir einer von

Hallo!

 

kann mir einer von euch sagen, aus welchen Gründen ich nicht auf den obigen Link zugreifen darf?

 http://www.mediencommunity.de/content/datenbanken-0

welche Rechte muss ich beantragen?

 

Vielen Dank im Voraus,

deniz

Beitrag aus letzter Lerngruppe übernommen

Hallo Deniz,

der Beitrag war bislang nur in der alten Lerngruppe zur Sommerprüfung enthalten.

Habe ihn jetzt auch in diese übernommen. Damit sollte es jeine Rechteprobleme mehr geben.

Gruß Thomas Hagenhofer

Hey.

Hallöchen,

mir ist mal wieder überhaupt nicht ganz klar, was dieses Thema mit Gestaltung zu tun hat.
Im Prinzip ist das gerade (mal wieder) reines Auswendiglernen von irgendwelchem lückenfüllendem Kram.
 

Zu meiner Frage:
Lernt ihr eigentlich neben der prinzipiellen Erstellung einer Datenbank auch die Befehle für Abfragen, etc.?
Ich weigere mich gerade ein wenig das zu verinnerlichen, weil ich einfach nicht kapiere, was das mit Gestaltung zu tun haben soll. :/
 

 

Was zur Struktur der Datenbank noch dazugehört sind wohl die einzelnen Beziehungen.

Relationen:

1:n

Einem Datensatz in Tabelle A sind mehrere passende Datensätze in Tabelle B zugeordnet.
Aber einem Datensatz in Tabelle B ist nie mehr als ein Datensatz in Tabelle A zugeordnet.

 

n:n

Jedem Datensatz in Tabelle A sind mehrere passende Datensätze in Tabelle B zugeordnet und umgekehrt.

 

1:1

Jedem Datensatz in Tabelle A ist nur ein passender Datensatz in Tabelle B zugeordnet und umgekehrt.

Der Prüfungsbereich nennt

Der Prüfungsbereich nennt sich Konzeption & Gestaltung. Eine Datenbank muss man ja auch erst konzeptioniert und entwickelt werden bevor sie mit Daten gefüllt werden kann. Und warum viel auswendig lernen? Ich denke eher, dass da eine praktische Aufgabe dran kommt. Man bekommt eine Tabelle vorgegeben und muss sie z.B. in die 3. NF bringen. Deswegen steht ja auch Normalisierung in Klammern bei dem Thema dabei. Und deshalb glaube ich, dass da weniger die Relationen oder SQL-Abfragen auftauchen werden.

Normaliesierung

Hier wird schrittweise erklärt wie man bei einer Normaliesierung vorgeht

http://www.tinohempel.de/info/info/datenbank/normalisierung.htm

????

Irgendwie verstehe ich da nur Bahnhof =(  Das wird wahrscheinlich eine streichaufgabe.

Wenn du deine Schulter bewegst, dann seh ich das!

@ eengell  Um eine Tabelle in

eengell 

Um eine Tabelle in die dritte Normalform zu bringen sollte man die Relationen aber kennen um die Bedingungen einhalten zu können. ;-)
Und das mit den SQL-Abfragen war mir ja fast klar – ich wollte nur andere Meinungen hören.
Letztendlich ist das der allgemeine Teil. Ich glaube ohnehin nicht, dass die Fragen hier besonders tiefgründig sein werden.
 

 

xanadu, im Prinzip ist das doch alles gar nicht so schwer. 

 

Es gibt 3 Formen der Normalisierung. Jede hat ihre eigenen Bedingungen.
Eigentlich musst du jetzt nur eine Bedingung nach der anderen abarbeiten um zu deiner Normalisierung zu kommen.

D.h. du bekommst einen Datensatz mit Informationen den du dir erstmal sortierst.
Du sortierst in zwei Gruppen: Die eine Gruppe sind Daten, die nur ein einziges Mal individuell auftreten (Z.B. Name, Geburtstag, Telefonnummer), die andere Gruppe sind Daten die mehrfach auftreten (Z.B. Postleitzahlen oder Bankleitzahlen). Alles was du doppelt hast – was also allgemeingültige Informationen beinhaltet, kannst du aus der Tabelle aussondern und über ein Schlüsselfeld mit einer neuen Tabelle verbinden. Schlüsselfelder sollten sinnvoller Weise übrigens immer Zahlen sein (deshalb legt man z.B. auch Kunden- oder Personalnummern in Tabellen an – das sind auch Schlüselfelder... zu jeder Kunden- oder Personalnummer gehört genau ein Datensatz! >> Datenkonsistenz). Das erleichtert die Zuordnung. 

Für das Beispiel mit der PLZ würde das heißen: In deiner Haupttabelle steht nachwievor die PLZ (als verknüpftes Schlüsselfeld) – aber kein Wohnort. Diesen sonderst du nämlich in eine neue Tabelle aus. Deine neue Tabelle nennst du z.B. T_Ort. Dein Schlüsselfeld wäre die PLZ und die zugehörigen Daten sind die Wohnorte. D.h. immer wenn jemand im Hauptfeld die PLZ eingibt, ist der Wohnort automatisch zuordbar. 
Die beiden Tabellen würden dann mit einer 1:n Beziehung verbunden werden. Jede PLZ hat nämlich GENAU EINEN Wohnort. Somit vermeidest du Redundanzen. 

So verfährst du mit allen Daten. Immer erst überlegen und sortieren. Dann in Relationen setzen. 

 

Hilft dir das weiter...? 

 

"programmunabhängig ??"

Hi,

ich hab auf diesem Gebiet nicht all zu viel Ahnung, deshalb bin ich etwas auf eure Hilfe angewiesen.

Ich hab ein Problem mit dem ersten Satz oben:
"DBS [...] Dieses besteht aus zwei Teilen: Die eigentliche Datenbank (DB) und eine programmunabhängige strukturierte Sammlung von Daten, die miteinander in Beziehung stehen."

Sowie ich das verstehe besteht ne Datenbank aus der DB (Datensammlung) und DBMS (Managementsystem), was ja nach obiger Beschreibung eine sogenannte programmunabhängige strukturierte Sammlung von Daten ist.

Ich verstehe hier nicht den Begriff "programmunabhängig"... d.h wenn ich doch ein Managementsystem, also ne Software oder sowas brauch sind die Daten doch nicht mehr "programmunabhängig", oder ??

Bin mir nicht sicher ob ich mich nicht Gedanklich verrrant habe, über ne Antwort würde ich mich freuen.

VG

 

Fehler

Hi Plisa,

ich glaube, es muss heißen:

"DBS [...] Dieses besteht aus zwei Teilen: Die eigentliche Datenbank (DB) ist eine programmunabhängige strukturierte Sammlung von Daten, die miteinander in Beziehung stehen."

Sonst macht es meiner Meinung nach keinen Sinn...

LG

 

Fehler

Hallo zusammen,

sehe ich genauso. Ich korrigiere und weise wieder darauf hin, das darf jeder angemeldete Nutzer. Die Versionen werden gespeichert, es kann also nichts kaputt gehen. ;-)

Gruß Thomas Hagenhofer