Servus,
Früher hatte ich die Datenbank wie folgt [...]
Eigentlich nicht - zumindest nicht der Auszug, den du uns gezeigt hast. Was ist nun aus den ganzen Preisen geworden?
Nun habe ich diese Datenbank aufgegliedert [...]
Das wird so nicht funktionieren. Für jedes Attribut, das du als eigenständiges Entity betrachtest, brauchst du eine eigene Tabelle. Auch referenzierst du dort nicht die Artikelnummer des Produkts, sondern in der Tabelle des Produkts den Primärschlüssel des Attributs, z.B.
Produkt-Tabelle:
pk | artikelnr | preis | attribut1_pk | farbe_pk
--------------------------------------------------
1 | 12345 | 9.99 | 2 | 1
2 | 12346 | 10.00 | 3 | 4
Farb-Tabelle:
pk | name
------------
1 | Rot
2 | Grün
3 | Gelb
4 | Blau
Beachte auch, das die Produkt-Tabelle Primärschlüssel braucht. Eine Artikel-Nummer eignet sich nicht als Primärschlüssel, denn diese kann sich ändern. Primärschlüssel werden idR vom DBMS oder der Applikation generiert (in deinem Fall mit Sicherheit ersteres, z.B. mittels AUTO_INCREMENT in MySQL).
Bevor du das nun aber alles umnudelst solltest du zunächst für jedes Attribut klären, ob es überhaupt Sinn macht, es als eigenes Entity zu betrachten. Bei Produkt-Farben z.B. macht es das normalerweise nicht, bei bspw. Kategorien hingegen fast immer.
[...] WHERE tabelle2.attribut='GR1' AND tabelle2.attribut='ROT'
Findest du in deiner Tabelle2 einen Wert für 'attribut', der sowohl GR1 als auch ROT ist?
Gruss
Patrick