Zdokonalenie synchronizácie dát

Programovacie jazyky, rady, poradňa...
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Zdokonalenie synchronizácie dát

Príspevok od používateľa S-player »

Mám zariadenie ,ktoré obsahuje vlastnú databázu a tá vyzerá následovne:

Kód: Vybrať všetko

Parents:
id | title
0    A
1    B
2    C

Childs:
id|parent_id|title
0  0         XXX
1  0         YYY
2  0         ZZZ
taktiež mám aj online databázu ,ktorá vyzerá podobne. Čo potrebujem je synchronizovať tieto položky. Tie zasielam následovne (JSON):

Kód: Vybrať všetko

{data: [{id: 0, type: "parent", title: "A"}, {type: "child", title: "XXX", connectedTo: 0}, {type: "child", title: "YYY", connectedTo: 0}, {type:"child" ,title: "ZZZ", connectedTo: 0}]}
Vyššie zobrazený JSON môže obsahovať kľudne aj iných rodičov/potomkov. Môžete mi tu oponovať tým ,že je lepšie umiestniť rodičov do poľa parents a potomkov do childs aby to nebolo všetko pokope s "type" to ,ale nieje momentálne podstatné.

Na strane servera následne prejdú všetky položky cyklom a predajú sa do funkcie "save". Môj problém je ten ,že potomkov musím nejakým spôsobom spojiť s rodičom. To robím za pomoci vlastnosti "connectedTo". Na strane SS sa následne IDčko každého nového parenta sevjne do premennej $parentIDs[$data["id"]] = lastInsertedId ,ak potrebuje potomok IDčko svojho rodiča tak si ho vytiahne z poľa za pomoci connectedTo.

Poprosím Vás aby ste vzali do úvahy to ,že JSON nemusí vyzerať stále tak ako to vyššie. Rodič už môže byť kľudne sejvnutí tz. potomkovia nepotrebujú connectedTo ,ale použije sa rovno parentId čo je IDčko rodiča v hlavnej (Online) databáze. Tiež sa nemusia vždy zasielať dáta v tvare "rodič, potomok, potomok" môže isť len o potomkov...

Riešenie uvedené vyššie funguje bez problémov mojím problémom ,ale je (Ako aj v iných mojich témach) ,že niesom dostatočne spokojný s týmto riešenim a niečo mi hovorí ,že to môže byť aj lepšie. Ak si to myslíte aj vy tak by som bol rád ,ak by ste mi navrhli nejaké iné riešenia/nápady...


// Štruktúra typu [[rodič, potomok, potomok], [rodič, potomok]...]; neprípada do úvahy
// Riešiť to tak ,že najprv pošlem rodičov -> obdržím ich IDčka z hlavnej DB a potom až zašlem potomkov s týmito IDčkami taktiež nechcem použiť.

Ďakujem
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8219
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zdokonalenie synchronizácie dát

Príspevok od používateľa harrison314 »

Sice si nenapisal, copresne znamju ti potomkovia a rodicia, ale ja by som to napchal iba do jednej tabulky.
A to ostatne sa mi zda ako normalne riesenie, ktore by som zvolil aj ja.
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Zdokonalenie synchronizácie dát

Príspevok od používateľa S-player »

Do jednej tabuľky to nemôžem nahádzať bol by v tom hrozný bordel a aj keby som to tam nahádzal tak či onak potrebujem potomkov prepojiť s rodičom. Čo sa týka rodič -> potomkovia kľudne si to môžeš predstaviť ako:

Kód: Vybrať všetko

---> Meno rodiča
- 1. dieťa
- 2. dieťa
- 3. dieťa

---> Meno rodiča
- 1. dieťa

...
* Rodič môže mať ľubovoľný počet detí.
* Tabuľka parents obsahuje niekoľko rôzných rodičov a tak je to aj s tabuľkou childs ,ktorá obsahuje deti všetkých rodičov...
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8219
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zdokonalenie synchronizácie dát

Príspevok od používateľa harrison314 »

Takze, jedno dieta moze mat viacerych rodicov?
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Zdokonalenie synchronizácie dát

Príspevok od používateľa S-player »

Nie, nie... Rodič môže mať ľubovoľný počet detí avšak tie len jedného rodiča. Neviem teraz čo ťa zmýlilo. Napísal som ,že všetci rodičia sú v jednej spoločnej tabuľke a rovnako tak aj deti. Nápis "1. Dieťa" som myslel ako prvé, druhé...
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8219
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zdokonalenie synchronizácie dát

Príspevok od používateľa harrison314 »

Tak to potom kludne supni do jednej tabulky, rodic bude mat vzdy parent_id = 0 a dieta bude mat parent_id rodica, teda pokial nemaju idne rozdielne atributy.

Pomilila ma ta ukazka kde mas dvakrat "1. dieťa".

//autoeditácia príspevku (18 Nov 2013, 22:55)
Ci mas iny dovod, to mat v dvoch tabulkach?
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Zdokonalenie synchronizácie dát

Príspevok od používateľa S-player »

Nerozumieme sa, nevadí skúsim vysvetliť ešte raz.

- Tabuľka s rodičmi drži niekoľko rôzných rodičov (ID 1, ID 2...) to je možné vidieť v prvom príspevku.
- Tabuľka detí drži kompletne všetky deti tz. deti rodiča id 1 ,ale aj deti rodiča id 2 čo je prakticky úplne iný rodič s inými deťmi.

Ak by som to dal dokopy tak by bol z toho bordel (To som spomenul už vyššie), každý rodič by mal zbytočne voľný jeden stĺpec (parent_id) ,ktorý potrebujú deti aby sa vedelo ,že tie patria pod tohto rodiča a tie zase pod tohto... +návrh ,ktorý som zobrazil vyššie je len príklad v skutočnosti má parent v mojej DB oveľa viac stĺpcov a rovnako tak aj child. Je to ,ale úplne jedno kedže to aj tak nierieši ten problém ,na ktorý sa pýtam.

// 1. Dieťa som myslel ako prvé dieťa nie ako ID.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8219
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zdokonalenie synchronizácie dát

Príspevok od používateľa harrison314 »

OK, tak to necham uz tak.
To na co sa pytas sa mi zda vporiadku, mozno este to obalit do tranzakcie (ak mozes).
Napísať odpoveď