Topic: Del dvejų skirtingų vartotojų grupių įrašų apjungimo

Sveiki,

iškilo toks klausimas dėl duomenų bazės struktūros. Yra dvi skirtingos vartotojų grupės su kiekybiškai ir kokybiškai skirtingais atributais (na gal pirmi 7 atributu laukeliai sutampa).
šiems vartotojams sukurtos dvi atskiros lentelės. Dabar noriu sukurti forumo įrašus. Kolkas sugalvojau daryti dvi atskiras lenteles kiekvienai vartotojų grupei, bet optimaliau būtų sukurti vieną forumo įrašų lentelę. Gal turite minčių kaip tai padaryti?

Re: Del dvejų skirtingų vartotojų grupių įrašų apjungimo

Jeigu klausi teoriškai, ir tau svarbu tik atsakymas - kaip - tai tiesiog didink schemos normalizaciją. Tokiu būdu tavo skirtingi atributai išsikels į kitą lentelę kaip atskiros esybės, bus papildoma lentelė susieti vartotojų grupes su atributais. Taip pat galėsi naujai kuriamo "forumo" temas ar žinutes sieti su vartotojo grupėm ir taip leisti matyti/nematyti/galėti_redgauoti/negalėti_redaguoti tipo funkcijas.

O praktiškai tai reikėtų ir matyti praktiškai ką tu turi (kokios schemos) ir ką tu tiksliai nori padaryti, ar kas konkrečiai nesigauna.

3 (edited by saturnas 2012-06-12 15:25:16)

Re: Del dvejų skirtingų vartotojų grupių įrašų apjungimo

minde wrote:

Jeigu klausi teoriškai, ir tau svarbu tik atsakymas - kaip - tai tiesiog didink schemos normalizaciją. Tokiu būdu tavo skirtingi atributai išsikels į kitą lentelę kaip atskiros esybės, bus papildoma lentelė susieti vartotojų grupes su atributais. Taip pat galėsi naujai kuriamo "forumo" temas ar žinutes sieti su vartotojo grupėm ir taip leisti matyti/nematyti/galėti_redgauoti/negalėti_redaguoti tipo funkcijas.

O praktiškai tai reikėtų ir matyti praktiškai ką tu turi (kokios schemos) ir ką tu tiksliai nori padaryti, ar kas konkrečiai nesigauna.

Na dabar lenteles atrodo maždaug taip.

Vatotojas_A_tipo
A_tipoID
Vardas
Adr.
Tel.
el.p.
Atr_A
Atr_B
Atr_C ....

T.y 15 laukelių

Vartotojas_B_tipo
B_tipoID
Vardas
Adr.
Tel.
el.p.
Atr_M
Atrs_N
Atr_O
Atr_R...
t.y. 30 laukelių

A_tipo_tema
TemaA_ID
Temos_pav
A_tipoID

B_tipo_tema
TemaB_ID
Temos_pav
B_tipoID

A_tipo_irasas
IrasasA_ID
Irasas
TemaA_ID
A_tipoID

B_tipo_irasas
IrasasB_ID
Irasas
TemaB_ID

Mano atveju yra 2-jų tipų vartotojai. Taigi klausimas kaip padaryti, kad forumo įrašus ir temas galėčiau sukelti į atitinkamas vienas lenteles t.y. butu ne forumo temos lentele *2 ir/ar forumo irasu lentele *2 ,o tik po viena? Koks geriausias sprendimas?

Re: Del dvejų skirtingų vartotojų grupių įrašų apjungimo

Papraščiausiai prie temos/įrašų lentelių pridėk po papildomą stulpelį, kuriame būtų identifikuojamas vartotojo tipas, tada kitose vietose pagal tą stulpelį ir vartotojo tipą atitinkamai atfiltruosi ką rodyt o ko ne.

Koks "geriausias" būna - neaišku, kartais geriausias yra kai greičiausia realizacija, kartais, kai veikia greičiausiais, kartais, kai atitinka kažkokius tai ilgalaikius tikslus, kartais kai atitinka sistemos gaires ir standartus, ir t.t.

5 (edited by saturnas 2012-06-13 14:06:40)

Re: Del dvejų skirtingų vartotojų grupių įrašų apjungimo

Problema vis dar neišspręsta :(.
Sugalvojau, kad galima sukurti atskirą lentelę su atskiru - universaliu indeksiniu raktu visoms vartotoju lentelėms. t.y. šioje lentelėje esantis indeksas susikurtu ir būtu įkeliamas į kiekvieną iš vartotojų lentelę kai tik toks vartotojas sukuriamas, bet dabar užstrigau, kaip tą universalų indeksą turinčią lentelę sukurti (taip, kad joje pvz.: butu PrimaryID; UserType_ID; UserID, kur User_ID yra vienoje iš lentelių A arba B esantisID, o tipas tai A arba B vartotojo tipas)  ir prijungti prie abiejų vartotojų lentelių?
Turint tokį universalų raktą kaip ir galėčiau sukurti vieningas forumo įrašų ir temų lenteles visoms vartotoju grupems, o ne skaidyti jas kiekvienai vatotoju grupei.

Re: Del dvejų skirtingų vartotojų grupių įrašų apjungimo

Pradėk nuo to, kad susikurti vieną lentelę visiem vartotojam:

Lentelė: Vartotojai
============
VartotojoID
VartotojoTipas
...