Archiv verlassen und diese Seite im Standarddesign anzeigen : 1. Normalform?
Hallo Jungs. ( und Maedels )
Vielleicht kann mir jemand von euch erklaeren was man genau unter der ersten Normalform versteht. Ich werde einfaci nicht schlau daraus:
Ein Relationstyp befindet sich in der 1. NF wenn alle Attribute maximal einen Wert haben. -> atomarer Wert
Was heisst das schon wieder?
Also ich versteh das so ( und wahrscheinlich voellig falsch): In einer Tabelle kann nur eine Zeile mit Werten gefuellt sein und diese muessen eindeutig bestimmt sein.
Ein anderer Weg waere: Es konnen mehrere Zeilen gefuellt sein, in jeder Spalte muessen aber immer andere Werte stehen sodass jede Zeile durch jede Spalte eindeutig identifiziert wird.
Ich vermute aber dass ich da weit an der richtigen Bedeutung der 1. NF vorbeisteuere und moechte wissen, was ihr dazu sagt.
Und was verstehen die Typen denn dann als atormare Werte.
Atormar heisst bei mir, wenn ich mich richtig errinnere, dass eine Transaktion entwerder voll oder gar nicht durchgefuerht wird, aber ich seh da den Zusammenhang mit der 1. NF nicht!
mfg nul
mwanaheri
21-01-2005, 17:22
Also die Definition kenne ich etwas anders, nämlich dass am Kreutzpunkt Zeile,Spalte nur eine Attributsausprägung vorkommt. Das hast du schon, wenn du eine "ordentliche" Tabelle hast. Dann stehen nämlich z.B. nicht zwei Usernamen in einem Feld und jeder Username ist (mindestens) einer Zeile eindeutig zugeordnet.
so was geht nicht:
plz | Ort | Name
--------------------------------------
1234 | irgendwo | irgendwer
nochwer
----------------------------------------
1235 | sonstwo | weranders
-----------------------------------------
....
Ärger mit so etwas bekommt man schnell, wenn man z.B. aus einer Tabelle einer Textverarbeitung oder einer Tabellenkalkulation eine Datenbanktabelle machen soll. Die Leute füllen dann die notwendigen Angaben nicht aus, wenn sie die gleichen wie in der Zeile darüber sind. Das muss man dann nachholen. Vor allem muss man alle Schlüsselfelder ausfüllen.
Hallo an euch
Also wenn ich das noch richtig aus dem letzten Semester im Kopf habe dann ist die 1.Normalform das ein Primärschlüssel vorhanden ist der Jede Zeile richtig eindeutig idenzifiziert wobei jede zeile nur einmal vorkommen darf
so habe ich es in erinnerung leider habe ich mein skript weiter gegeben
mfg
Gsus
quinte17
22-01-2005, 09:25
@gsus: die primärschlüssel sind erst in der 2. normalform relevant
die erste normalform besagt, dass jedes feld einer tabelle eindeutig sein muss, und nicht mehrere werte enthalten darf (atomar).
also des geht nicht:
name | adresse | haustier1,haustier2
muss so sein:
name | adresse | haustier1
name | adresse | haustier2
dann ist es in der ersten normalform
grüße
Hi,
Beispiel: Du hast Leute und ihre Lieblingsfarben (oder was auch immer):
ID | Name | Farbe
1 | Ulli | rot
2 | Ulli | grün
3 | Ulli | blau
4 | Rick | gelb
5 | Rick | blau
Dies entspricht nicht der 1. NF, weil beim Attribute "Name" und beim Attribute "Farbe" mehrmals der selbe Werte mit unterschiedlicher ID vorkommt.
Man könnte dies jetzt normalisieren indem man ein Tabelle für die Namen und die Farben macht. Hierfür gibt es jetzt zwei Möglichkeiten:
ID | Name | FarbeID ID | Farbe
1 | Ulli | 1 1 | rot
2 | Ulli | 2 2 | grün
3 | Ulli | 3 3 | blau
4 | Rick | 4 4 | gelb
5 | Rick | 3
ID | Name ID | NameID | Farbe
1 | Ulli 1 | 1 | rot
2 | Rick 2 | 1 | grün
3 | 1 | blau
4 | 2 | gelb
5 | 2 | blau
In der ersten Variante ist die Farbtabelle in der 1. NF die Namenstabelle jedoch nicht. Denn ein Name kann über verschiedene IDs erreicht werden (bei der Eintragung könnte der Name falsch geschrieben werden und eine Zuordnung ist nicht mehr möglich). In der zweiten Variante ist es genau umgekehrt.
Deshalb könnte man es weiter normalisieren:
ID | Name NameID | FarbeID ID | Farbe
1 | Ulli 1 | 1 1 | rot
2 | Rick 1 | 2 2 | grün
1 | 3 3 | blau
2 | 4 4 | gelb
2 | 3
Jetzt sind die Namens- und Frabtabelle in der 1. NF (der Werte sind atomar, weil eine weitere Vereinfung nicht möglich ist). Denn wenn einer der Namen entscheidet noch eine zusätzliche Lieblingsfarbe zu haben, dann kann kein Fehler durch falsche Schreibweise passieren.
Pingu
EDIT: Asche auf mein Haupt. Quinte17 hat Recht in Bezug auf die 1. NF. Lesen müßte man (ich) können. Mein Beispiel ist dann der nächste Schritt.
@all: Schon mal vielen Dank fuer eure HIlfe, hat mir sehr weitergeholfen!
@Pingu: Was meinst du mit 2. Schritt, waere das dann die 2. Normalform?
mfg nul
quinte17
22-01-2005, 16:55
@nul: die 2. Normalform besagt, dass alle felder die von einem schlüssel abhängen in eine externe tabelle zu ziehen sind.
du musst dir zuerst den schluessel in deiner tabelle heraussuchen, dass sind alle felder die eine zeile eindeutig machen.
idname | vname | nname | haustier
---------------------------------
1 | xxx | yyy | hund
1 | xxx | yyy | katze
2 | hhh | iii | fisch
2 | hhh | iii | hamster
in diesem fall wäre eine zeile eindeutig wenn
idname und haustier
bekannt sind.
somit ist idname und haustier der schlüssel
nun musst du vname und nname mit hilfe des schlüssels idname aus der tabelle ziehen:
idname | haustier
-----------------
1 | hund
1 | katze
2 | fisch
2 | hamster
idname | vname | nname
----------------------
1 | xxx | yyy
2 | hhh | iii
dies ist aber noch nicht ganz die 2. normalform... da haustier auch noch rauszuziehen ist:
idname | haustier
-----------------
1 | hund
1 | katze
2 | fisch
2 | hamster
idname | vname | nname
----------------------
1 | xxx | yyy
2 | hhh | iii
haustier
--------
hund
katze
fisch
hamster
hier könnte man sich fragen warum ich dem haustier nicht noch eine id verpasse und dies scheibar redundant ist. ein primärschlüssel muss NICHT eine zahl sein, es kann alles sein, wie in dem fall halt tiere. ist alles eine frage des geschmacks und des designs. (und es kommt auf den lehrer an den du in der schule hast ^^)
greetz
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.