Hallo,
Also dann, etwas konkreter:
danke; das macht es deutlich einfacher. Das Problem fällt auch stark in sich zusammen. Jetzt haben wir massig Platz:
Ich muss Artikelnummern (ca. 2,5 Mio.) von verschiedenen
Lieferanten (ca. 350) in einer SQL-Datenbank pflegen und
dokumentieren.
Das ist recht übersichtlich. Von deinen vereinheitlichten 13-stelligen Artikelnummern (ohne Präfix) gibt es 170 Trillionen Stück. Das sollte eine Weile reichen, auch wenn noch einige Lieferanten oder Artikel hinzukommen.
Diese Artikelnummern können je
Lieferant eine variable Länge besitzen und weiterhin sehr
„abenteuerlich“ sein
Ok, dann spricht vieles dafür, für jedes Lieferantenschema eine eigene Abbildung zu definieren, und jedem Lieferanten einen Präfix innerhalb des 13-Zeichen-Raums zuzuweisen, vielleicht 3 Zeichen (reichen 47000 Lieferanten?). Dann bleiben 10 Zeichen für den Artikel pro Lieferant (immer noch 3,6 Billiarden; du könntest also viel weniger Zeichen nehmen und so für Erweiterungen deines Format gewappnet sein).
Bleibt allerdings evtl. noch der Aufwand, 350 Abbildungen zu definieren.
Ein Lieferant vergibt entweder chaotische Nummern, dann
beträgt die Länge seiner Artikelnummer max. 8 Stellen.
Diese Artikelnummern könntest du eins zu eins übernehmen, oder du gehst wie bei den längeren vor.
Oder er hat sich ein Nummernsystem ausgedacht, um seine Artikelnummer
ein Stück weit „sprechen zu lassen“
Da das kaum zu erfassen ist (und, wie du sagt, jeder Lieferant seine eigenen Regeln durch Ausnahmen verletzt), und vorausgesetzt, die generierten Artikelnummern benötigen keine „sprechende“ Struktur, böte sich eine einfache Durchnumerierung des Artikelbestandes an.
Da eine Artikelnummer bei verschiedenen Lieferanten durchaus
identisch sein kann, gibt es zusätzlich eine
Lieferantencodierung (4-stellig, alphanumerisch [A-Z, 0-9]).
Ein Lieferantencode existiert also schon. Dann wäre meines Erachtens die pragmatischte Lösung: Übernimm den 4-stelligen Lieferantencode und generiere innerhalb eines Lieferanten neue Artikelnummern, die du den alten über die DB zuordnest. Entweder nimmst du eine feste Länge (5 Zeichen = 60 Mio. Produkte reichen wahrscheinlich völlig) oder du lässt die Nummern in ihrer Länge einfach wachsen.
Falls deine Artikelnummern auch von Menschen notiert/weitergegeben werden, solltest du dir vielleicht noch Gedanken über eine Absicherung gegen Schreibfehler machen (per Prüfsumme; Vermeidung von ähnlich aussehenden Buchstaben (Null und Oh, Eins und Ih, etc.).
Viele Grüße,
Andreas