Hallo Yuppie,
ich stimme Netwolf zu 100% zu
[snip] und möchte jedem Kunden eine
eindeutige Kundennummer vergeben. Enthalten soll in dieser
Kundennummer die PLZ und der User.
NIEMALS dürfen eindeutige IDs irgendwelche „weiteren Informationen“ beinhalten. Das führt früher oder später (meist früher) zur totalen Katastrophe.
Selbst wenn sich aktuell kein Bespiel wie
12345 Wolfgang Möller
12345 Wolfgang Möller
12345 Wolfgang Möller
12345 Wolfgang Möller
12345 Wolfgang Möller
kein Witz, bei uns in Essen gibt’s 5 davon 
finden lassen würde, ist es meist nicht möglich, aktuell alle theoretisch möglichen Fälle zu berücksichtigen bzw. dann halt auszuschließen, um sich sicher zu sein, dass das mit Deiner „eindeutigen“ zusammengesetzten AutoID auch wirklich jetzt und in der Zukunft eineindeutig klappt.
Zwei weitere Beispiele, wo diese Art des Datenbank-Design versagt bzw. versagt hat:
-
Wenn Wolfgang Möller nun umzieht und nun in „54321“ wohnt, legst Du seinen Datensatz dann erneut an (redundante Datenhaltung), obwohl sich ja „nur“ die Adresse geändert hat und z.B. die Mobilnummer etc. (und weitere Datensatzeinträge) gleichgeblieben sind?
-
Bei Banken ist in der Regel in die Kontonummer (dies ist die eindeutige ID) ebenfalls die kontoführende Filiale als Information mit „eingewoben“. Wenn man nun also umzieht, wird man bei der nun zuständigen Wohnort-Filiale ganz neu als Neukunde erfasst, man erhält also eine komplett neue Kontonr., sämtliche Daten (Adresse etc.) werden neu erhoben, man wird komplett neu von einem neuen Kundenberater „bewertet“ und bekommt aufgrund dessen auch einen neuen Dispo, etc.
Hat jemand eine Idee, wie ich das machen kann?
Ja, für jede „Information“ ein eigenes Tabellen-Feld, also:
ID | KDNR | Vorname | Nachname | PLZ | etc. | … |
^-- Zusätzlich zur KDNR. benutze ich immer noch zusätzlich ein AutoID-Feld, deren Generierung ich vollkommen der DB überlasse. Die Kundennr. ist zwar auch schon eindeutig, doch wird diese meist „optisch“ formatiert, als alle Kundennummern > 1000 oder immer 6-stellig („001234“), oder so.
HTH
Till.