Hoi mensen, bedankt voor jullie reacties! Ik heb ondertussen deze tabellen opgebouwd:
CREATE TABLE `productspecs` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`level` int(11) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`value` varchar(100) DEFAULT NULL,
`main_group_id` int(11) DEFAULT NULL,
`product_id` int(11) DEFAULT NULL,
`price` float DEFAULT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `products` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`description` varchar(100) DEFAULT NULL,
`category_id` int(11) DEFAULT NULL,
`info` text,
PRIMARY KEY (`id`)
)
Met deze structuur kan ik als volgt te werk gaan:
Het product: een fotoblok (foto gedrukt op een houten paneel)
Dit product krijgt in tabel 'products' bv ID 4, dan is dit de inhoud van tabel 'productspecs' voor dit artikel:
INSERT INTO `productspecs` (`id`, `level`, `name`, `value`, `main_group_id`, `product_id`, `price`)
VALUES
(8, 1, 'Materiaal', 'Berkenplexhout 40mm', 0, 4, 0),
(9, 2, 'Formaat', '10 x 15 cm', 8, 4, 4.2),
(10, 2, 'Formaat', '15 x 15 cm', 8, 4, 6.29),
(11, 2, 'Formaat', '20 x 30 cm', 8, 4, 16.78),
(12, 2, 'Formaat', '30 x 40 cm', 8, 4, 33.57),
(13, 3, 'Whitewash', 'Ja', 9, 4, 1.5),
(14, 3, 'Whitewash', 'Nee', 9, 4, 0),
(15, 3, 'Whitewash', 'Ja', 10, 4, 2),
(16, 3, 'Whitewash', 'Nee', 10, 4, 0),
(17, 3, 'Whitewash', 'Ja', 11, 4, 2.5),
(18, 3, 'Whitewash', 'Nee', 11, 4, 0),
(19, 3, 'Whitewash', 'Ja', 12, 4, 4),
(20, 3, 'Whitewash', 'Nee', 12, 4, 0);
Veld 'main_group_id' verwijst dan naar de id in dezelfde tabel van de bovenliggende specificatie.
Veld 'level' duidt de stap aan.
Dus in dit voorbeeld beginnen we bij stap 1: Materiaal. Hier is er maar één keuze van materiaal na deze keuze wordt de volgende stap gekozen: Formaat. Hier keuze uit 4 formaten. Bij de formaten staan ook (voor de eerste keer) prijzen ingevuld. Dus bij keuze van een formaat wordt de prijs gekozen. De volgende stap is dan Whitewash. Afhankelijk van het gekozen formaat, is er een andere meerprijs (indien er JA gekozen wordt). Die prijs wordt dan bij opgeteld bij de vorige prijs.
Voor een eenvoudig product als dit, is dit perfect haalbaar, maar je ziet dat in dit voorbeeld de vraag 'whitewash' 8 keer terugkeert (afhankelijk van mogelijke antwoorden van de vorige stap), dus bij een meer gecompliceerd product komt vele specificaties steeds terug en wordt de tabel zeer groot.
Ik heb een ingewikkeld product geprobeerd, en zit ondertussen al aan 1600 records in de tabel en ik ben nog niet rond :-)
Daarom mijn vraag of dit op een andere manier te bewaren is in de databank.
Groetjes!