bfj Posted December 23, 2010 Report Share Posted December 23, 2010 Kāda tabula satur lauku 'type', kas tiek izmantots, lai grupētu tabulas ierakstus konkrētās grupās. Tabula var saturēt, piemēram lietotājus, kādus ziņu rakstus utml. Uzskatāmības un saprotamības labad programmā tiek ieviestas konstantes atbilstošajiem tipiem ('type' vērtībām) - tas PHP valodā, kādā C# tas varētu būt ENUM. Papildus varbūt arī var ieviest konstantes ar atbilstošiem tipu nosaukumiem (ja tie kaut kur jārāda lietotājam - teiksim, dropdownā). Vai nepieciešams ieviest atsevišķu tabulu, kur glabājas atbilstošie tipi, uz kuriem referencējas jau minētais 'type' lauks? Būtībā, tam ir savi plusi, teiksim integritātes ziņā - atliek izdzēst tipu iekš DB un tiek izdzēsti atbilstošie ieraksti ar dzēsto tipu. Bet priekš kam atkārtoties, ja jebkurā gadījumā ieraksti pašā programmā tiek klasificēti pēc to tipiem un būtībā nekādu citu funkciju lauks 'type' nepilda. Būtu interesanti uzzināt arī viedokli par pretēju gadījumu. Ir tabula ar tipiem, uz kuru referencējas lauks 'type' - vai būtu jāievieš konstantes? Tad nebūtu visur jāraksta, piemēram "if($type == 1)...", bet būtu daudz skaidrāk "if($type == KAUT_KAADS_IERAKSTA_TIPS)..." Protams, lielā mērā tas atkarīgs no konkrētās situācijas un nepieciešamās funkcionalitātes, bet... Kā šī foruma web programmēšanas guru risina šīs problēmas? Vai tā ir gaumes/stila preference vai ir kādi citi ieguvumi/zaudējumi? Quote Link to comment Share on other sites More sharing options...
mefisto Posted December 23, 2010 Report Share Posted December 23, 2010 http://en.wikipedia.org/wiki/3NF Quote Link to comment Share on other sites More sharing options...
101111 Posted December 23, 2010 Report Share Posted December 23, 2010 (edited) mefisto, normālformas te būs nevietā. Izlasot jautājumu, škiet ka vienīgais ko grib zināt ir vai sarakstu ar tipiem glabāt datubāzē. Jā, kā jau teici datu integritātes nodrošināšanai labāk glabāt savā tabulā, es tā domāju. Būtu interesanti uzzināt arī viedokli par pretēju gadījumu. Ir tabula ar tipiem, uz kuru referencējas lauks 'type' - vai būtu jāievieš konstantes? Tad nebūtu visur jāraksta, piemēram "if($type == 1)...", bet būtu daudz skaidrāk "if($type == KAUT_KAADS_IERAKSTA_TIPS)..." Es šito īsti nesapratu. Tās konstantes, lai padarītu php skaidrāku vari ieviest jeburā gadījumā - vai tie tipi glabājas datu bāzē vai nē. Edited December 23, 2010 by 101111 Quote Link to comment Share on other sites More sharing options...
mefisto Posted December 23, 2010 Report Share Posted December 23, 2010 Ja godīgi , es īsti nesapratu par ko tur bija runa , kaut kādas tabulas un php konstantes oO Quote Link to comment Share on other sites More sharing options...
ezis Posted December 23, 2010 Report Share Posted December 23, 2010 bfj, Tavs variants nebūtu tā teikt - liekvārdība? :? Varbūt arī maldos, varbūt kādā Tavā situācijā tas būtu ļoti noderīgi.. Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted December 24, 2010 Report Share Posted December 24, 2010 Tas, par ko Tu runā, saucas klasifikatori :) Var izdalīt vairāku veidu klasifikatorus: Pēc to mainīguma/nemainīguma. - tādus, kuri ir faktiski nemainīgi. Piemēram, dzimums. Parastā DB (kas nenodarbojas ar medicīnisko anomāliju reģistrēšanu) normāli ir 2 dzimumi, nu varbūt vēl trešais, kad nav zināms (vai arī NULL tādā gadījumā). Nav īpaši ticami, ka šīs vērtības mainīsies, maz ticam arī, ka "Sieviete" un "Vīrietis" rīt sauksies kaut kā savādāk. - tādus, kuri laika gaitā var mainīties. Piemēram adrešu sastāvdaļas, visādas tur organizācijas nodaļas utt utjp. Tādas labāk vadīt savā tabulā un likt saites, jo tad klasifikatora izmaiņu gadījumā ir jāmodificē ieraksti datubāzē (kas ir daudz vienkāršāk un iespējams parastam lietotājam), nevis jāmodificē kods. Pēc nepieciešamības kādus no tiem apstrādāt kaut kā īpaši. - piemēram nepieciešamība Latvijas pilsoņus apstrādāt īpaši, t.i., programmā ir jādefinē atbilstoša konstante kurai atbilst Latvijas valstiskā piederība un šādā gadījumā personai ir atsevišķas pārbaudes un/vai biznesa nosacījumi. Šādā gadījumā parasti ir vieglāk definēt konstantes programmā, jo šīs biznesa pārbaudes ir +- predefinētas un jauna pārbaude anyway droši vien nozīmē koda maiņu. - ja ierakstus nekā īpaši nav jāapstrādā, t.i., to apstrāde nav atšķirīga atkarībā no tipa, tad sevišķu jēgu definēt konstantes programmā neredzu, jo tas tikai ierobežo iespēju klasifikatoru koriģēt vai papildināt. Gints Plivna http://datubazes.wordpress.com Quote Link to comment Share on other sites More sharing options...
briedis Posted December 25, 2010 Report Share Posted December 25, 2010 Ja man ir tādi ierakstu tipi, no kā ir atkarīgā arī kaut kāda loģika, parasti tos nodefinēju ka konstantes kodā, ar tādu domu, ka tās nākotnē netiks mainītas, un tad turpmāk visur apejos ar konstantēm (atlasot kvērijus, pie kaut kādas loģikas). Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.