Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

struktura foldera u bazi

[es] :: .NET :: struktura foldera u bazi

[ Pregleda: 4998 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Deep|Blue
Srce Srbije

Član broj: 631
Poruke: 1431
*.ptt.yu

ICQ: 101830817


+314 Profil

icon struktura foldera u bazi11.03.2004. u 23:00 - pre 244 meseci
Jel ima neko ideju za cuvanje strukture foldera u bazi. ne mogu da spakujem bazu, da ne bude redudantna i da se relativno jednostavno moze izvesti select.
"Hmmm", rekao je, "...suprostavlja se nadrealizmu prikrivene metafore..." Razmišljao je tome na trenutak, a onda je zatvorio beležnicu s mrkim osmehom.
"I smrt je za njih suviše dobra"
 
Odgovor na temu

blackman

Član broj: 14516
Poruke: 67
195.252.107.*



Profil

icon Re: struktura foldera u bazi12.03.2004. u 09:11 - pre 244 meseci
Ako sam te dobro razumeo, treba da stavis u neku tabelu strukturu foldera.

Ono sto bi trebalo da ti pomogne je da napravis jednu tabelu koja ce da sadrzi
polje "root..." sa ID-om glavnog foldera, polje "subfold..." sa ID-om subfoldera
i polje "namesub..." sa nazivom subfoldera.

Select iz ovakve tabele bi bio jednostavan.

Pozdrav !
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: struktura foldera u bazi12.03.2004. u 10:39 - pre 244 meseci
Imaš više načina da skladištiš folder strukturu u bazi. Najjednostavnija za tovarenje je:

FolderID int identity
ParentID int (autoreference na FolderID)
FolderName nvarchar(xxx)

gde ćeš root folder da ubaciš kao parent samom sebi. Strutkura je veoma efikasna, lako se širi i po horizontali i vertikali i omogućava neke komplikovane akcije kao što je MOVE celog stabla nekog foldera sa jednog mesta na drugo. Ovaj sistem je zapravo preslikan realni file-sistem.
Problem sa ovom strukturom je selektovanje određene vrste podataka, npr. "daj mi sve foldere 3 nivoa", "daj mi punu putanju svih krajnjih foldera" Struktura je rekurzivna pa joj SELECT ne leži baš najbolje. Problem je i multi-level parenting, tj. ako je folder A ćaća B-u a B ćaća C-u i ti sa update uradiš MOVE tako da C postane ćale od B, B i C će pokazivati jedan na drugog a niko neće pokazivati na njih, tako da će postati siročići, dakle potrebno je i u samom kodu održavati integritet podataka.

Druga alternativa je tabela:

FolderPosition int
FolderName nvarchar(xxx)

root folder nije prisutan (ili mu je position = NULL). Svi folderi prvog nivoa imaju position od 1-9, drugog nivoa od 10-99, trećeg 100-999. Roditeljstvo se uspostavlja stepenom desetke, tj. folderu čiji je position 234, parent je folder 23, a njemu folder 2. Ograničenja po horizontali su očigledna (max 9 foldera u root-u, svaki folder maximalno 10 podfoldera), ali se ovo može proširiti na uštrb vertikalnog ograničenja, tako što ćete parenting raditi po stepenu većem od 10 (recimo hex, 16)
Pošto svaki folder nosi svoju poziciju ne treba rekurzija da bi se odredio nivo određenog foldera i može se lako doći do bilo kog foldera iznad njega. Problem je što nikakav SQL referential integrity ovde ne pomaže, sve mora da se održava u kodu. Inače, ovaj sistem koristi 99% knjigovodstvenog softvera koji sam video kod nas da opiše sintetiku i analitiku (uglavnom se koriste stringovi za position), samo što je kod za održavanje integriteta uglavnom nepostojeći/loš.

U svakom slučaju ovo je jedna od retkih situacija u kojima može da se kaže "reduntantnost je dobra". Po svojoj prirodi ove baze se mnogo više čitaju nego što im se menja sadržaj tako da je ekstra vreme utrošeno da se stvore redundantni podaci i da se softverski održi integritet između tih redundantnih podataka se višestruko isplati u brzini vađenja informacija. Dakle, stavi na papir SVE query-e koje hoćeš da imaš (opisno), onda za svaki izvuci neki metod koji će ti omogućiti brzo izvršavanje i onda sva "skupa" polja ma koliko redundantna bila ubaci u tabelu i napravi dobar kod za insert/update.

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: struktura foldera u bazi12.03.2004. u 13:49 - pre 244 meseci
A mozda ti je najjednostavniji nacin (doduse slican drugom mmixovom resenju) da u jednom polju drzis ceo path (i eventualno nivo u jednom int polju). jeste redundantno, ali je brzo. Pod uslovom da ti nazivi foldera nisu predugacki.

 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: struktura foldera u bazi12.03.2004. u 23:34 - pre 244 meseci
Mogu ti preneti svoja iskustva.
Radio sam na oba navedena nacina (mmix - hvala na elaboraciji), sa tim da sam za manipulaciju clanovima strukture u aplikacijama koristio treeview kontrolu - koja sama po sebi vec ima ugradjene kontrolne mehanizme (jedinstvena vrednost svakog node-a, nije moguc crossreference, nivoi, putanje ...).
Procedura je bila:
1.Rekurzivno punjenje treeview-a iz tabele
2.Korisnik manipulise podacima
3.Ako korisnik zeli da sacuva izmene, cela struktura se vraca nazad u tabelu
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.vdial.verat.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: struktura foldera u bazi27.03.2004. u 14:02 - pre 244 meseci
Sve metode koje ste naveli su dobre kada se radi o brzom unosu medjutim citanje takve strukture je sporo. Pao mi je na pamet metod koji je optimizovan za brzo citanje, mana sa druge strane je relativno komplikovan unos i relativno komplikovan update ;).

Primer stabla(direktorijuma)
Code:

/mnt
   | hardc
         | mp3 
   | cdrom
   | floppy
 /home
     | dejan
           |.kde

tablea dir ima (ID, ime), i tabela relacija ima (roditelj,dete,dubina)
Code:

dir
ID |  Ime
------------
1   | mnt
2   | hardc
3   |  mp3
4   | cdrom
5   |  floppy
6   |  home
7   |  dejan
8   | .kde


tablea relacija

Code:

idR | idD | dubina
------------------------
1    |  1     |   0
2    |   2    |  0
...
8    |   8     | 0
1    |   2     |  1
1     |   3    |  2
2     |   3    | 1
1     |   4    | 1
1     |  5     | 1
6     |  7     | 1
6     |  8     | 2
7     |  8     | 1

Problem je samo sto se za svaki direktorijum unosi n slogova gde je n njegova dubina. Ali lako dobijate primera radi direktorijume koji su podirektorijumi ili koji su nad direktorijumi datog direktorijuma itd... Vrednosti sa dubinom 0 i nisu morali da se unose ali ovako ubrzavaju stvari jos malo, ne morate sami explicitno da dodajete i taj direktorijum koji trazite ako vam treba.

 
Odgovor na temu

[es] :: .NET :: struktura foldera u bazi

[ Pregleda: 4998 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.