Hallo,
ich denke Du stellst dir das ganze immernoch etwas komplizierter vor als es ist.
Du hast in deiner Artikeltabelle ja noch weitere Felder die jeden einzelnen Artikel beschreiben. Warum schaffst du dann nicht noch ein weiteres Feld "ArticleNumber" oder so als String (Char) mit einer Länge von 50 Zeichen zum Beispiel. So ist auch noch Platz für Später falls noch Artikel mit weiteren Eingeschaften hinzukommen. Nun legst du für jeden Wert den deine Eigenschaften (Artikel-Nr., Farbe und Größe) annehmen können eine Kurze, eine eindeutige Kennung fest. Beim Eintragen der Artikel in die Tabelle setzt Du dann den String aus den Kennungen der Eigenschaftswerte zusammen.
Allgemein sollte jede Tabelle ein Feld "Id", oder so ähnlich, von Typ Autoinc haben. Das macht einem die Arbeit deutlich leichter wenn es um eindeutige Zuodnungen von Datensätzen geht. Auf das Feld einen Index und das ganze geht auch dann noch ordentlich flott wenn die Tabellen richtig groß werden.
Deine Artikelkennung die Du so schaffst ist solange eindeutig wie du nicht den gleichen Artikel mit den gleichen Eingeschaften erneut einfügst. Das kannst Du über einen UNIQUE Index auf das Feld verhindern.
Zur Anzeige eines Artikels hast Du so dann die Möglichkeit den Autoincwert zu nehmen der aber nicht sehr aussagekräftig ist. Oder die Artikelkennung die Du nun auch zur Verfügung hast. Diese ist bei einer kleveren Wahl der Eigenschafskennungen perfekt geeignet um Dir und den Kunden gegenüber den Artikel leicht und verständlich zu representieren ohne den Namen oder die Beschreibung lesen zu müssen.
Ich arbeite in meinem Fall mit einem virtuellen Atikel der mir nur die Artikelnummer bringt und die Eigenschaften festlegt die die realen Artikel des Artikels haben können. Der Artikel selber kann nicht verkauft werden sondern nur die Artikel sich aus ihm erzeugen lassen.
Das ganze schaut dann zum Beispiel so aus:
Das einzige was nicht ganze einfach ist und was ich ganz ehrlich nicht mit SQL Lösen wollen würde ist das Erstellen der Artikelnummern aus den Eigenschaften.
In Delphi ist das eine relativ einfache N-Dimensionale Matrix ausmultiplikation. (N ist die Anzahl der Eingenschaften)