tomaac Posted March 2, 2009 Report Share Posted March 2, 2009 Kā parasti pieņemts rīkoties šādā situācijā: Datu bāzes tabulā ir diezgan daudz kolonnas, kuras ir IZVĒLES (radiobuttoni vai listboxi). Piemēram, tabulā KLIENTS ir kolonna STATUS ar iespējamām vērtībām - juridiska persona vai fiziska persona. Kā ir labāk - šajā tabulā glabāt int vērtības 1 un 2 un tad kaut kādā atsevišķā LOOKUP tabulā glabāt vērtība 1 - juridiska 2 - fiziska. Vai arī labāk uzreiz šajā tabulā glabāt varchar vērtības ar atbilstošo tekstu. Šādas kolonnas ir ļoti daudz. Quote Link to comment Share on other sites More sharing options...
bubu Posted March 2, 2009 Report Share Posted March 2, 2009 Cik man nācies strādāt pie lielākām sistēmām, tad parasti tādās ir klasifikatoru tabula, kurā uzglabājas visas šādu nemaināmo enumu vērtību tekstuāla reprezentācija (tava lookup tabula). Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted March 2, 2009 Report Share Posted March 2, 2009 (edited) Normāli jau nu būtu to vērtību skaidrojumus (teksts juridiskā/fiziskā persona) glabāt kādā atsevišķā universālā klasifikatoru tabulā, ja tādi puslīdz fiksēti klasifikatori ir daudz. Jo pat, ja to skaits un dziļākā nozīme nemainās, tad mēdz mainīties to skaidrojumi/nosaukumi un tad tie būs jāmaina visās n-tajās tabulās, kur pa taisno tas būs ierakstīts iekšā. Protams, ka tas prasa vai nu atsevišķu joinu db vai arī aplikācijā iekešot klasifikatoru kodus->nosaukumus, lai lietotājam atēlotu paskaidrojošās nozīmes nevis kodus. Gints Plivna http://datubazes.wordpress.com P.S. Tas dod arī elastīgākas iespējas pievienot citas vērtības, piemēram ,vairākās valodās vai arī atkarībā no dzimuma, kas reāli ir nācies (piem., ģim stāvoklis - precējies/precējusies). Edited March 2, 2009 by Gints Plivna Quote Link to comment Share on other sites More sharing options...
echo Posted March 2, 2009 Report Share Posted March 2, 2009 Labi, pieņemsim es salieku visus lookup-us atsevišķās klasifikatora tabulās. Cits jautājums - ja taisa tā, lai pēc tam ar roku nevajadzētu 100 vietās mainīt, tad ja arī formās šos laukus vajadzētu ģenerēt automātiski. Kā tas arasti tiek panākts un vai atmaksājas nelielā projektā, kur ir tikai 3-4 tabulas? t.i., piemēram, ir datu bāzē kolonnas name, surname, type (lookup uz klasifikatoru). Man nepieciešama forma, kurā būtu lauki name (text), surname (text), type (select)... Šo formu mēdz aprakstīt kkā datu bāzē? Quote Link to comment Share on other sites More sharing options...
bubu Posted March 2, 2009 Report Share Posted March 2, 2009 Jā, formu vari ģenerēt no DB. MySQL'am, piemēram, ir iespēja dabūt ārā no datubāzes metadatus par tabulas laukiem. Quote Link to comment Share on other sites More sharing options...
echo Posted March 2, 2009 Report Share Posted March 2, 2009 bubu: varētu lūdzu paskairot sīkāk - kas ir domāts ar "metadati par tabulas laukiem"? Quote Link to comment Share on other sites More sharing options...
bubu Posted March 2, 2009 Report Share Posted March 2, 2009 Metadati ir dati par datiem :) Tb dati par to kāda veida lauki ir, to nosaukumi, un tml. Reku atbilstošās php funkcijas, kas no mysql izdabūs ārā informāciju par laukiem: mysql_field_name, mysql_field_type, mysql_list_fields, utt.. Quote Link to comment Share on other sites More sharing options...
echo Posted March 2, 2009 Report Share Posted March 2, 2009 Varbūt es esmu ne pārāk gudra (gribētos teikt - zinoša, jo reāli pirmais projekts), es ne pārāk sapratu, kā varu tos meta datus izmantot. Piemēram, man ir tabula ar kkādām kolonnām - name, surname, pers_code utt. Man vajag to visu attēlot formā. Cik sapratu - to formu vajadzētu ģenerēt. Cik es varu izdomāt, tad tā ģenerēšana ir apmēram tāda: -> man nepieciešama vēl viena tabula, kurā būtu aprakstīts kādai jābūt formai, ar kādām kolonnām un kādiem datu tipiem. Tai varētu būt apmēram tādas kolonnas: 1) formas nosaukums 2) lauka nosaukums datu bāzē 3) tabula, no kuras nāk šis lauks 4) lauka nosaukums latviešu valodā, ko rādīt formā 5) kontrolis 6) kontroļa izmērs, ja tāds ir 7) norāde uz klasifikatoru (ja ir) ... un vēl kkādi papildus lauki Tad ir trīs jautājumi: 1) Ģenerējot kādu formu, es rakstīšu generate_form(formasnosaukums) un tiks uzģenerēta forma atbilstoši šai tabulai. Vai šāds scenārijs ir korekts? 2) Ja man būs kkāds javascripts (citā postā rakstīju), piemēram, kas atkarībā no izvēlētā radiobuttona parāda vai paslēpj kkādus laukus, tad jau atkal zūd viss universālisma princips, jo tur man ar getElementById kkā jādabūn tie id, sanāk rakstīt pa tiešo? 3) Un vēl joprojām nav skaidrība - vai nelielam, nelielam projektam (ar 3-5 tabulām) šī ģenerēšana vispār atmaksājas? Quote Link to comment Share on other sites More sharing options...
bubu Posted March 2, 2009 Report Share Posted March 2, 2009 Ok, tagad sapratu, cik daudz tu ar to ģenerēšanu domāji. Ja vajadzīgas arī tādas detaļas, kā kontroļa izmēri un citi dati, tad tikai ar mysql iebūvēto informāciju par tabulas laukiem nepietiks. Nāksies glabāt papildus informāciju - kā jau tu te aprakstīji savus 1-7 punktus. 1) jā. Tikai to, kā sauksies funkcija/mainīgie ir, protams, pilnīgi nesvarīgi. Ja gribi - sauc to par generate_form. 2) lauku atkarības gan visdrīzāk nāksies kodēt kodā iekšā. Ja gribēsi taisīt dikti unviersāli, ka arī tajā aprakstu vai klasifkatoru tabulā varēs norādīt, kuri lauki no kuriem un kā būs atkarīgi, tad tas viss izvērtīsies par ļoti sarežģītu sistēmu. 3) manā skatījumā, tādā mērā kā tu gribi to panākt, tas visdrīzāk neatmaksājas. Ja vien nākotnē nav paredzēts gala lietotājiem pašiem taisīt jaunas tabulas / laukus / atkarības. 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.