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:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Id ArtikelNumber Name Eigenschaften 01 GRING Gummiringe (virtuell) Durchmesser(10,30,50) Farbe(schwarz=sw, rot=rt, gold=gd) 02 GRING10sw Gummiringe Durchmesser 10 Farbe schwarz 03 GRING10rt Gummiringe Durchmesser 10 Farbe rot 04 GRING10gd Gummiringe Durchmesser 10 Farbe gold 05 GRING30sw Gummiringe Durchmesser 30 Farbe schwarz 06 GRING30rt Gummiringe Durchmesser 30 Farbe rot 07 GRING30gd Gummiringe Durchmesser 30 Farbe gold 08 GRING50sw Gummiringe Durchmesser 50 Farbe schwarz 09 GRING50rt Gummiringe Durchmesser 50 Farbe rot 10 GRING50gd Gummiringe Durchmesser 50 Farbe gold |
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)
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?