Kezdőoldal » Számítástechnika » Programozás » MySQL-ban, hogy lehet azt...

MySQL-ban, hogy lehet azt megoldani ha egy mezőnek több értéke lehet?

Figyelt kérdés

Pl. van egy properties tábla benne a termék tulajdonságok neveivel és azonosítóival egy products táblában meg a termékek.

Ha egy termékre valamilyen tulajdonságot szeretnék rárakni akkor a products_properties táblában létrejön egy új rekord amiben benne van a property azonosítója, a termék azonosítója és végül maga az érték ami legyen 'value'.

Itt a 'value' milyen értéket kell kapjon ha abban lehet int, float, boolean és varchar?

Én úgy gondolom, hogy ebben az esetben varchar lenne a legjobb mert abban lehet az előző hármat is tárolni.

Van ettől jobb, másabb megoldás?

Még olyat találtam ahol minden érték típusnak létrehoznak egy külön táblát tehát lenne products_properties_text, products_properties_int, products_properties_boolean és products_properties_float ahol a 'value' mindig az adott tábla szerinti érték típust viseli.

És azt is olvastam, hogy ebben az esetben a MongoDB ajánlott inkább mert ott nincsenek előre definiált értékek.



2020. szept. 29. 15:49
1 2 3
 1/27 anonim ***** válasza:
20%

Hát, ha egy adatbázisban ilyenekhez kell folyamodni, akkor ott az adatbázisstruktúrában valami nagyon nem jó. De ha nagyon muszáj meglépni, akkor json adattípusként tárolnám, mert azt könnyen tudod kezelni a programodban. Bár itt is írják, hogy habár lehet így tárolni, ez nem azt jelenti, hogy így kell...


[link]

2020. szept. 29. 16:18
Hasznos számodra ez a válasz?
 2/27 anonim ***** válasza:
32%

"Én úgy gondolom, hogy ebben az esetben varchar lenne a legjobb mert abban lehet az előző hármat is tárolni."

Én is így gondolom.

2020. szept. 29. 16:25
Hasznos számodra ez a válasz?
 3/27 anonim ***** válasza:
27%

Őszintén szólva ez már programozói oldalról sem teljesen oké. Tegyük fel, hogy mondjuk C#-ban fejlesztesz, a tábla reprezentációja hogyan nézne ki?

List<KeyValuePair<string, dynamic>>


Én azt csinálnám, hogy van maga a termékeket tároló tábla:

- product_id

- name

- product_type


Minden egyes product type-nak lenne táblája, az adott termékfajta jellemzőivel. Ez se könnyíti meg a kezelhetőséget, de számomra nem annyira tűnik kókányolásnak, mint egy kulcs-érték tábla.


Persze az igazi megoldás tényleg egy document alapú NoSQL adatbázis lenne szerintem.

2020. szept. 29. 17:40
Hasznos számodra ez a válasz?
 4/27 anonim ***** válasza:
28%
varchar nem jó. Lassú lesz az adatbázis lekérdezés egy idő után. nvarchar-t használj.
2020. szept. 29. 18:09
Hasznos számodra ez a válasz?
 5/27 anonim ***** válasza:
16%

Ha jól értem, ez a szóba forgó tábla:

products_properties(id, product, value)


Bocs, de nem értem, hogy a value az mi akar lenni? Ha beírom, hogy "fűnyíró", akkor azt értem, hogy a termék egy fűnyíró. De azt írod lehet pl. számot is tenni a value-ba. Azt hogyan kellene értelmeznem, hogy "2"? A termék 2? 2 mi?


Valami logikai baki van itt, vagy csak én nem értem, hogy mire való ez a tábla. Elmagyarázod?

2020. szept. 29. 20:55
Hasznos számodra ez a válasz?
 6/27 anonim ***** válasza:
32%
Szerintem a value az az hogy hány db. Tehát product az fűnyíró value 2 azaz 2db fűnyíró van. Nem nehéz kilogikázni
2020. szept. 29. 21:38
Hasznos számodra ez a válasz?
 7/27 anonim ***** válasza:
#6: Azt írja, hogy bármilyen érték lehet, nem csak szám. Ez a problémám vele.
2020. szept. 29. 22:00
Hasznos számodra ez a válasz?
 8/27 anonim ***** válasza:
82%

#7: szeritnem ilyesmire gondol:

termék: XY telefon

property: kijelzőméret

value: 6.5

property: RAM

value: 128

property: szín

value: kék


És nyilván az egyes propertykhez van mértékegység valahol tárolva.

2020. szept. 29. 22:56
Hasznos számodra ez a válasz?
 9/27 anonim ***** válasza:

Értem, tehát a következőket tároljuk a termékről:


products_properties(2, 'xbox', '2')

products_properties(43, 'xbox', 'fekete')

products_properties(44, 'xbox', '12')

products_properties(67, 'xbox', '1G')

products_properties(99, 'xbox', '512')


Honnan tudom, hogy melyik value micsoda? Ennek így semmi értelme nincsen, ez szimplán egy rossz adatszerkezet. Adatbázisban nincs ilyen, hogy kevert adattípus, azokat szét kell választani külön-külön.


Pl. a fenti példa esetén products_colors, products_disksize, stb. vagy egyetlen táblába value_color, value_disksize.

2020. szept. 29. 23:03
Hasznos számodra ez a válasz?
 10/27 anonim ***** válasza:
82%

#9:


Szerintem így érti a kérdező:

products_properties(2, 5, '2')

products_properties(43, 5, 'fekete')

products_properties(44, 5, '12')

products_properties(67, 5, '1G')

products_properties(99, 5, '512')


és van egy producta támla:

1, tv

2, laptop

5, xbox


és egy proprety tabla:

43, szin

67, ram

99, hdd

2, ?

44, ?

2020. szept. 29. 23:26
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!