PostgreSQL बाधाएँ: उदाहरण सहित प्रकार
बाधा क्या है?
डेटा प्रकारों का उपयोग किसी तालिका में संग्रहीत की जा सकने वाली जानकारी के प्रकार को सीमित करने के लिए किया जाता है। लेकिन इस दृष्टिकोण के साथ 2 मुद्दे हैं।
- अंक 1: डेटा प्रकारों द्वारा लागू प्रतिबंध कुछ अनुप्रयोगों के लिए पर्याप्त नहीं हैं। उदाहरण के लिए, आइटम मूल्य वाले कॉलम को केवल सकारात्मक मान स्वीकार करना चाहिए। हालाँकि, ऐसा कोई विशिष्ट डेटा प्रकार नहीं है जो केवल सकारात्मक संख्या स्वीकार करता हो।
- समस्या 2: आप किसी पंक्ति/स्तंभ डेटा में अन्य स्तंभों या पंक्तियों के संबंध में जानकारी को सीमित करना चाह सकते हैं। उदाहरण के लिए, आइटम जानकारी वाली तालिका में प्रत्येक अद्वितीय स्तंभ प्रतिबंध के लिए केवल एक पंक्ति होनी चाहिए।
ऐसे मुद्दों पर काबू पाने और इन नियमों को परिभाषित करने के लिए, आप उपयोग कर सकते हैं बाधाएस में PostgreSQLसरल शब्दों में, प्रतिबंध वे नियम हैं जिनका आपके डेटा को पालन करना होता है। टेबल प्रतिबंध जोड़ने से डेटाबेस सिस्टम डेटा अखंडता को लागू करने में सक्षम होता है।
इसलिए, यदि कोई उपयोगकर्ता किसी ऐसे कॉलम में डेटा संग्रहीत करने का प्रयास कर रहा है जो परिभाषित प्रतिबंध का उल्लंघन करता है, तो एक त्रुटि संदेश प्रदर्शित होना चाहिए।
प्रकार का PostgreSQL की कमी
आइये विभिन्न प्रकार के पर एक नजर डालें PostgreSQL डेटा की शुद्धता सुनिश्चित करने के लिए आप जो बाधाएँ बना सकते हैं:
- अद्वितीय
- अशक्त नहीं
- बाधा की जाँच करें
- प्राथमिक कुंजी
- विदेशी कुंजी
- निष्पादन बाधा
1) PostgreSQL अद्वितीय बाधा
अद्वितीय प्रतिबंध आपको यह सुनिश्चित करने में सहायता करते हैं कि किसी स्तंभ या स्तंभ प्रतिबंधों के समूह में निहित डेटा अद्वितीय है।
उदाहरण
CREATE TABLE Item( Item_no integer UNIQUE, Name text, );
2) NOT शून्य प्रतिबंध
एक नॉट-नल कंस्ट्रेंट यह परिभाषित करता है कि कॉलम कभी भी शून्य मान नहीं होना चाहिए। इस प्रकार का कंस्ट्रेंट चेक कंस्ट्रेंट बनाने के बहुत समान है। हालाँकि, PostgreSQL एक नॉट-नल कंस्ट्रेन्ट बनाता है, जो अधिक कुशल है। इस विधि के साथ समस्या यह है कि आप नॉट-नल कंस्ट्रेन्ट्स को स्पष्ट नाम नहीं दे सकते।
शून्य नहीं प्रतिबंध डिफ़ॉल्ट नहीं है PostgreSQL मानक है और पोर्टेबल अनुप्रयोगों में इसका उपयोग नहीं किया जाना चाहिए। इसे बाद में जोड़ा गया PostgreSQL इसे किसी अन्य के साथ संगत बनाने के लिए डीबीएमएस सिस्टमकई लोग इसका उपयोग करते हैं क्योंकि यह स्क्रिप्ट फ़ाइल में बाधा को टॉगल करना आसान बनाता है।
सिंटेक्स:
CREATE TABLE Item ( product no integer NULL, Item_name text NULL, Itm_price numeric NULL );
3) PostgreSQL बाधाओं की जाँच करें
चेक कंस्ट्रेन्ट आपको यह निर्दिष्ट करने में मदद करता है कि कुछ कॉलम में मान बूलियन अभिव्यक्ति होना चाहिए।
RSI PostgreSQL चेक कंस्ट्रेंट में CHECK कीवर्ड होता है, जिसके बाद कोष्ठक में एक अभिव्यक्ति होती है। चेक कंस्ट्रेंट Postgres में वह कॉलम शामिल होना चाहिए जिसे कंस्ट्रेंट किया जाना चाहिए अन्यथा इसका कोई मतलब नहीं है।
सिंटेक्स:
CREATE TABLE Item( Item_id INTEGER PRIMARY KEY, name VARCHAR(20), Item_price NUMERIC CHECK(price>0) );
उदाहरण:
CREATE TABLE Emp( ID INTEGER primary key, First_name VARCHAR(20), Last_name VARCHAR(20), Gender CHAR(l) check(gender gender='M'), Salary INTEGER NOT NULL, Dept_Num INTEGER );
CREATE TABLE ITEM( Id INTEGER PRIMARY KEY, name VARCHAR(15), price numeric CHECK (price > 0) );
4) प्राथमिक कुंजी बाधाएँ
प्राथमिक कुंजी प्रतिबंध आपको तालिका में पंक्तियों के लिए एक अद्वितीय पहचानकर्ता के रूप में एक स्तंभ या स्तंभों के समूह का उपयोग करने की अनुमति देता है। प्राथमिक कुंजी प्रतिबंधों को परिभाषित करने के लिए, आपके घोषित मान अद्वितीय और शून्य नहीं होने चाहिए। यह दो तालिका परिभाषाओं को समान डेटा स्वीकार करने की अनुमति देता है।
सिंटेक्स:
Create Table Item( Item_no, integer PRIMARY KEY, Item_name text, Item_Price numeric );
उदाहरण 1:
CREATE TABLE Employee( ID INTEGER PRIMARY KEY Fname VARCHAR(20), Lname VARCHAR(20), Gender CHAR(l), Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME) );
उदाहरण 2:
CREATE TABLE first( A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl) ); Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER. );
उदाहरण 3:
CREATE TABLE Items ( Item_no integer UNIQUE NOT NULL, name text, price numeric CREATE TABLE Items ( Items_no no integer PRIMARY KEY, name text, price numeric
5) विदेशी कुंजी बाधाएं
एक विदेशी कुंजी बाधा यह निर्दिष्ट करती है कि किसी कॉलम या कॉलम के समूह में मानों को किसी अन्य तालिका की किसी पंक्ति में दिखाई देने वाले मानों से मेल खाना चाहिए। यह आपको दो संबद्ध तालिकाओं के बीच संदर्भात्मक अखंडता स्थापित करने की अनुमति देता है।
मान लीजिए कि आपके पास एक टेबल है जो अलग-अलग उत्पादों के लिए ऑर्डर स्टोर करती है। आप यह सुनिश्चित करना चाहते हैं कि टेबल में मौजूद उत्पादों के ऑर्डर शामिल हों। इसलिए, यहाँ, आपको ऑर्डर टेबल में एक विदेशी कुंजी बाधा परिभाषित करने की आवश्यकता है जो उत्पाद टेबल को संदर्भित करती है।
सिंटेक्स:
CREATE TABLE ( id INTEGER PRIMARY KEY. name VARCHAR(IO) >; CREATE TABLE testable Id INTEGER PRIMARY KEY read INTEGER REFERENCES (id) );
उदाहरण 2:
CREATE TABLE Student ( Std_ID INTEGER primary key, First_name VARCHAR(20), Last_name VARCHAR(20), Gender CHAR(l), Steam, VARCHAR(20), Dept_NUM INTEGER REFERENCES Department );
6) बहिष्करण बाधाएँ
बहिष्करण प्रतिबंध आपको यह सुनिश्चित करने में मदद करते हैं कि यदि निर्दिष्ट कॉलम या अभिव्यक्तियों पर निर्दिष्ट ऑपरेटरों के साथ किसी भी दो पंक्तियों की एक दूसरे के साथ तुलना की जाती है, तो इनमें से कम से कम एक ऑपरेटर तुलना शून्य या गलत मान लौटाएगी। इसे जोड़ना PostgreSQL बाधा स्वतः ही बाधा घोषणा में निर्दिष्ट प्रकार का एक सूचकांक बनाएगी।
उदाहरण:
उदाहरण के लिए, निम्नलिखित PostgreSQL कथन स्कूल नामक एक नई तालिका बनाता है और पाँच कॉलम जोड़ता है।
CREATE TABLE SCHOOL6( STDID INT PRIMARY KEY NOT NULL, STDNAME TEXT NOT NULL, STDAGE INT NOT NULL, FEEDBACK CHAR(50), STANDARD INT NOT NULL,
उदाहरण के लिए, निम्नलिखित PostgreSQL कथन Branch नामक एक नई तालिका बनाता है, जो तीन कॉलम जोड़ता है। कॉलम STD_ID विदेशी कुंजी है, और यह तालिका SCHOOL6 के ID फ़ील्ड को संदर्भित करता है।
CREATE TABLE BRANCH ( BRANCHCODE INT PRIMARY KEY NOT NULL, BRAMCHNAME CHAR(50) NOT NULL, STD_ID INT references SCHOOL6(ID) );
