एक विदेशी कुंजी को प्राथमिक कुंजी या अद्वितीय बाधा को लक्षित करना होता है। प्राथमिक कुंजी को संदर्भित करना सामान्य है, क्योंकि आप आम तौर पर किसी अन्य तालिका में एक व्यक्तिगत पंक्ति का संदर्भ देना चाहते हैं, और प्राथमिक कुंजी तालिका पंक्ति की पहचानकर्ता है।
तकनीकी दृष्टिकोण से, इससे कोई फर्क नहीं पड़ता कि कोई विदेशी कुंजी प्राथमिक कुंजी या किसी अन्य अद्वितीय बाधा का संदर्भ देती है, क्योंकि PostgreSQL में दोनों को एक ही तरह से लागू किया जाता है, एक अद्वितीय अनुक्रमणिका का उपयोग करके।
आपके ठोस उदाहरणों के अनुसार, अद्वितीय size
. होने में कुछ भी गलत नहीं है vehicle_size
. का कॉलम एक विदेशी कुंजी का लक्ष्य बनें, हालांकि यह सवाल पूछता है कि आपने size
क्यों नहीं बनाया? प्राथमिक कुंजी और id
को छोड़ दें स्तंभ पूरी तरह से। प्रत्येक तालिका में id
होने की कोई आवश्यकता नहीं है कॉलम जो स्वचालित रूप से उत्पन्न संख्यात्मक प्राथमिक कुंजी है, सिवाय इसके कि ओआरएम और अन्य सॉफ़्टवेयर हो सकते हैं जो इसकी अपेक्षा करते हैं।