Ik ben bezig met een vergelijkingssite waarop je de prijzen van verschillende sites kan vergelijken. In deze vergelijker wil ik ook huismerken met elkaar vergelijken. Ik vraag me af hoe ik dat in de database het best op kan lossen.
Twee voorbeelden van producten: "Huismerk tandpasta" en "Prodent Coolmint tandpasta". In de achtergrond is de prodent tandpasta bij alle winkels gelijk aan elkaar, maar de huismerk tandpasta is het per winkel anders, wel kunnen 2 winkels hetzelfde huismerk product gebruiken en kan 1 winkel meerdere huismerken hebben.
Zie voorbeeld hieronder:
Wat is de beste manier om dit in de database op te lossen zonder dubbele gegevens op te slaan?
De oplossing die ik nu voor me zie:
Eén tabel met producten die optioneel een 'parent_product_id' kunnen hebben. Zowel "Kruidvat tandpasta" als "Huismerk tandpasta" is dan een product. Op een listing pagina zorg ik er dan voor dat alleen producten zonder parent getoond worden. In een tabel prices wordt dan de actuele prijs van een winkel opgeslagen.
Products
id
name
size
weight
...
parent_id (default null)
Prices
product_id
shop_id
price
Dit heeft volgens mij een paar nadelen:
Twee voorbeelden van producten: "Huismerk tandpasta" en "Prodent Coolmint tandpasta". In de achtergrond is de prodent tandpasta bij alle winkels gelijk aan elkaar, maar de huismerk tandpasta is het per winkel anders, wel kunnen 2 winkels hetzelfde huismerk product gebruiken en kan 1 winkel meerdere huismerken hebben.
Zie voorbeeld hieronder:
Prodent Coolmint tandpasta | Huismerk tandpasta | |
---|---|---|
Kruidvat | Prodent Coolmint tandpasta | Kruidvat tandpasta |
Etos | Prodent Coolmint tandpasta | Etos tandpasta |
Dirx drogist | Prodent Coolmint tandpasta | Perfekt merk tandpasta |
Plus drogist | Prodent Coolmint tandpasta | Perfekt merk tandpasta & plus tandpasta |
Wat is de beste manier om dit in de database op te lossen zonder dubbele gegevens op te slaan?
De oplossing die ik nu voor me zie:
Eén tabel met producten die optioneel een 'parent_product_id' kunnen hebben. Zowel "Kruidvat tandpasta" als "Huismerk tandpasta" is dan een product. Op een listing pagina zorg ik er dan voor dat alleen producten zonder parent getoond worden. In een tabel prices wordt dan de actuele prijs van een winkel opgeslagen.
Products
id
name
size
weight
...
parent_id (default null)
Prices
product_id
shop_id
price
Dit heeft volgens mij een paar nadelen:
- De huismerkproducten hebben nu veel lege velden in de producten database (een huismerk product heeft geen size, gewicht, etc.)
- Het ophalen van de laagste prijs van 'huismerk tandpasta' levert nu een lastige query op. Helemaal op een listing pagina's kan ik me voorstellen dat dit erg zwaar gaat worden.