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?


všeč(0) ni všeč(0) spam(0)
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.


všeč(1) ni všeč(0) spam(0)
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.


všeč(1) ni všeč(0) spam(0)
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.


všeč(1) ni všeč(0) spam(0)
 
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).


všeč(2) ni všeč(0) spam(0)
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).

Primer v moji aplikaciji je seznam stolpcev tabele izdelkov. Te uporabnik obkljuka z namenom da naj se mu prikazujejo v backend katalogu (enim strankam so pomembni eni, drugim pa drugi podatki).


všeč(1) ni všeč(0) spam(0)
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.

Predstavljajte si, da morate v tabelo vnesti:



Vrstica 1 stolpec 1:

3 črne, 2 modre



Vrstica 2 stolpec 1:

0



Vrstica 3 stolpec 1:

2 zeleni, 4 oranžne, 5 bež



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


všeč(0) ni všeč(0) spam(0)
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

PRIMARY INT

TEXT ime_barve



In potem tabelo lastnost:



FOREIGN(objekt) INT // kateremu objektu pripada recimo "3 oranžne"

FOREIGN(barva) INT

INT število


všeč(1) ni všeč(0) spam(0)
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
#9

Hvala techolog. V tem primer sicer je barv neomejeno število.


všeč(0) ni všeč(0) spam(0)
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'.

V življenju še nisem imel problema zaradi preveč normalizirane oblike, obratno pa kolko češ :)


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se