Toon posts:

[MySQL] Hoe opslaan in database?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een webshop, hierbij moeten er per artikelen een aantal variabelen ingevuld moeten zijn, bijvoorbeeld bij een TV het aantal Hertz of Inches. Hier moet ik nog een database structuur maken, maar ik kom er niet uit.

Had zoiets in gedachte:
code:
1
2
3
4
5
6
7
8
9
+-----------+  +-----------+  +------------+
| var_groep |  | vars      |  | variabelen |
+-----------+  +-----------+  +------------+
| id        |  | id        |  | id         |
| naam      |  | groep_id  |  | artikel_id |
+-----------+  | variabele |  | groep_id   |
               +-----------+  | var_id     |
                              | waarde     |
                              +------------+


Dan zou er in var_groep de naam van de variabele-groep worden opgeslagen, daarna worden de verschillende variabele opgeslagen in vars. En dan bij het toevoegen van een artikel, worden in de table variabelen de waardes van de variabele opgeslagen.

Het zou ongetwijfeld gaan werken op deze manier, maar ik denk niet dat het optimaal gebruik van mysql is. Hoe denken jullie dat ik dit het beste kan doen?

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Is het misschien verstandig, om ook je soort groep in var_groep te zetten?
Bijvoorbeeld bij TV's...
Je hebt daar natuurlijk de 'old school' beeldbuis...
Maar ook de plasma TV en LCD TV... ;)

Als je dan de soort ook doet, kan je in je menu ook weer submenu's maken, waardoor het allemaal duidelijker is voor zowel de klant, als voor jou, want de structuur word dan ook duidelijker :)

Verwijderd

Topicstarter
GJ-tje schreef op vrijdag 22 december 2006 @ 16:37:
Is het misschien verstandig, om ook je soort groep in var_groep te zetten?
Bijvoorbeeld bij TV's...
Je hebt daar natuurlijk de 'old school' beeldbuis...
Maar ook de plasma TV en LCD TV... ;)

Als je dan de soort ook doet, kan je in je menu ook weer submenu's maken, waardoor het allemaal duidelijker is voor zowel de klant, als voor jou, want de structuur word dan ook duidelijker :)
TV is wel een ruim begrip, maar er worden dan bijvoorbeeld LCD-TV en Plasma-TV toegevoegd, dus dat is het probleem niet. Dit zijn ook niet de categoriën, maar slechts variabelen die toegevoegd kunnen worden aan een bepaalde artikel.

Heb het uitgewerkt hoe ik het dacht dat het zou kunnen werken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var_groep:
+----+------+
| id | naam |
+----+------+
|  1 | tvs  |
+----+------+

vars:
+----+----------+-----------+
| id | groep_id | variabele |
+----+----------+-----------+
|  1 |        1 |    inches |
|  2 |        1 |     hertz |
|  3 |        1 |   hdready |
|  4 |        1 | resolutie |
+----+----------+-----------+

variabelen:
+----+------------+----------+--------+----------+
| id | artikel_id | groep_id | var_id | waarde   |
+----+------------+----------+--------+----------+
|  1 |          1 |        1 |      1 |       48 |
|  2 |          1 |        1 |      2 |      100 |
|  3 |          1 |        1 |      3 |        y |
|  4 |          1 |        1 |      4 | 1024x768 |
+----+------------+----------+--------+----------+

artikelen:
+----+-------------------+
| id | naam              |
+----+-------------------+
|  1 | Sony Bravia 1203c |
+----+-------------------+


Nu heeft de Sony tv 48 inches, 100 hertz, hd-ready en een resolutie van 1024x768.

[ Voor 3% gewijzigd door Verwijderd op 22-12-2006 16:43 ]


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 05-11 09:42

JHS

Splitting the thaum.

Wat is de toegevoegde waarde van de vars table :) ? Waarom stop je de variabelen in groepen? Waarom gebruik je geen koppeltabel voor de variabelen en artikelen, nu hoort een variabele slechts bij één artikel. Waar ga je de waarde van de variabelen opslaan? Ik zou het eerder zo doen:

articletypes //LCD TV bijvoorbeeld
  id
  (...)

variables //Hz bijvoorbeeld
  id
  name
  (...)

articletype_variable //Dat Hz bij de LCD TV hoort
  article_id
  variable_id
  value

article //Sony Bravia 1203c bijvoorbeeld
  id
  articletype_id
  (...)

article_variable //De waarde van Hz
  article_id
  variable_id
  value


Overigens ook nog niet helemaal juist, denk ik, aangezien de opslag van de artikel / variabele en artikeltype / variabele opslag een beetje dubbel is :) .

edit:
Ah, ik zie dat je het iets anders bedoelde. Maar het lijkt me redelijk onlogisch om de relatie tussen een productsoort en een variabele los op te slaan, terwijl je natuurlijk kan bedenken dat er meer van dat soort relaties zullen bestaan.

[ Voor 16% gewijzigd door JHS op 22-12-2006 16:45 ]

DM!


Verwijderd

Topicstarter
JHS schreef op vrijdag 22 december 2006 @ 16:43:
edit:
Ah, ik zie dat je het iets anders bedoelde. Maar het lijkt me redelijk onlogisch om de relatie tussen een productsoort en een variabele los op te slaan, terwijl je natuurlijk kan bedenken dat er meer van dat soort relaties zullen bestaan.
Er zijn meerdere artiekel, maar deze hebben slechts één variabelengroep waar ze bij horen. En de variabelengroep bestaat de ene keer uit 3 variabelen en de andere keer uit 20, dus het moet wel dynamisch blijven.

Edit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
+----+-----------+
| id |      naam |
+----+-----------+
|  1 |       tvs |
|  2 | tandpasta |
+----+-----------+

vars:
+----+----------+-----------+
| id | groep_id | variabele |
+----+----------+-----------+
|  1 |        1 |    inches |
|  2 |        1 |     hertz |
|  3 |        1 |   hdready |
|  4 |        1 | resolutie |
|  5 |        2 |    inhoud |
|  6 |        2 |     kleur |
|  7 |        2 |  fluoride |
+----+----------+-----------+

variabelen:
+----+------------+----------+--------+-----------+
| id | artikel_id | groep_id | var_id | waarde    |
+----+------------+----------+--------+-----------+
|  1 |          1 |        1 |      1 |        48 |
|  2 |          1 |        1 |      2 |       100 |
|  3 |          1 |        1 |      3 |         1 |
|  4 |          1 |        1 |      4 |  1024x768 |
|  5 |          2 |        2 |      5 |       200 |
|  6 |          2 |        2 |      6 |     blauw |
|  7 |          2 |        2 |      7 |         0 |
|  8 |          3 |        1 |      1 |        52 |
|  9 |          3 |        1 |      2 |       100 |
| 11 |          3 |        1 |      3 |         0 |
| 10 |          3 |        1 |      4 | 1280x1024 |
+----+------------+----------+--------+-----------+

artikelen:
+----+-------------------+
| id | naam              |
+----+-------------------+
|  1 | Sony Bravia 1203c |
|  2 |     Prodent White |
|  3 |   Philips LA-1234 |
+----+-------------------+

2 artikelen toegevoegd:

Prodent White
Inhoud: 200ml
Kleur: blauw
Fluoride: nee

Philips LA-1234
Inches: 52
Hertz: 100
HD-ready: nee
Resolutie: 1280x1024


Is dit de beste oplossing voor mijn doel of heeft er iemand anders een beter idee? Ik heb namelijk het gevoel dat ik iets over het hoofd zie/verkeerd snap.

[ Voor 61% gewijzigd door Verwijderd op 22-12-2006 17:23 ]


  • Evilbee
  • Registratie: November 2002
  • Laatst online: 13:27
Je zou aan je vars-table nog een kolom met type kunnen toevoegen. Hier zet je dan het type variabele in: boolean, string, numeriek, enum. Dan kan je daar op letten als je de variabelen met de hand gaat vullen.

En je moet ff letten op je waardes in de variabelen-tabel, bij hdready gebruik je y en 0. Dat moet je ff gelijk trekken, maar dat kan je oplossen door de hierboven genoemde oplossing.

LinkedIn - Collega worden?

Pagina: 1