Normalisierung bei Datenbanken

mihe7

Top Contributor
Das Relationenschema besteht aus 5 Attributen. Davon ist das vierte Attribut ein Tupel und somit nicht atomar. Ein Tupel gehört zu einer Relation, daher könntest Du m. E. in der 1. NF schon mehrere Tabellen haben bzw. haben müssen (das kann aber vom Prof. anders gesehen werden).

In der 2. NF käme dann die weitere Aufteilung auf Tabellen, kann ich bei Dir nicht erkennen. Und, wenn ich es richtig sehe, liegt der Spaß dann auch schon in der 3. NF vor, weil es keine transitiven Abhängigkeiten gibt.

Die funktionalen Abhängigkeiten sind auch nicht vollständig angegeben.
 

Wirtschaftsinformatiker

Bekanntes Mitglied
Prüfer und Fach sind noch Duplikate vorhanden, die Attribute sind noch nicht normalisiert.

Das Relationenschema besteht aus 5 Attributen. Davon ist das vierte Attribut ein Tupel und somit nicht atomar. Ein Tupel gehört zu einer Relation, daher könntest Du m. E. in der 1. NF schon mehrere Tabellen haben bzw. haben müssen (das kann aber vom Prof. anders gesehen werden).

In der 2. NF käme dann die weitere Aufteilung auf Tabellen, kann ich bei Dir nicht erkennen. Und, wenn ich es richtig sehe, liegt der Spaß dann auch schon in der 3. NF vor, weil es keine transitiven Abhängigkeiten gibt.

Die funktionalen Abhängigkeiten sind auch nicht vollständig angegeben.
Screenshot_20220608-200136_Word.jpgScreenshot_20220608-200144_Word.jpgScreenshot_20220608-200148_Word.jpg
Ist jetzt richtig?
 

mihe7

Top Contributor
Nein. In der letzten Tabelle stimmt z. B. 6,3,123 nicht. Das wäre 6,1,123 und damit wäre FNR von Student-MATRNR funktional abhängig. Da Student-MATRNR hier kein Schlüssel ist, wird somit die 2. NF verletzt.

Nachtrag: außerdem lässt Du die bestehenden funktionalen Abhängigkeiten bei den Normalformen teilweise unter den Tisch fallen.
 

Wirtschaftsinformatiker

Bekanntes Mitglied
Nein. In der letzten Tabelle stimmt z. B. 6,3,123 nicht. Das wäre 6,1,123 und damit wäre FNR von Student-MATRNR funktional abhängig. Da Student-MATRNR hier kein Schlüssel ist, wird somit die 2. NF verletzt.

Nachtrag: außerdem lässt Du die bestehenden funktionalen Abhängigkeiten bei den Normalformen teilweise unter den Tisch fallen.
Ich habe alle funktionale Abhängigkeiten geschrieben, soweit ich verstanden habe. Was fehlt noch?
 

mihe7

Top Contributor
Du hast z. B. bei der 1. NF nur eine FA angegeben, andere sind hier nicht aufgelistet. Das kann doch nicht korrekt sein, wenn Du weiter unten beispielsweise FNR -> {Fakultätsname, Dekan} nennst.

Dann könnte man in Erwägung ziehen, dass unter anderem die Note nicht nur von der PNR abhängig sein könnte. Zumindest sehe ich den Extensionen nicht, dass ein Student in einem Fach bzw. bei einem Prüfer wiederholt eine Prüfung abgelegt hätte. Du weißt nicht genau, was im Prüfungsgeschehen abgebildet wird, z. B. ob es die Möglichkeit zur Wiederholung überhaupt gibt. Da gibt es also Interpretationsspielraum und auf den würde ich in einer kurzen Erklärung eingehen, warum Du die Existenz solcher Abhängigkeiten befürwortest oder bestreitest. Aber ich weiß natürlich nicht, was von Euch verlangt wird.
 

Wuast

Bekanntes Mitglied
Hallo zusammen,
ich häng hier mal eben kurz dran, weil ich nicht glaube, dass ich dafür einen neuen Thread eröffnen muss.

Habe ich es richtig verstanden, dass idR zuerst die Modellierung (z.B. in einem ERD) erfolgt und anschließend der Normalisierungsprozess stattfindet?
Gibt es Situationen, wo ggf. ein Abweichen davon sinnvoll scheint?
 

mihe7

Top Contributor
dass idR zuerst die Modellierung (z.B. in einem ERD) erfolgt und anschließend der Normalisierungsprozess stattfindet
Um ein Schema normalisieren zu können, muss es erst einmal ein Schema geben. Praktisch läuft das aber nicht so ab, dass man erst einmal ein völlig denormalisiertes Schema erstellt, das man dann aufgabenmäßig in die 1., 2. und 3. NF überführt.

Ich kann natürlich nur für mich sprechen, aber die Normalisierung macht man doch eher automatisch bis zu einem gewissen Grad schon im Kopf und man muss sich eher dazu zwingen, zu denormalisieren, weil sich dagegen sofort etwas in einem sperrt 😀 Umgekehrt wird man auf diese Weise (Kopf) oft keine perfekte Normalisierung erreichen.

Gibt es Situationen, wo ggf. ein Abweichen davon sinnvoll scheint?
Vom Vorgehen oder vom Normalisieren? Das Vorgehen habe ich ja oben schon angerissen, was das Normalisieren betrifft: sicher, z. B. aus Performancegründen.
 

Wuast

Bekanntes Mitglied
Um ein Schema normalisieren zu können, muss es erst einmal ein Schema geben. Praktisch läuft das aber nicht so ab, dass man erst einmal ein völlig denormalisiertes Schema erstellt, das man dann aufgabenmäßig in die 1., 2. und 3. NF überführt.

Ich kann natürlich nur für mich sprechen, aber die Normalisierung macht man doch eher automatisch bis zu einem gewissen Grad schon im Kopf und man muss sich eher dazu zwingen, zu denormalisieren, weil sich dagegen sofort etwas in einem sperrt 😀 Umgekehrt wird man auf diese Weise (Kopf) oft keine perfekte Normalisierung erreichen.


Vom Vorgehen oder vom Normalisieren? Das Vorgehen habe ich ja oben schon angerissen, was das Normalisieren betrifft: sicher, z. B. aus Performancegründen.
Das glaube ich gerne und ist im Grunde ja auch (von der Theorie her) nicht so schwierig. Kann ich aber in meiner Abgabe so nicht schreiben. Wir haben da eine Vorgabe und sollen dann ein ERD und eine Normalisierung ausarbeiten. Unsere Lektüre sieht als Standardweg vor, erst das ERD zu modellieren. Die Aufgabenstellung sagt normalisieren und modellieren, was aber ja auch ein "Überprüfen" sein kann, ob das aufgefallen ist oder nur stumpf von a - z abgearbeitet wird. Mich hatte es etwas stutzig gemacht, deswegen wollte ich mal eure Meinung hören.

Auch gut zu wissen. Betrifft mich aber erstmal nicht (zum Glück) :D
 

LimDul

Top Contributor
Das glaube ich gerne und ist im Grunde ja auch (von der Theorie her) nicht so schwierig. Kann ich aber in meiner Abgabe so nicht schreiben. Wir haben da eine Vorgabe und sollen dann ein ERD und eine Normalisierung ausarbeiten. Unsere Lektüre sieht als Standardweg vor, erst das ERD zu modellieren. Die Aufgabenstellung sagt normalisieren und modellieren, was aber ja auch ein "Überprüfen" sein kann, ob das aufgefallen ist oder nur stumpf von a - z abgearbeitet wird. Mich hatte es etwas stutzig gemacht, deswegen wollte ich mal eure Meinung hören.
Im Endeffekt kommt es drauf an, wo kommt das Datenmodell initial her. Wenn ich eine textuelle Beschreibung habe, dann modelliere ich es direkt nach an der 3ten Normalform. Da ist es unsinning (außer im akademischen Kontext um es zu lernen) es erst wirklich wortgetreu umzusetzen und dann zu normalisieren. Wenn steht "Eine Rechnung besteht aus Vorname, Nachname des Kunden, Rechnungspositionen etc. wird man der Praxis nicht eine Enität Rechnung modellieren mit einem Attribut VORNAME_KUNDE - sondern direkt eine Entität Kunde. In der Uni macht man es übungswiese meist aber erstmal um es überhaupt zu lernen & zu verstehen

Anders sieht es in der Praxis aber aus, wenn man ein altes Datenmodell bekommt - ich bin aktuell in einem Projekt, wo wir uns das Datenmodell angesehen haben und das verletzt die NF massiv - das stammt aber aus uralten Zeiten (Es gibt noch Felder für die 4-stellige PLZ). Da muss man wirklich hingehen und schauen, wo da überall die NF verletzt ist.
 

Dukel

Top Contributor
BTW: Ich verletze die NF "ständig", einfach weil die Performance sonst in den Keller gehen würde.
Man muss hier unterscheiden. Das eine (hier) ist zum lernern und das andere (dein Ständig) die Praxis.
Es ist sinnvoll die normalisierung zu lernen aber auch zu wissen, wann nutze ich diese und wann (und vorallem warum) nicht.
 

mihe7

Top Contributor
@Dukel, da hast Du vollkommen recht, die Anmerkung war allerdings nicht für den TO gedacht, sondern lediglich eine Anmerkung für @LimDul als Reaktion auf

"ich bin aktuell in einem Projekt, wo wir uns das Datenmodell angesehen haben und das verletzt die NF massiv - das stammt aber aus uralten Zeiten (Es gibt noch Felder für die 4-stellige PLZ). Da muss man wirklich hingehen und schauen, wo da überall die NF verletzt ist."

😀
 

Neue Themen


Oben