| MySql array | ||
|---|---|---|
|
markwell
10. sep 2013 21:03:55
Pridružen od: 6. dec 2012 886 objav 587 113 21 |
#1
Lep pozdrav! Zanima me kako se lotevate array-ov v tabelah. Vem, da se jih da vstaviti (serialize()), vendar se mi zdi, da je skoraj vedno bolje uporabljati novo tabelo namesto array-a. Mnenja? Supremacist mysogonist straight white male. Respect my pronouns!
|
|
|
technolog
11. sep 2013 07:22:58
Pridružen od: 14. nov 2011 598 objav 768 300 22 |
#2
PostgreSQL podpira array-e nativno, kar pomeni, da imaš lahko stolpec tipa recimo BIGINT[][]. Edina omejitev je ta, da morajo biti vsi elementi istega tipa, se pravi ne moreš imet arraya polovico INT, polovico TEXT. In ne, ni res, da je skoraj vedno bolje uporabiti novo podatkovno tabelo. Z linuxom že 7 let. Pro web development.
|
|
|
technolog
11. sep 2013 07:51:00
Pridružen od: 14. nov 2011 598 objav 768 300 22 |
#3
Pa še tole, namesto serialize() rajš uporab json_encode(), če so podatki enostavnih tipov. Ker v primeru, da pride do korupcije, imaš še neke šanse, da podatke rešiš. Če boš šaltal na PostgreSQL, maš prov tip stolpca JSON, ki garantira sintaktično pravilnost. Z linuxom že 7 let. Pro web development.
|
|
|
s1l3
11. sep 2013 08:02:04
Pridružen od: 6. jun 2012 345 objav 320 60 1 |
#4
Po moje je odvisno ali bi rad, da je zadeva searchable ali ne. Drugače pa jaz namesto serialize() uporabljam JSON. |
|
|
technolog
11. sep 2013 08:12:54
Pridružen od: 14. nov 2011 598 objav 768 300 22 |
#5
Če ima MySQL, potem seveda, če hoče zadevo indeksirat, potem je prisiljen normalizirat podatek in prestavit zadevo v novo tabelo. Postgres lahko indeksira tudi tabelarni tip, recimo BIGINT[][]. Se pravi, če ne rabiš nikoli delat nobenih poizvedb po podatkih, potem je serializacija odgovor (JSON, če so podatki enostavni, sicer pa serialize(), če imaš poljubne (svoje) razrede). Z linuxom že 7 let. Pro web development.
|
|
|
SlimDeluxe
11. sep 2013 08:24:07
Pridružen od: 29. apr 2010 1223 objav 1022 144 9 |
#6
Jaz sem iz prakse ugotovil, da je za array v stolpcu edini legalen primer, ko imaš neko skupino podatkov, ki niso searchable in sortable, najpomembnejše pa da niso v relaciji z nobenim drugim podatkom, ne v isti tabeli, še manj pa v drugih, saj je tako nemogoče ohranjati podatkovno integriteto (razen, če želiš vse možne dogodke programirati sam). Freelance Web Developer
|
|
|
markwell
11. sep 2013 11:42:45
Pridružen od: 6. dec 2012 886 objav 587 113 21 |
#7
Hvala za odgovore mojstri, dobil sem točno odgovore ki sem jih potreboval! Problem sem imel saj: Imam podatkovne pare (število le teh variira) in morajo biti shranjeni v enem stolpcu vrstice, saj gre za lastnosti. Vrstica 1 stolpec 1: Vrstica 2 stolpec 1: Vrstica 3 stolpec 1: Ker podatki niso iste dolžine ne gre narediti novih stolpcev. Zadevo sem rešil preko uvedbe nove tabele. Zdi se mi najlažje in še searchable je. Lp, Marko Supremacist mysogonist straight white male. Respect my pronouns!
|
|
|
technolog
11. sep 2013 12:49:50
Pridružen od: 14. nov 2011 598 objav 768 300 22 |
#8
Če so barve fiksne, potem v izogib raznim zatipkanim besedam narediš nekaj takega. TABELA: barve In potem tabelo lastnost: FOREIGN(objekt) INT // kateremu objektu pripada recimo "3 oranžne" Z linuxom že 7 let. Pro web development.
|
|
|
markwell
11. sep 2013 13:26:23
Pridružen od: 6. dec 2012 886 objav 587 113 21 |
Supremacist mysogonist straight white male. Respect my pronouns!
|
|
|
SlimDeluxe
11. sep 2013 14:50:16
Pridružen od: 29. apr 2010 1223 objav 1022 144 9 |
#10
Z drugimi besedami M:N relacija "entiteta <> barva" z dodatnim podatkom 'št. kosov'. Freelance Web Developer
|
|