एक प्राथमिक कुंजी एक बाधा है जो निर्दिष्ट करती है कि इसके कॉलम में मान (पारस्परिक रूप से) अद्वितीय होना चाहिए और शून्य नहीं होना चाहिए। ऐसा इसलिए है ताकि तालिका में प्रत्येक पंक्ति को विशिष्ट रूप से पहचानने की गारंटी दी जा सके, जो इस तालिका को संदर्भित करने वाली विदेशी कुंजी बनाने के लिए सबसे उपयोगी है। यदि आपके पास अन्य तालिकाएँ नहीं हैं, तो यह अभी भी इसके लायक है, क्योंकि यह आपकी तालिका को खराब स्थिति में जाने से रोकेगा, उदाहरण के लिए, आपके पास किसी विशेष तिथि पर समान स्रोत मान में से एक से अधिक हैं।
प्राथमिक कुंजी फ़ील्ड में लगभग हमेशा एक इंडेक्स होगा और साथ ही उनका उपयोग अक्सर लुकअप और जॉइन के लिए किया जाता है, लेकिन दोनों अवधारणाएं अलग हैं।
कुछ डीबीएमएस (जैसे MySQL, SQL सर्वर) स्वचालित रूप से प्राथमिक कुंजी पर एक क्लस्टर इंडेक्स बनाते हैं, जिसका अर्थ है कि तालिका में डेटा को फ़ील्ड द्वारा डिस्क पर सॉर्ट किया जाता है जिसमें सामान्य संचालन को और भी तेज़ बनाने के लिए प्राथमिक कुंजी शामिल होती है। हालांकि, पोस्टग्रेज डिफ़ॉल्ट रूप से ऐसा नहीं करता है।
आप निम्न सिंटैक्स का उपयोग करके तालिका निर्माण पर प्राथमिक कुंजी निर्दिष्ट कर सकते हैं:
create table datatable
(
date date,
yesterday real,
today real,
tomorrow real,
reading real,
source varchar,
PRIMARY KEY (source, date)
)
आप अपनी प्राथमिक कुंजी (आमतौर पर सरोगेट कुंजी के रूप में संदर्भित) के रूप में कार्य करने के लिए एक नया, स्वत:वृद्धिशील पूर्णांक फ़ील्ड भी जोड़ सकते हैं या कृत्रिम कुंजी ) यदि आपके डेटा आइटम में कोई अन्य अच्छा उम्मीदवार नहीं है, तो आप ऐसा करना चाह सकते हैं, लेकिन इसके अन्य लाभ भी हो सकते हैं (उदाहरण के लिए संभावित रूप से तेज़ जॉइन)।
create table datatable
(
id serial primary key,
date date,
yesterday real,
today real,
tomorrow real,
reading real,
source varchar
)