Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
MySQL + SQL · Lesson 21

DBMS में Referential Integrity

Referential integrity क्या है

Referential integrity एक नियम है जो जुड़ी tables संगत रखता है: एक foreign key value उस table में मौजूद value से मेल खानी चाहिए जिसे यह reference करती है, या null हो। यह "orphan" rows रोकती है जो न-मौजूद records की ओर इशारा करें, तो आपके database में relationships हमेशा मायने रखते हैं।

💡 Referential integrity = foreign key को असली parent row की ओर इशारा करना चाहिए (या null हो)।

Foreign key link

CREATE TABLE customers (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);
CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

Foreign key orders.customer_id को असली customers.id से मेल खाना चाहिए। DBMS इसे अपने-आप लागू करता है।

यह क्या रोकती है

-- customers में सिर्फ़ ids 1 और 2 हैं
INSERT INTO orders VALUES (10, 99);   -- ERROR: customer 99 मौजूद नहीं

DBMS इस insert को ठुकराता है क्योंकि customer 99 की कोई मेल खाती row नहीं। Referential integrity बिना, आप न-मौजूद customer के लिए order बना सकते थे — एक orphan row जो data corrupt करती है।

Delete और update पर

अगर आप orders वाले customer को delete करें तो? Default रूप से, DBMS integrity की रक्षा को delete रोकता है:

DELETE FROM customers WHERE id = 1;   -- ERROR अगर orders id 1 reference करें

आप इस व्यवहार को foreign key पर define किए referential actions से नियंत्रित कर सकते हैं।

ON DELETE CASCADE

FOREIGN KEY (customer_id) REFERENCES customers(id)
    ON DELETE CASCADE

ON DELETE CASCADE के साथ, customer delete करना उनके सारे orders भी अपने-आप delete करता है। यह चीज़ें संगत रखता है — कोई orphaned orders पीछे नहीं बचते। इसे तब इस्तेमाल कीजिए जब child rows का उनके parent बिना कोई मतलब न हो।

अन्य referential actions

ActionParent delete करने पर
RESTRICT / NO ACTIONDelete रोको (default)
CASCADEChild rows भी delete करो
SET NULLChild की foreign key NULL set करो

इस आधार पर चुनिए कि parent जाने पर child rows का क्या होना चाहिए।

आम गलतियाँ

  • Parent से पहले child insert करना। Parent row पहले मौजूद होनी चाहिए।
  • Referenced parent बिना योजना delete करना। CASCADE, SET NULL या RESTRICT तय कीजिए।
  • बेमेल column types। Foreign और referenced keys type साझा करने चाहिए।
  • Foreign keys बिल्कुल भूलना। तब कुछ integrity लागू नहीं करता।

सारांश

  • Referential integrity foreign keys को असली rows की ओर इशारा रखती है।
  • DBMS न-मौजूद parents reference करते inserts ठुकराता है।
  • Default रूप से, referenced parent delete करना रोका जाता है।
  • ON DELETE CASCADE child rows को parent के साथ delete करता है।
  • SET NULL और RESTRICT अन्य referential actions हैं।

आगे, इसके पीछे की keys सीखिए primary key vs foreign key में, या नियम जोड़िए constraints से।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Referential integrity क्या है?
Referential integrity एक नियम है कि foreign key value referenced table में मौजूद value से मेल खानी चाहिए (या null हो)। यह आपको ऐसी "orphan" rows बनाने से रोकती है जो न-मौजूद records की ओर इशारा करें, data संगत रखते हुए।
Foreign key referential integrity कैसे लागू करती है?
Foreign key एक table के column को दूसरी की primary key से जोड़ती है। DBMS फिर किसी भी insert या update को ठुकराता है जो foreign key को parent table में न मौजूद value set करे, तो relationships मान्य रहते हैं।
Orphan row क्या है?
Orphan row वो row है जिसकी foreign key ऐसे parent record की ओर इशारा करे जो अब मौजूद नहीं — जैसे delete किए गए customer के लिए order। Referential integrity orphan rows बनने से रोकती है।
ON DELETE CASCADE क्या करता है?
ON DELETE CASCADE मतलब जब parent row delete हो, उसे reference करती सारी child rows अपने-आप भी delete हो जाती हैं। जैसे, customer delete करना उनके सारे orders भी delete करता है, orphans बिना data संगत रखते हुए।
अगर मैं referenced row delete करने की कोशिश करूँ तो क्या होता है?
Default रूप से, DBMS integrity की रक्षा को delete रोकता है, error देकर। आप इसे CASCADE (children भी delete), SET NULL (link साफ़ करो), या RESTRICT (स्पष्ट रोको) जैसे referential actions से बदल सकते हैं।
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicER Model और ER Diagram आपकी प्रगति: 21 / 151 (14%) · Lesson 22 / 151 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें