Determine Attribute Domains: हर Attribute का एक Domain होता है, जो ये Express करता है कि Particular किसी Attribute में किस तरह के मान Store हो सकेंगे। एक Domain बहुत छोटा भी हो सकता है। उदाहरण के लिए किसी Population से सम्बंधित Database में Male/Female को Represent करने के लिए Gender Attribute में केवल M/F Character को ही Store करने की जरूरत होती है। जबकि किसी Customer का नाम Store करने के लिए Name Attribute में बहुत सारे Characters को Store करना पडता है।
एक Database Management System (DBMS) एक Domain Constraint के Through एक Domain Enforce करता है। उसके बाद जब भी Database में कोई Data या मान Store किया जाता है, वह DBMS Software उस Domain Constraint के आधार पर ये तय करता है कि Database में जाने वाला मान उसी Domain का है जिसके लिए उसे Domain Constraint द्वारा Set किया गया है अथवा नहीं।
उदाहरण के लिए यदि किसी Customer की Birth Date को Store करने के लिए Database में DOB Attribute को Date/Time Domain Constraint से को Set किया गया है, तो DBMS Software उस Attribute में केवल उसी Data को Store करेगा जो Date/Time Format का होगा। शेष किसी भी अन्य Domain (Data Type) के Data को वह DBMS Software Database में Store नहीं करने देगा यहां तक कि जब हम Date/Time Domain Constraint को किसी Attribute के साथ Set करते हैं, तब हम उस Attribute में 30 February जैसी किसी गलत Date को भी Store नहीं कर सकते हैं।
Documenting Domains
ER Diagram का जो Common Format Use किया जाता है, उसमें Domain को Specify करने की कोई सुविधा नहीं होता है, बल्कि उस Diagram से एक Document Associated रहता है, जिसे Data Dictionary कहते हैं। Data Dictionary के बारे में हम आगे विस्तार से पढेंगे। हम Chen के ER Model में हर Attribute के नीचे उस Attribute के Domain को Specify कर सकते हैं।
Practical Domain Choices
Music Store के Entities के Attributes के लिए जिन Domains को Choose किया जाता है, वे Theoretically उन DBMS Softwares से Independent होने चाहिएं, जिन्हें हम Music Store Database को Develop करने के लिए Use करेंगे।
फिर भी ज्यादातर Relational DBMS अपनी Query Language के रूप में SQL का प्रयोग करते हैं, जिसमें किसी Attribute को निम्न Domain Assign किए जा सकते हैं:
CHAR
ये एक Fixed-Length Domain होता है। इस Domain को किसी Attribute के साथ Associate करने पर हम उस Attribute में अधिकतम 256 Characters Store कर सकते हैं।
VARCHAR
ये एक Variable-Length Domain होता है। इस Domain को किसी Attribute के साथ Associate करने पर हम उस Attribute में Variable Length के अधिकतम 256 Characters Store कर सकते हैं।
INT
जब हमें किसी Attribute में Integer मान Store करना होता है, तब हम उस Attribute के साथ इस Domain को Associate करते हैं।
DECIMAL and NUMERIC
जब हमें किसी Attribute में दसमलव वाले मान को Store करना होता है, तब हम उस Attribute के साथ इस Domain को Associate करते हैं। जब हम एक Real Number Domain को किसी Attribute के साथ Associated करते हैं, तब हमें ये भी Specify करना होता है कि हम दसमलव के बाद के अंकों सहित कितने अंकों तक का मान Store करना चाहते हैं और दसमलव के बाद कुल कितने अंकों तक का मान Store करना चाहते हैं।
उदाहरण के लिए Currency Values को हमेंशा दसमलव के बाद दो संखयाओं तक Specify करना होता है, इसलिए यदि हम Currency को Computer में Store करने के लिए किसी Attribute के साथ इस Domain को Associate करना चाहें, तो हम DECIMAL (6, 2) Statement द्वारा ये काम कर सकते हैं, जहां कुल 6 अंकों तक के Currency मान को किसी Attribute में Store किया जा सकता है जबकि उस मान में दसमलव के बाद दो संखयाओं तक को Store किया जा सकता है।
DATE
जब हमें किसी Attribute में Date Store करना होता है, तब हम उस Attribute के साथ इस Domain को Associate करते हैं।
TIME
जब हमें किसी Attribute में Time Store करना होता है, तब हम उस Attribute के साथ इस Domain को Associate करते हैं।
DATETIME
जब हमें किसी Attribute में Date व Time के Combination को एक साथ Store करना होता है, तब हम उस Attribute के साथ इस Domain को Associate करते हैं।
BOOLEAN
जब हमें किसी Attribute में True या False जैसी किसी Logical Value को Store करना होता है, तब हम उस Attribute के साथ इस Domain को Associate करते हैं।
आज के नए DBMS Softwares BLOB नाम के एक नए Data Type को भी Support करते हैं, जिसका प्रयोग बडे Binary Object जैसे कि किसी Graphical Image को Store करने के लिए कर सकते हैं।
किसी Attribute के लिए एक उचित Domain को Choose करने पर Database की Accuracy को पूरी तरह से सुनिश्चित किया जा सकता है। उदाहरण के लिए हमारे देश में Pincode Number 6 Digit का एक Number होता है। क्या एक Pincode Number को INT Domain से Associate करना चाहिए।
नहीं, एक Pincode को दो कारणों की वजह से INT Domain से Associate नहीं करना चाहिए। पहला कारण ये है कि कई देशों में Pincode Numbers के बीच में Hyphen Symbol का प्रयोग किया जाता है और दूसरा कारण ये है कि यदि Pincode Number को INT Domain के साथ Store किया जाएगा, तो कई Pincode Number के पहले लगाया जाने वाला Zero नहीं लगाया जा सकेगा, क्योंकि DBMS उस Preceding Zero को Remove कर देगा। साथ ही Pincode एक एसा Number होता है, जिसके साथ हम कभी भी किसी प्रकार की Arithmetical Calculations Perform नहीं करते हैं, इसलिए Pincode Number को Integer के बजाय Character Form में Store करने पर हमें किसी प्रकार की परेशानी का सामना नहीं करना पडेगा।
इसी तरह से जब हमें किसी Data को साथ किसी प्रकार की Calculation करने की जरूरत होती है, तब हम उस Data को Character Form में Store नहीं कर सकते हैं। उदाहरण के लिए यदि हम किसी Employee की Salary को यदि Character Form में Store किया जाए, तो हम उस Employee का PF, DA, HRA आदि Calculate नहीं कर सकते हैं, क्योंकि Character Domain पर किसी प्रकार का Arithmetical Operation Perform नहीं किया जा सकता।
इसी तरह से यदि हम किसी Attribute में Date या Time Store करना चाहें, तो हमें DATE या TIME Domains को ही Use करना चाहिए। यदि हम किसी Date को Store करने के लिए Character Format का प्रयोग करते हैं, तो हम Date से सम्बंधित विभिन्न प्रकार की समस्याओं में फंस जाएंगे।
उदाहरण के मानलो कि हम दो Dates 01/11/2009 व 10/11/2000 को Character Domain का प्रयोग करके Database में Store करते हैं। अब यदि हम DBMS से ये पता करना चाहें कि कौनसी Date पहले आती है तो दोनों ही Dates Character Format में Store होने के कारण DBMS इन दोनों Dates में से Alphabetical Order के आधार पर पहले आने वाली Date को Calculate करेगा और हमें Result के रूप में 01/11/2009 प्रदान करेगा, क्योंकि Alphabetical Order में 01 10 से पहले आता है और हम समझ सकते हैं कि ये एक गलत Result है।
यदि हम Character Form में ही Date को Store करके ये जानना चाहें कि कौनसी Date पहले आती है, तो हमें इस Date को YYYY/MM/DD Format में Database में Store करना होगा और इस Format की Date को सारी दुनियां में बहुत ही Rarely Use किया जाता है। जबकि यदि हम इन Dates को Store करने के लिए DATE Domain का प्रयोग करते हैं, तो हमें Date से सम्बंधित इस प्रकार की किसी समस्या का सामना नहीं करना पडता है, साथ ही हम DBMS द्वारा Date के लिए Provide की जाने वाली सुविधाओं को भी प्राप्त कर सकते हैं। यानी हम दो Dates के बीच Difference का पता लगा सकते हैं या दो Dates को आपस में Compare कर सकते हैं। (Determine Attribute Domains)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Oracle 8i/9i SQL/PLSQL in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Oracle 8i/9i SQL/PLSQL in Hindi | Page: 587 | Format: PDF