Kaip tavo nusotabiajam dziagsmingam Vajeeeeeeeeeeeee........... siulau pamastyti, imkim kad sustatinesi lietuviu geneologini medi, su visais proseneliais bus keliolika milijonu(tik idomu kas juos sugaudys), na o jei ponus Lordus i didziosios salos surasinesi, jie nepagailes uz savo saknu analize pinigeliu, paimsi visus kaip objekta i vidurini triju lygiu architekturos sluoksni, kad susuktum kaip tave mamyte moke savo dziaugsminga vAJEEEEEEEE :). Vidurinis sluoksnis tik LOGIKOS sluoksnis ir ne daugiau, o ne duomenu, manipuliacijos su lentomis paemus viska i datasetus microsoftas suteikia kaip patoguma, atliekant manipuliacijas su nedidelemis abzelemis, kuriant zodinelius, paveikslelius ar mano klasioku augintiniai interfeisus ir nedaugiau. "Mindaugas T" <min202020@gmail.com> wrote in message news:iklba2$er1$1@trimpas.omnitel.net... > Vaje kaip nepataikei su "visada". > > 1. Jei yra normali trijų sluoksnių architektūra - reiškia db yra tik > objektų būsenoms saugoti, o ryšiai tarp objektų - pačių objektų reikalas > (biznio objektų, ne db objektų). > > 2. Premature optimization is root of all evil. Gal objektų hierarchija > neriboto gylio, o UI dizainas toks, kad ekrane atvaizduojami tik tėvai su > vaikais (be senelių ir be anūkų)? > > M. > > >> Bet kokio dydzio lentai, cia viena lenta. Kuo ji didesne, tuo labiau turi >> buti grieztai organizuota viena, duomenys istraukiami viena sql uzklausa. >> Jordanai tu per nelyg iprates visus duomenis pasiimti i savo megstamus >> web >> servisus, ir po to atlikti manipuliacinius rysius tarp ju >> Tai yra bet kokiu atveju neteisinga, tau minejau ne karta. Duomenis >> visada >> turi traukti taip, lyg butu lentose milijardas irasu, kitu atveju tavo >> projektai optimaliai veiks, kol lentos bus pustustes. >> "Jornada Del Muerto"<Jornada@Lythum.lt> wrote in message >> news:ikl5th$551$1@trimpas.omnitel.net... >>> Nedidelem db laisvai daryt galima 1 lenta manau: >>> >>> objektas { id, parent_id, name, desc } >>> >>> kur parent id yra tevo id, po to traukt aliasindamas gali, pvz: >>> >>> >>> select >>> o1.id as o1_id, >>> o1.name as o1_name >>> -- vaikai >>> o2.id as o2_id, >>> o2.name as o2_name >>> -- anukai >>> o3.id as o3_id, >>> o3.name as o3_name >>> from >>> objektas o1 >>> left join objektas o2 on >>> o2.parent_id = o1.id >>> left join objektas o3 on >>> o3.parent_id = o2.id >>> >>> Cia aisku tik pavizdys kaip susijoinina lenta su pacia savimi, >>> nezinau >>> kokia programavimo kalba darysi, paprastai medinem strukturom kurios >>> didelio ar neriboto dydzio gerai tinka: >>> >>> 1. rekursija >>> 2. lazy load -lazy load tai kada uzkrauni tik medzio pagrindinius >>> elementus, o kada vartotojas atidarineja kazkuri uzkrauni jo vaikus ir >>> t.t.. ta prasme is karto nekraunamas visas medis, o tik kada vartotojui >>> to >>> objekto vaiku prireikia, tai labai gerai tinka kada medis didelis ar net >>> begalinis. >>> >>> Pvz tureciau as medzio controla, butu kazkas tokio: >>> >>> >>> // Isivaizduokime TreeNode father Tag memberis visada saugos node id >>> void FillTree (TreeNode father) { >>> >>> // nezinau kokiu budu dirbsi su db tai tik improvizuoju, kad >>> daleiskime >>> turime darbo su db biblioteka kuri turi tokia funkcija >>> // paimame is db tik konkretaus elemento vaikus >>> DataTable table = db.Query( >>> "Select * From objektas Where prent_id = " + >>> father.Tag.ToString()); >>> >>> / ** tokiu budu neprireikia mums visam algoritmui jokios sudetingos >>> SQL >>> uzklausos **/ >>> >>> >>> // visus viakus pridedame prie medzio >>> foreach(DataRow row in table.Rows){ >>> >>> // sukuriamas vaiko medinis elementas >>> TreeNode kid = new TreeNode( >>> row["name"].ToString()); >>> >>> // priskiriamas jam jo id >>> kid.Tag = row["id"].ToString(); >>> >>> // Kazkada vaikas irgi tampa tevu :) >>> // krauname vaiko vaikus - kvieciame sia funkcija tik kad >>> pildytu >>> ji - kaip sakant darome rekursija >>> FillTree (kid); >>> >>> // pridedamas vaikas prie medzio >>> // rasyta is galvos, o su tree dirbau senokai tai cia gali >>> paklaidu >>> buti, svarbu kaip mazdaug veikt turi parodyt noriu >>> // is esmes prisidejo vaikas ir jo visi vaikai ir vaiku vaikai >>> ir >>> t.t.. >>> // galima buvo pries kvieciant FillTree tapati daryti tada >>> pirmiau >>> ji pridetu o tik po to jo vaikus >>> father.Nodes.Add(kid); >>> } >>> } >>> >>> >>> O lazy load'ui labiau tinka OOP principas, isivaizduokime medzio >>> elementas >>> yra objektas: >>> >>> class Node : TreeNode { >>> >>> // metoda kviesti geriausiai kaip kreipiamasi i tree elementa kad >>> pakraut vaikus >>> public vod LoadKids (){ >>> DataTable table = db.Query( >>> "Select * From objektas Where prent_id = " + >>> this.Tag.ToString()); >>> >>> // visus viakus pridedame prie medzio >>> foreach(DataRow row in table.Rows){ >>> >>> // sukuriamas vaiko medinis elementas >>> TreeNode kid = new TreeNode( >>> row["name"].ToString()); >>> >>> // priskiriamas jam jo id >>> kid.Tag = row["id"].ToString(); >>> father.Nodes.Add(kid); >>> } >>> } >>> } >>> >>> >>> Na va siek tiek logikos pamastymams, kaip galima padaryti net neparasius >>> jokios sudetingos SQL uzklausos, o trivialiai. >>> >>> Sekmes! >>> JDM >>> >>> "Deivas"<sd@dfds.lt> wrote in message news:op.vrn66yehf76c7y@merkys... >>> Dėkui labai visiems. Aš nei studentas nei ką, tiesiog prireikė čia tokį >>> smulkų moduliuką parašyti, galvojau bus visai simple, bet va, susidūriau >>> su tokiu galvosūkiu. Dar neturėjau laiko išbandyti pasiūlymų, bet manau, >>> kad kas nors tiks. >>> >>> Tiesa, prieš kelias dienas atėjo mintis, kad galbūt mano lentelės >>> struktūra tokima reikalui netinkama. Gal reikia perdaryti kitaip. Čia >>> kažkas, berods, panašų sprendimą minėjo. Aš galvoju, kad reikia daryti >>> dvi >>> lenteles. >>> Pirmoje - id, vardas, pavarde. >>> Antroje - id, tevo id, motinos id. >>> >>> Tuomet gal būtų paprasčiau. Kurį variantą geriau pasirinkti. Duomenų >>> nebus >>> labai daug - na į metus koks 100 įrašų. >>> Dar kartą ačiū. >>> >>> >>> On Thu, 24 Feb 2011 21:41:54 +0200, Deivas<sd@dfds.lt> wrote: >>> >>>> Sveiki, >>>> >>>> gal pagelbėsit. Tarkim turiu tokią lentelę: >>>> >>>> Id >>>> tevoId >>>> motinosId >>>> vardas >>>> pavarde >>>> >>>> Kaip parašyti užklausą, kad parodytų asmens tėvus ir senelius, t.y.: >>>> >>>> id, vardas, pavarde, TevoVardas, MotinosVardas, TevoTevoVardas, >>>> TevoMotinosVardas, MotinosTevoVardas, MotinosMotinosVardas >>>> >>>> Parašiau lakoniškai, bet tikiuosi esmę supratot. Ačiū iš anksto jeigu >>>> užvesit ant kelio. >>> >>> >>> -- >>> Using Opera's revolutionary email client: http://www.opera.com/mail/ >> >> >