Databasdesign
Tjosan!
Jag sitter och funderar på att koda en ehandelslösning. Ett gammalt system på jobbet kommer framöver att behöva bytas efter att ha fulhackats på i 6-7 år av tre generationer sysadmins, och jag tycker dessutom att det vore kul att ha som litet hobbyprojekt att sitta och hacka på utanför arbetstid. Eftersom jag dock även arbetar som konsult då och då, och gärna skulle använda frukten av mitt arbete hos flera kunder om det blir aktuellt, så önskar jag förstås göra hela designen från början så flexibel och utbyggbar som möjligt. Att bygga en webb-bokhandel för att matcha det nuvarande systemet vore hyfsat trivialt - min ambition är att bygga en generell e-handel där alla möjliga typer av produkter skulle kunna säljas.
Kodbiten är jag säker på, har arbetat med programmering länge och väl. Det som jag är lite mer osäker på är bra databasdesign. Det skulle därför vara toppen med lite input på hur ni skulle ha gått tillväga för att implementera följande beskrivning i ett schema, i enlighet med normaliseringsregler och god databasdesign;
1) Det finns ett antal artiklar i systemet
2) Varje artikel tillhör en kategori, och varje kategori kan ha en eller flera artiklar
3) Vilka egenskaper som skall lagras för artiklarna avgörs av vilken kategori de tillhör (ex: "Bilar" har egenskaperna färg, regnr, motorstorlek, "cd-skivor" har egenskaperna artist, genre, årtal).
4) Varje kategori har en egenskap "parent" som avgör överordnad kategori, så att någon form av hierarkisk trädstruktur uppstår.
Ett problem jag ser framför mig är att om egenskaperna knytes till produktkategorierna, och värdena matchande dessa egenskaper knytes till de enskilda artiklarna, hur tusan gör man för att få det att bli rätt? Kategorin "bok" kanske har egenskapen "isbn", men värdet "9125-3467-33" måste ju tillhöra en enskild artikel som i sin tur har kategorin "bok". Hur är relationen mellan artikel och egenskap och egenskaps värde?
Alla med åsikter och kunskaper är supervälkomna att ge sina tips och idéer. Jag kan ha tänkt fel från början, lätt hänt när man försöker applicera objektorienterad design på relationsdatabaser..
W