क्वेरी के लिए इसकी सख्त आवश्यकता नहीं है, यह सच है। यह कई कारणों से मौजूद है:
- टेबल पर एक बाधा के रूप में आपको कुछ ऐसा डालने से रोकने के लिए जो कुछ भी इंगित नहीं करता है;
- अनुकूलक के लिए एक सुराग के रूप में; और
- ऐतिहासिक कारणों से जहां इसकी अधिक आवश्यकता थी।
(1) शायद तीनों में से एक महत्वपूर्ण है। इसे संदर्भात्मक अखंडता कहा जाता है . इसका अर्थ यह है कि यदि किसी विदेशी कुंजी में कोई मान है तो उस मान के साथ मूल तालिका में प्राथमिक कुंजी के रूप में एक संगत रिकॉर्ड होगा।
कहा जा रहा है, सभी डेटाबेस संदर्भात्मक अखंडता (जैसे MySQL/MyISAM तालिकाओं) का समर्थन नहीं करते हैं और जो इसे अनिवार्य रूप से लागू नहीं करते हैं (प्रदर्शन कारणों से)।