en pt nl nl nl en nl nl nl nl nl nl nl nl en nl nl nl nl nl en en nl nl nl nl nl nl nl en fy nl nl
Voor een cosmetica producent ben ik op zoek naar het beste datamodel voor giftsets. We hebben een tabel met producten. Dat wil zeggen: een tube zalf, een potje crème, een flesje olie. Dus enkelvoudige producten. Maar we hebben ook giftsets die we maken. Dat zijn eigenlijk producten die bestaan uit twee of meer van die enkelvoudige producten. Het nadeel is dat ik dit in een licht verouderd datamodel moet gieten. Toch wil ik het zo netjes mogelijk maken, zoveel mogelijk volgens de laatste standaarden. Alleen ben ik de enige developer hier en ik kan het tegen niemands aanhouden. Nooit krijg ik commentaar op mijn technische oplossingen. Dus vandaar dat ik vraag aan jullie om er tegenaan te schieten.
Ik heb op dit moment twee versies van datamodellen. Het zijn losse eerste drafts, dus ze vertegenwoordigen alleen de manier waarop ik het ga opbouwen. Ze zijn niet volledig.
Deze versie voegt een product-type en product-sets tabel toe. Je krijgt dan twee typen: enkelvoudige en meervoudige producten. Als het een enkelvoudig product is, haalt ie de productinformatie alleen uit de tabel products. Indien het een meervoudig product is, dan gaat ie eerst langs de tabel product_sets om alle producten op te halen die in de tabel products staan.
Versie 2: Universeel, alle producten zijn samengesteld
Misschien klinkt dat gek, maar op deze manier zijn alle producten eigenlijk op dezelfde manier opgebouwd. Er komt wél een extra tabel bij, namelijk end-products. Daarmee heb je producten (de tubes, flesjes, potjes met inhoud) in de tabel products en het uiteindelijke eindproduct in end-products. Deze laatste bestaat uit 1 of meerdere items uit de tabel products. Enkelvoudige producten dus ook. Je moet dus bij het vinden van de recepten en productiemethoden altijd de producten ophalen uit products. De code kan daardoor (denk ik) wat universeler gebouwd worden.
Bedankt allemaal! Benieuwd of ik hier reacties krijg en hoe ik er mee verder kan!
Hey meanrat , allereerst welkom op DevNL!
Interessante casus. Ik heb even nagedacht over hoe ik het zou oplossen, zelf zou mijn voorkeur uitgaan voor versie 2 of iets soortgelijks. Een tabel product_sets en een tabel product_sets_products die dan daarnaast de producten gekoppeld heeft.
Mij verwarde overigens de keuze voor de tabelnaam end_products in versie 2, je bedoelt daarmee toch product sets?
Ik zat ook eventueel aan een versie 3 te denken. Je zou dan een kolom aan products kunnen toevoegen, bijvoorbeeld is_product_set dat een boolean is. Dan zou je richting een product_set_products tabel gaan waar je dan de parent_product_id en een product_id koppelt (die beiden dan dus verwijzen naar de products tabel). Wanneer een product dan een set is, kun je alle subproducten via de product_set_products ophalen waar de parent_product_id gelijk is aan het ID van het product van waar de is_product_set dantrue is.
Want hoe verre is een product set gelijk aan een product? Komen deze hetzelfde rijtje te staan als de andere producten in de shop?
Bedankt voor het welkom heten van mij! Een hele mooie inhoudelijke reactie! Waarvoor nog meer dank.
Versie 1 is dus afgevallen. En over de benamingen van de tabel heb je wel gelijk. end_products heb ik gebruikt, omdat ze hier producten namelijk "eindproducten" noemen. In dat kader zie ik producten als een product dat je wel zou kunnen verkopen, maar dat niet per definitie een eindproduct is.
Dus een tube met zalf. Maar het is pas een eindproduct als je er bijvoorbeeld een omdoosje omheen doet. Of diezelfde tube zalf, verzameld in een giftbox met andere tubes. Het product is de tube, maar die wordt an sich nooit verkocht. Wel de tube met het omdoosje of in een giftbox.
Een eindproduct is dus eigenlijk het product dat door onze klanten worden besteld. Ze bestellen de tube nóóit los, dus is dat nooit een eindproduct. Al kan er in de toekomst altijd besloten worden dat die tube ook los verkocht gaat worden. In dat geval 'wordt' de tube ook als eindproduct ingesteld.
Hopelijk maak ik een beetje sense. Maar in ieder geval is het belangrijkste dat ik wat heb aan je bericht. Ik ga versie 3 ook serieus overwegen!
Bedankt voor de extra info, fijn om te horen dat de reactie heeft geholpen!
Ik ben benieuwd wat je uiteindelijke versie gaat worden, laat dat vooral weten wanneer je er klaar mee bent 😃