Sophus
SQL-Guru
- Beiträge
- 135
A) Warum führst du für Nationalität eine numerische ID ein?
Die Staaten gehören als Stammdaten vorgesehen und gewartet. (Nur internationale anerkannte Staaten). Somit bitete sich das internationale Kennzeiochen als Primary Key an.
http://www.tabelle.info/kennzeichen_land.htm
oder http://de.wikipedia.org/wiki/ISO-3166-1-Kodierliste
Code:23 D 23 E 23 USA
Warum ich eine nummerische ID benutze? Nun, eine gegebene ID wird vom System aus nur einmal vergeben und nie wieder verändert. Es sei denn die Datenbank wird zerstört oder Datenbestand geht verloren. Dann müssen neue Datensätze in die Datenbank gepflegt werden und die Datensätze bekommen erneut eine (nummerische) ID. Das Problem bei den Landeskennzeichen als ID zu verwenden sehe ich wie folgt: Es ist durchaus und rein theoretisch möglich, dass sich Landeskennzeichen, sowohl national als auch international, sich ändern. Und dann? Angenommen für Deutschland haben wir momentan das Kennzeichen D. So speicher ich es ab, und D ist hier der Primärschlüssel. Nun ändert sich das Kennzeichen von D auf DE. Aber der Fremdschlüssel D liegt nun als Primärschlüssel in der Zwischentabelle/Zuordnungstabelle Nationalität_Person. Und da D nun in DE geändert wurde, kann der Person keine Nationalität zugeordnet werden. Wie denn auch? D ist ist unbekannt. Also müssen sämtliche Änderungen vorgenommen werden. Dies würde ich mir bei einer nummerischen ID sparen.
Grundsätzlich verstehe ich nicht, wieso es "falsch" sein sollte IDs zu verwenden, wo ihr zum Beispiel bei Nationalität darauf verzichten würdet. Erkaufe ich mir da gravierende Nachteile, wenn ich nummerische IDs verwende? Denn man bedenke, dass der Anwender meines Programm nicht sehen wird, was unter der Haube passiert.