[MySQL] Database indeling

Pagina: 1
Acties:

  • m33p
  • Registratie: September 2002
  • Laatst online: 19-08 09:51
Ik zit met een probleem. Ik heb een database die ingericht moet worden. Hierin komen artikelen die weer opgedeeld zijn in categorien. Bijvoorbeeld, stofzuigers, schrobmachines en tapijtreinigers. Daaronder zitten dan dus de verschillende stofzuigers, schrobmachines en tapijtreinigers, met bijbehorende info. Bijvoorbeeld, de maten, stofzak inhoud, lengte van de slang, etc, maar dit is bij de verschillende categorieën verschillend. De stofzuiger zak komt bijvoorbeeld bij de tapijtreiniger niet voor.

Nu kan ik gewoon al deze velden in een tabel zetten, en dan de velden weergeven die daarop van toepassing zijn, maar volgens mij kan het wel efficienter / netter.

Ik ben nog nit zo lang bezig met PHP / MySQL dus vandaar mij vraag en ik hoop dat ik deze duidelijk geformuleerd heb. Bij voorbaat dank

Verwijderd

Duw in de goede richting: normaliseren

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Om nu voor ieder productsoort een eigen tabel te maken.. :P

Ik denk dat het ook kan door een tabel producten te nemen. En ieder product heeft 0 of meerdere producteigenschappen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Johnny
  • Registratie: December 2001
  • Laatst online: 11:56

Johnny

ondergewaardeerde internetguru

Ik zou eerst eens kijken welke eigenschappen zijn van toepassing op alle producten (categorie, gewicht, watt, afmetingen, prijs) deze kunnen dan allemaal in dezelfde tabel.

Daarnaast moet je je bedenken of het nut heeft om aparte velden voor zulke dingen aan te maken, het heeft namelijk geen enkel om de grootte van de stofzuigerzak in een aparte kolom te zetten als men niet kan zoeken/vergelijken op zulke informatie.

Maar wat je ook doet, je kan het op verschillende manieren oplossen en geen enkele is goed of fout.
- een grote tabel met een groot aantal eigenschappen waarvan voor sommige geen ingevuld zijn.
- voor verschillende soorten producten verschillende tabellen
- een tabel met alleen eigenschappen die overal van toepassing zijn en een aantal gekoppelde tabellen met extra eigenschappen.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46

ATS

Nog een optie (vervolg op lijst Johnny):
-een tabel met daarin voor elk producttype de relevante eigenschappen (dus ProductTypeID + NaamEigenschap (+ evt het type van die eigenschap)) + een tabel met eigenschap en de waarde daarvan.

[Edit: verduidelijking]:
De eerste tabel ProductEigenschap kan je de volgende velden geven:
ID, ProductTypeID, Naam. Optioneel kan je dit uitbreiden met bijvoorbeeld Type (om het soort eigenschap in op te slaan), Optioneel (om aan te geven dat het invullen optioneel is of niet), etc. In deze tabel kan je nu per producttype de eigenschappen invoeren. Voor je stofzuiger krijg je dan dus bijvoorbeeld (met stofzuigers als producttypeID 1):
1, 1, Slanglengte (, Lengte, nee)
2, 1, Zakinhoud (, volume, nee)
3, 1, Kleur (, Kleur, ja)

In de tweede tabel ('Eigenschap') zet je nu per product de eigenschappen als property-value paar. Deze tabel bestaat dus uit: productID, productEigenschapID, Waarde. Bijvoorbeeld drie stofzuigers met productID's 1 - 3:
1, 1, 150
1, 2, 4
1, 3, wit
2, 1, 200
2, 2, 3.5
3, 1, 220
3, 2, 4.2
3, 3, grijs

Deze aanpak zorgt wel dat je je gegevens NIET in een normaalvorm gaat krijgen. Je producttype zit namelijk in je tabel met producten, en ook in je tabel met producteigenschappen. Beiden worden weer gerefereerd in je tabel Eigenschap.

[ Voor 70% gewijzigd door ATS op 21-10-2003 13:37 . Reden: Verduidelijking ]

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


  • Packardhell
  • Registratie: Juli 2001
  • Laatst online: 15:38
m33p schreef op 20 October 2003 @ 21:31:
Ik zit met een probleem. Ik heb een database die ingericht moet worden. Hierin komen artikelen die weer opgedeeld zijn in categorien. Bijvoorbeeld, stofzuigers, schrobmachines en tapijtreinigers. Daaronder zitten dan dus de verschillende stofzuigers, schrobmachines en tapijtreinigers, met bijbehorende info. Bijvoorbeeld, de maten, stofzak inhoud, lengte van de slang, etc, maar dit is bij de verschillende categorieën verschillend. De stofzuiger zak komt bijvoorbeeld bij de tapijtreiniger niet voor.

Nu kan ik gewoon al deze velden in een tabel zetten, en dan de velden weergeven die daarop van toepassing zijn, maar volgens mij kan het wel efficienter / netter.

Ik ben nog nit zo lang bezig met PHP / MySQL dus vandaar mij vraag en ik hoop dat ik deze duidelijk geformuleerd heb. Bij voorbaat dank
Je kan idd Normaliseren of bijv. FCO-IM gebruiken. Voor Normaliseren kan je bijv. een ER(D) maken met behulp van Sybase PowerDesigner. En voor FCO-IM moet je op deze site ff kijken: http://www.infagon.com/

Powered by KPN


Verwijderd

artikelen
--------------------
id
naam
prijs
kleur
cat_id

categorie
------------
id
naam

bijv rij van artikelen 12 stofzuiger 129 zwart 1
bijv rij van categorie 1 huishoudelijk
je koppelt artikelen.cat_id categorie.id
en voila!
Pagina: 1