PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1. Normalform?



nul
21-01-2005, 17:09
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.

Gsus
22-01-2005, 08:31
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

Pingu
22-01-2005, 09:28
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.

nul
22-01-2005, 12:18
@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