Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
faecher:informatik:oberstufe:datenbanken:normalisierung:2_normalform:start [25.11.2020 19:29] – [Grundsatz: Eine Entität - eine Tabelle] sbel | faecher:informatik:oberstufe:datenbanken:normalisierung:2_normalform:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== 2. Normalform (2NF) ====== | ||
- | <WRAP center important 90%> | ||
- | Ein Relationstyp (Tabelle) befindet sich in der zweiten Normalform (2NF), wenn die erste Normalform erfüllt ist und für jeden Primärschlüssel eindeutige Attributwerte vorhanden sind. | ||
- | </ | ||
- | Die 2. Normalform entfernt Redundanzen: | ||
- | |||
- | {{ : | ||
- | |||
- | In der Tabelle in der 1NF tauchen zahlreiche Attributwerte mehrfach auf, z.B. Die Namen der Doktoren oder Hersteller. | ||
- | ==== Grundsatz: Eine Entität - eine Tabelle ==== | ||
- | |||
- | Wenn man den **Grundsatz** -- den unser Sekretär mit seinem an die Tabellenkalkulation angelehnten Vorgehen bereits verletzt hat, den wir aber eigentlich kennen -- befolgt: **Jede Entität bekommt ihre eigene Relation, die Attribute sind die Tabellenspalten**((Erinnerung: | ||
- | |||
- | Hier sieht man nochmal, dass die **Normalisierung beim Design der Datenbank stattfinden sollte**, nicht wie wir das hier machen, nachdem man bereits ein schlechtes Design implementiert hat. | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A1) === | ||
- | |||
- | * Überführe die Inhalte der " | ||
- | - Lege die drei Tabellen mit den entsprechenden Attributen an, jedoch zunächst ohne Surrogatschlüssel (keine '' | ||
- | - Überführe die Inhalte aus der Universaltabelle in die jeweilige Tabelle, indem du das Ergebnis einer Abfrage direkt an eine INSERT INTO Statement weitergibst: | ||
- | - Wenn alle Werte überführt sind, fügst du jeder Tabelle noch eine Feld '' | ||
- | * Zwei Tabellenspalten der Universaltabelle können den Entitätstabellen nicht sinnvoll zugeordet werden - bei einer geht keine wesentliche Information verloren, wenn man sie weglässt, bei der anderen schon. Welche Attribute sind das? Lasse beide Attribute vorerst einfach aus - wir kommen später darauf zurück. | ||
- | * Fügen nun den Datensatz für Frau Bohrgut ein aus den [[ faecher: | ||
- | |||
- | |||
- | ++++ Lösungshinweise | | ||
- | ++ Tabellenstrukturen: | ||
- | |||
- | {{ : | ||
- | |||
- | ++ | ||
- | |||
- | ++ SQL Befehle: | | ||
- | <code sql> | ||
- | INSERT INTO doktoren | ||
- | SELECT DISTINCT name, vorname, strasse, plz, wohnort, telefon, fax | ||
- | FROM `zahnarztbedarf` | ||
- | |||
- | INSERT INTO hersteller | ||
- | SELECT DISTINCT firma, f_strasse, f_ort, f_plz | ||
- | FROM `zahnarztbedarf` | ||
- | </ | ||
- | |||
- | ++ | ||
- | ++++ |