2te Normalform...Eigene Tabelle fuer jedes Kennzeichen? (Access)

ThomasS., Mittwoch, 08. April 2009, 08:45 (vor 3332 Tagen)
bearbeitet von Martin Asal, Donnerstag, 31. Dezember 2015, 13:42

Auszug aus dem Tutorial.

Zweite Normalform (Tabellen)

Eine Tabelle befindet sich in der zweiten Normalform, wenn sie der ersten Normalform entspricht und darüber hinaus jeder Datensatz nur Felder enthält, die sich auf das Objekt beziehen, das durch den Primärschlüssel dargestellt wird.

In der folgenden Beispieltabelle gibt es zwar ein Primärschlüsselfeld (IDKunde), das aber keinen Bezug zu den Autokennzeichen hat.
Bei den Kunden haben die Auto-KZ nichts zu suchen. Gemäß der zweiten Normalform müssen sie aus obiger Tabelle entfernt werden. Sie gehören in eine eigene Tabelle. Dann können auch mehr als zwei Kennzeichen pro Kunde dargestellt werden. Auto-KZ ist dann das Primärschlüsselfeld der neuen Tabelle.

Ich moechte eine Datenbank aufbauen, bei der ich einem Kunden mehrere Vertraege (Bspw.Verwaltung/Buchfuehrung/Pruefung) und diesen Vertraegen verschiedene Inhalte bzw. Dienste zuweisen moechte.
Grundsaetzlich stellt sich mir die Frage, ob innerhalb eines Datensatzes auch Felder frei bleiben koennen.

So habe ich es bisher.
Ich habe z.B Vertrag XY (Primaerschluessel). Dienst dieses Vertrages kann A,B,C,D,E sein (Spalten). Es kann aber auch sein, dass mehrere wie zB.A+B als Dienste im Vertrag enthalten sind.
Kann ich, wenn ich der Normalform entprechen will das ueberhaupt so anlegen?...ich haette immer freie Felder, da nie alle Dienste in Anspruch genommen werden. In dem Tutorialbeispiel http://www.access-tutorial.de/tabellen/normalformen.htm wird das durch eine eigene KFZ Tabelle geloest, und hier wird die IDKunde mit DuplikateMoeglich indiziert.

Bedeutet das fuer mich, dass ich fuer jede Unterscheidungsmoeglichkeit bzw. Auswahlmoeglichkeit eine separate Tabelle anlegen muss?!
im Extremfall also[tabA,tabB...tabA+B,tabA+C....tabC+D....tabA+C+D.....]

Es waere natuerlich ein erheblicher Mehraufwand.Oder laesst sich das auch so regeln, dass ich statt freier Felder den Datentyp auf boolean setze, also auf jeden Fall etwas in der Tabelle steht...zb A(ja) B(nein) C(ja) D(ja) E(nein)

Wenn ich mir allerdings das Beispiel zur dritten Normalform anseh, dann scheint es so zu sein, dass ich einfach nur eine einzige Tabelle haben muss, in der einmal alle Moeglichkeiten [s.o.] drinstehen, denen wird dann eine eindeutige Nummer zugeordnet und die muss ich dann in EINE Spalte (statt 5) eintragen und habe eine eindeutige Zuordnung ohne die Moeglichkeit leerer Zellen.

ueber eine klare verstaendliche Antwort wuerde ich mich wie immer sehr freuen, und bitte um Verstaendnis fuer mein Unverstaendnis. Danke

Mit freundlichen Gruessen
ThomasS.


gesamter Thread:

 RSS-Feed dieser Diskussion

powered by my little forum