Jump to content
php.lv forumi

lookup kolonnas datu bāzē


tomaac

Recommended Posts

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.

Link to comment
Share on other sites

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 by Gints Plivna
Link to comment
Share on other sites

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ē?

Link to comment
Share on other sites

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..

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...