Theory
Database માં Packing ની સમસ્યા
કલ્પો કે તમે એક વિશાળ logistics ની વખાર ચલાવો છો. જો તમે એક નાજુક, નાનકડી microchip ને એક કાર માટે રચાયેલા વિશાળ, મજબૂત shipping ના container ની અંદર સંઘરવાનો પ્રયાસ કરો, તમે જગ્યા બગાડી. જો તમે એક વિશાળ કારને એક નાનકડા પૂંઠાના ખોખામાં ધકેલવાનો પ્રયાસ કરો, એ ખાલી બેસશે નહીં. Databases બિલકુલ આ જ રીતે કામ કરે છે. જ્યારે તમે એક table ડિઝાઇન કરો, તમારે system ને બિલકુલ કહેવું પડે કે તમારી માહિતી સંઘરવા તમે કેવા પ્રકારનું 'ખોખું' (data type) વાપરો છો. ખોટું પસંદ કરો, અને તમે કાં તો કીમતી memory બગાડો છો કાં તો તમારો data ખાલી બરાબર સચવાશે નહીં.
Theory
સંગ્રહના ડબ્બા
Data types ને જુદા સંગ્રહના ઉકેલો જેવા વિચારો: CHAR એ કડક ધાતુનું ખોખું છે જે ખાલી હોય તો પણ હંમેશા એટલી જ જગ્યા લે છે. VARCHAR2 એ લવચીક થેલી છે જે તમે અંદર જે મૂકો એટલી જ ખેંચાય છે. CLOB એ વિરાટ documents માટેની વિશાળ વખાર છે જે કોઈ ખોખામાં બેસતાં નથી, અને NUMBER એ ગણતરીઓ માટેનું એક ખાસ ચોકસાઈવાળું ઓજાર છે.
Theory
વિચાર, ઔપચારિક રીતે
Oracle SQL માં, એક Data Type એક column માટે સંગ્રહનું સ્વરૂપ, મર્યાદાઓ, અને માન્ય કામગીરી વ્યાખ્યાયિત કરે છે. તમારી BCA ની પરીક્ષાઓ માટે તમારે જાણવા જોઈએ એવા સૌથી મહત્ત્વના પ્રકારો છે:
NUMBER(p, s)*: નિશ્ચિત કે floating-point numbers સંઘરે છે. 'p' precision છે (કુલ અંકો), 's' scale છે (દશાંશ પછીના અંકો).
CHAR(n)*: નિશ્ચિત લંબાઈનો character data. જો તમે CHAR(10) વ્યાખ્યાયિત કરો અને 'Hi' સંઘરો, એ 10 ભરવા 8 spaces ઉમેરે છે.
VARCHAR2(n)*: બદલાતી લંબાઈનો character data. તમે આપો એટલા જ અક્ષરો સંઘરે છે, જગ્યા બચાવતાં.
DATE*: તારીખ અને સમય બંને સંઘરે છે (સદી, વર્ષ, મહિનો, દિવસ, કલાક, મિનિટ, સેકન્ડ).
CLOB / NCLOB*: Character Large Objects. લખાણના વિરાટ ટુકડા માટે વપરાય છે (4GB સુધી).
RAW / LONG RAW*: જૂનાં સ્વરૂપોમાં raw binary data (જેમ કે images કે encrypted ચાવીઓ) સંઘરે છે.
At a glance
મુખ્ય Oracle data types ની સરખામણી
| Data Type | સંગ્રહની શૈલી | શ્રેષ્ઠ Use Case |
|---|---|---|
| CHAR | નિશ્ચિત લંબાઈ | 'US', 'IN', 'Y', 'N' જેવા codes (ભાગ્યે જ બદલાતા) |
| VARCHAR2 | બદલાતી લંબાઈ | નામ, સરનામાં, email IDs (જગ્યાની કાર્યક્ષમતા) |
| NUMBER | આંકડાકીય | કિંમતો, જથ્થા, IDs, ગણતરીઓ |
| CLOB | મોટું લખાણ | પુસ્તકની સમીક્ષાઓ, પૂરી લંબાઈના લેખ, logs |
Think first
CHAR ના Padding ની કસોટી
જો તમે એક column ને CHAR(10) તરીકે વ્યાખ્યાયિત કરો અને 'Oracle' નામ નાખો, તો disk પર ખરેખર કેટલી bytes સંઘરાય છે?
Show the answer
એ 10 bytes સંઘરશે. કારણ કે CHAR નિશ્ચિત લંબાઈનો છે, Oracle 10 ના વ્યાખ્યાયિત કદ સુધી પહોંચવા બાકીની 4 જગ્યાઓ કોરી ભરી દેશે. આ જ કારણે લંબાઈમાં બદલાતા data માટે CHAR બિનકાર્યક્ષમ છે.
Theory
જૂની સમસ્યા: LONG અને LONG RAW
તમે જૂના codebases માં LONG અને LONG RAW જોઈ શકો છો. લખાણ કે binary data ના વિરાટ જથ્થા સંઘરવાના આ શરૂઆતના રસ્તા હતા. પણ, એ ખૂબ મર્યાદિત છે (તમે એક table દીઠ એકથી વધુ રાખી શકતા નથી, એ ઘણાં SQL clauses માં વાપરી શકાતાં નથી). નવી ડિઝાઇન માટે હંમેશા CLOB કે BLOB વાપરો. જો કોઈ exam નો પ્રશ્ન 'legacy limitations' વિશે પૂછે, ઉલ્લેખ કરો કે આધુનિક LOBs ની સરખામણીએ LONG પ્રકારો જૂના અને મર્યાદિત છે.
Quiz
કર્મચારીના પગાર (દા.ત. 50000.50) સંઘરતા એક column માટે તમારે કયો data type પસંદ કરવો જોઈએ?
- VARCHAR2
- CHAR
- NUMBER(10, 2)
- CLOB
Show the answer
NUMBER(10, 2)
NUMBER ખાસ અંકગણિત માટે રચાયેલો છે. VARCHAR2 અને CHAR strings માટે છે અને સીધી ગણતરીઓ માટે વાપરી શકાતા નથી, અને CLOB લખાણના મોટા ટુકડા માટે છે.
Watch out
VARCHAR2 સામે VARCHAR નો ફાંદો
Oracle માં, હંમેશા VARCHAR2 વાપરો. જ્યારે અમુક systems માં 'VARCHAR' એક સમાનાર્થી તરીકે અસ્તિત્વમાં છે, ત્યારે Oracle ખાસ ચેતવે છે કે ભવિષ્યનાં versions માં એનું વર્તન બદલાઈ શકે છે. સુસંગતતાની ખાતરી કરવા તમારા exam ના જવાબો અને વાસ્તવિક દુનિયાના code માટે હંમેશા VARCHAR2 ને પસંદ કરો.
Think first
ડિઝાઇનનો નિર્ણય: Library System
તમે એક library ની system માટે એક table બનાવી રહ્યા છો. તમારી પાસે એક 'Book_Title' column અને એક 'Book_Description' column છે. તમે દરેક માટે કયા data types પસંદ કરો, અને કેમ?
Show the answer
'Book_Title' માટે, VARCHAR2(255) વાપરો કારણ કે titles લંબાઈમાં બદલાય છે પણ વિરાટ નથી હોતાં. 'Book_Description' માટે, CLOB વાપરો કારણ કે વર્ણનો અત્યંત લાંબાં હોઈ શકે છે, સહેલાઈથી VARCHAR2 ની 4000-byte ની મર્યાદા વટાવતાં.
Summary
Key takeaways
- ગણિત સંબંધિત બધી values માટે NUMBER વાપરો.
- જગ્યા બચાવવા લંબાઈમાં બદલાતા લખાણ માટે VARCHAR2 વાપરો.
- CHAR માત્ર નિશ્ચિત લંબાઈના codes માટે વાપરો જ્યાં પ્રવેશની કાર્યક્ષમતા padding કરતાં વધુ મહત્ત્વની હોય.
- Standard column ની મર્યાદા વટાવતા લખાણના મોટા ટુકડા માટે CLOB વાપરો.
- નવી database ની ડિઝાઇનમાં LONG અને LONG RAW ટાળો; એ ગંભીર કાર્યાત્મક મર્યાદાઓ વાળા જૂના પ્રકારો છે.
- હંમેશા યાદ રાખો: CHAR ભરે છે, VARCHAR2 બેસવા સંકોચાય છે.