login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Webshop database inrichten met breed assortiment

Offline Martijn2008 - 26/07/2011 23:02
Avatar van Martijn2008PHP beginner Hallo allemaal,

Dit forum-topic is bedoelt voor het inrichten van een database voor een webshop met een breed assortiment. Daarbij denkende aan een webshop die zowel hardware(bijvoorbeeld computers, compact-camera's etc.) en kleding verkoopt. Er kan onderscheidt worden gemaakt in maten en kleuren van kleding. Bovendien kan het zo zijn dat bepaalde hardware in diverse kleuren beschikbaar is.

Mijn vraag is hoe richt ik zo simpel en eenvoudig mogelijk een goede database in voor een webshop met bovenstaande omschrijving. Daarbij denkende aan de entiteittypes en attribuuttypes. Kortom de opzet van database en de onderlinge relaties tussen de entiteittypes.

Ik ben benieuwd naar je ideeën en oplossingen. Alvast bedankt voor je reactie.

Martijn

5 antwoorden

Gesponsorde links
Offline Wave6 - 27/07/2011 09:21
Avatar van Wave6 PHP beginner Dat is inderdaad een enorme klus maar met een gezond verstand kom je er wel.

Het is aan jou de taak om een product object te maken.
Dit product heeft op zijn minst de volgende eigenschappen. (dit is je tabel "product").

-ProductName
-ProductTitle
-ProductID
-ProductCategoryID
-ProductThumbnail
-ProductPrice
-ProductOutOfOrder
-ProductDescription

Dit is het zelfde voor ieder product. Vervolgens zou ik een tabel met attributen definieren, een attribuut zou bijvoorbeeld een kleur kunnen zijn of een extra plaatje..., maar ook of het Conform RoHS is of juist niet...

De tabel zou er zo uit kunnen zien.

-AttribID
-AttribName
-AttribLabel
-AttribDefaultValue
-AttribType

Vervolgens, kun je die attributen koppelen aan producten (zie tabel product).

Dat kun je doen met x-ref records (koppel tabellen).

Bijvoorbeeld:

Tabel: xref_attrib_products
-xref_attrib_product_id
-attrib_id
-product_id

Dit kun je vervolgens met een select-join query in zijn geheel ophalen.

Ik hoop dat je een beetje begrijpt wat ik bedoel.
Let op, de tabellen bevatten in realiteit meer data dan dat ik hier uitleg.
Zo heeft een product meestal ook een Author(wie heeft het product geplaats) of een datum tot wanneer de aanbieding van dit product geld. Of Hoeveel korting je krijgt op het product.

Kortom, door te normaliseren kom je een heel eind.

Mvg,

Wesley van der meer
Offline Martijn2008 - 27/07/2011 13:12
Avatar van Martijn2008 PHP beginner Dat is inderdaad een mogelijke uitwerking. Ik zat ook een beetje in die richting te denken, maar stel nou eens dat een product(een kledingstuk in dit geval) een maat en een kleur heeft. Hoe zou ik dat dan inserten in tabel OrderRegels(als er een order is geplaatst). En stel nou eens dat de klant een balpen besteld, die geen maat en kleur heeft. Orders komen in tabel Order. Het liefst zou ik geen null-waardes of redundantie in de database willen terugvinden.
Offline Wave6 - 28/07/2011 09:34
Avatar van Wave6 PHP beginner Door nogmaals te normaliseren.

Een product kun je koppelen aan een order, een order kun je koppelen aan een klant...

Offline Martijn2008 - 28/07/2011 20:24
Avatar van Martijn2008 PHP beginner
Wave6 schreef:
Dat is inderdaad een enorme klus maar met een gezond verstand kom je er wel.

Het is aan jou de taak om een product object te maken.
Dit product heeft op zijn minst de volgende eigenschappen. (dit is je tabel "product").

-ProductName
-ProductTitle
-ProductID
-ProductCategoryID
-ProductThumbnail
-ProductPrice
-ProductOutOfOrder
-ProductDescription

Dit is het zelfde voor ieder product. Vervolgens zou ik een tabel met attributen definieren, een attribuut zou bijvoorbeeld een kleur kunnen zijn of een extra plaatje..., maar ook of het Conform RoHS is of juist niet...

De tabel zou er zo uit kunnen zien.

-AttribID
-AttribName
-AttribLabel
-AttribDefaultValue
-AttribType

Vervolgens, kun je die attributen koppelen aan producten (zie tabel product).

Dat kun je doen met x-ref records (koppel tabellen).

Bijvoorbeeld:

Tabel: xref_attrib_products
-xref_attrib_product_id
-attrib_id
-product_id

Dit kun je vervolgens met een select-join query in zijn geheel ophalen.

Ik hoop dat je een beetje begrijpt wat ik bedoel.
Let op, de tabellen bevatten in realiteit meer data dan dat ik hier uitleg.
Zo heeft een product meestal ook een Author(wie heeft het product geplaats) of een datum tot wanneer de aanbieding van dit product geld. Of Hoeveel korting je krijgt op het product.

Kortom, door te normaliseren kom je een heel eind.

Mvg,

Wesley van der meer


Met deze opzet zou ik OutOfOrder eerder in tabel Attributen plaatsen, gezien de voorraad op maat en kleur van toepassing is.
Offline Ibrahim - 29/07/2011 03:08 (laatste wijziging 29/07/2011 03:09)
Avatar van Ibrahim PHP expert Maar dan zit je weer met producten zonder extra opties met wel een voorraad.

Bij producten met extra opties heeft elke atribuut zijn eigen voorraad. Dan krijg je dus taferelen zoals:

Product: T-shirt
Opties:

+ Kleur
- Geel
- Groen

+ Maat
- Small
- Medium
- Large

Dit betekent dat elke kleur zijn eigen maten heeft. Of andersom, dus heb je in dit geval 1 product met 2 x 3 verschillende voorraden. Tevens is het mogelijk dat een bepaalde kleur een bepaalde maat niet heeft. Dit kun je niet oplossen met de schets van Wave6.

Veel opensource projecten die ik ken, rekenen alle mogelijke combinaties uit en gooien ze allemaal in de database, wat een walgelijk idee is qua database structurering. Denk er dus niet te licht over, en neem gewoon veel tijd om de database geheel uit te denken.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.171s