विदेशी कुंजियां
लागू करें संदर्भात्मक अखंडता
. ये बाधाएं गारंटी देती हैं कि तालिका में एक पंक्ति order_details फ़ील्ड के साथ order_id orders . का संदर्भ देना तालिका में कभी भी order_id नहीं होगा मान जो orders . में मौजूद नहीं है टेबल।
विदेशी कुंजियों के लिए एक कार्यशील संबंधपरक डेटाबेस होना आवश्यक नहीं है (वास्तव में MySQL का डिफ़ॉल्ट संग्रहण इंजन एफके का समर्थन नहीं करता है), लेकिन टूटे हुए रिश्तों और अनाथ पंक्तियों (यानी संदर्भात्मक अखंडता) से बचने के लिए वे निश्चित रूप से आवश्यक हैं। डेटाबेस स्तर पर संदर्भात्मक अखंडता को लागू करने की क्षमता C . के लिए आवश्यक है ACID में खड़े रहना।
प्रदर्शन के संबंध में आपकी चिंताओं के लिए, आम तौर पर एक प्रदर्शन लागत होती है, लेकिन शायद नगण्य होगी। मेरा सुझाव है कि अपनी सभी विदेशी कुंजी बाधाओं को डालें, और उनके बिना केवल प्रयोग करें यदि आपके पास वास्तविक प्रदर्शन समस्याएं हैं जिन्हें आप अन्यथा हल नहीं कर सकते हैं।