मैं mysql डेटाबेस का उपयोग कर रहा हूं। मुझे प्राथमिक कुंजी और अद्वितीय कुंजी के बीच एक भ्रम है।
कृपया मेरी मदद करें जहां मुझे प्राथमिक और अनोखी कुंजी बनानी चाहिए। मेरा मतलब है कि किस स्थिति में हम अद्वितीय कुंजी या प्राथमिक कुंजी बनाते हैं।
मैं mysql डेटाबेस का उपयोग कर रहा हूं। मुझे प्राथमिक कुंजी और अद्वितीय कुंजी के बीच एक भ्रम है।
कृपया मेरी मदद करें जहां मुझे प्राथमिक और अनोखी कुंजी बनानी चाहिए। मेरा मतलब है कि किस स्थिति में हम अद्वितीय कुंजी या प्राथमिक कुंजी बनाते हैं।
जवाबों:
प्राथमिक कुंजी:
NULL
- जैसे MySQL कहते हैंNOT NULL
अद्वितीय कुंजी:
NULL
मान हो सकते हैंNULL
; कई पंक्तियों में NULL
मान हो सकते हैं और इसलिए उन्हें "अद्वितीय" नहीं माना जा सकता हैविशिष्ट कुंजी (यूके) : यह एक स्तंभ या स्तंभों का एक समूह है जो एक पंक्ति में विशिष्टता की पहचान कर सकता है।
प्राथमिक कुंजी (PK) : यह एक स्तंभ या स्तंभों का समूह भी है जो एक पंक्ति में विशिष्टता की पहचान कर सकता है।
इसलिए प्राथमिक कुंजी अद्वितीय कुंजी के लिए एक और नाम है, लेकिन प्राथमिक और अद्वितीय कुंजी के लिए SQL सर्वर में डिफ़ॉल्ट कार्यान्वयन अलग है।
डिफ़ॉल्ट रूप से:
यह वास्तव में निर्भर करता है कि यूके या पीके बनाने का निर्णय लेते समय आपका उद्देश्य क्या है। यह एक सादृश्य का अनुसरण करता है जैसे "यदि तीन लोगों की एक टीम है, तो उनमें से सभी सहकर्मी हैं, लेकिन उनमें से एक होगा जो एक जोड़ीदार होगा: पीके और यूके का समान संबंध है।" मैं इस लेख को पढ़ने का सुझाव दूंगा: लेखक द्वारा दिया गया उदाहरण उपयुक्त नहीं लग सकता है, लेकिन एक समग्र विचार प्राप्त करने का प्रयास करें।
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
[table_name]_pkey
तालिका में एक नया कॉलम (डिफ़ॉल्ट नाम के साथ ) जोड़ा गया है (मैंने इसे सरोगेट कुंजी के रूप में संदर्भित किया है)। स्रोत: postgresqltutorial.com/postgresql-primary-key मैं यह सब करने के लिए नया हूँ इसलिए मैं अपनी याद की गई बारीकियों को इंगित करने के लिए अधिक जानकार पोस्टर की सराहना करूँगा।
किसी संगठन या व्यवसाय के लिए, बहुत सारी भौतिक संस्थाएँ हैं (जैसे कि लोग, संसाधन, मशीनें, इत्यादि) और आभासी संस्थाएँ (उनके कार्य, लेनदेन, गतिविधियाँ)। आमतौर पर, व्यवसाय को उन व्यावसायिक संस्थाओं की जानकारी रिकॉर्ड करने और संसाधित करने की आवश्यकता होती है। इन व्यावसायिक संस्थाओं की पहचान एक कुंजी द्वारा संपूर्ण व्यावसायिक डोमेन में की जाती है।
RDBMS संभावित के अनुसार, की (उर्फ कैंडिडेट कुंजी) एक मान या सेट है जो विशिष्ट रूप से एक इकाई की पहचान करता है।
DB-Table के लिए, बहुत सारी कुंजियाँ मौजूद हैं और प्राथमिक कुंजी के लिए योग्य हो सकती हैं। ताकि सभी चाबियाँ, प्राथमिक कुंजी, अद्वितीय कुंजी, आदि को सामूहिक रूप से कैंडिडेट कुंजी कहा जाता है। हालांकि, डीबीए ने खोज रिकॉर्ड के लिए उम्मीदवार कुंजी से एक कुंजी को चुना है जिसे प्राथमिक कुंजी कहा जाता है।
प्राथमिक कुंजी और अद्वितीय कुंजी के बीच अंतर
1. व्यवहार: एक तालिका में एक पंक्ति (रिकॉर्ड) की पहचान करने के लिए प्राथमिक कुंजी का उपयोग किया जाता है, जबकि अद्वितीय-कुंजी एक कॉलम में डुप्लिकेट मान को रोकने के लिए है (शून्य प्रविष्टि के अपवाद के साथ)।
2. इंडेक्सिंग: डिफ़ॉल्ट एसक्यूएल-इंजन मौजूद नहीं होने पर प्राइमरी-की पर क्लस्टर इंडेक्स बनाता है और यूनिक-की पर नॉन-क्लस्टर्ड इंडेक्स।
3. अशक्तता: प्राथमिक कुंजी में शून्य मान शामिल नहीं हैं, जबकि अद्वितीय-कुंजी कर सकते हैं।
4. अस्तित्व: एक मेज में अधिकतम एक प्राथमिक कुंजी हो सकती है, लेकिन इसमें कई विशिष्ट-कुंजी हो सकती हैं।
5. परिवर्तनशीलता: आप प्राथमिक मानों को बदल या हटा नहीं सकते, लेकिन विशिष्ट-कुंजी मान सकते हैं।
अधिक जानकारी और उदाहरण के लिए:
एक प्राथमिक कुंजी अद्वितीय होनी चाहिए।
एक अद्वितीय कुंजी के लिए प्राथमिक कुंजी नहीं है - उम्मीदवार कुंजी देखें ।
यही है, एक मेज पर स्तंभों के एक से अधिक संयोजन हो सकते हैं जो विशिष्ट रूप से एक पंक्ति की पहचान कर सकते हैं - इनमें से केवल एक को प्राथमिक कुंजी के रूप में चुना जा सकता है। अन्य, हालांकि अद्वितीय उम्मीदवार कुंजी हैं।
प्राथमिक कुंजी और अद्वितीय कुंजी के बीच अंतर
+-----------------------------------------+-----------------------------------------------+ | Primary Key | Unique Key | +-----------------------------------------+-----------------------------------------------+ | Primary Key can't accept null values. | Unique key can accept only one null value. | +-----------------------------------------+-----------------------------------------------+ | By default, Primary key is clustered | By default, Unique key is a unique | | index and data in the database table is | non-clustered index. | | physically organized in the sequence of | | | clustered index. | | +-----------------------------------------+-----------------------------------------------+ | We can have only one Primary key in a | We can have more than one unique key in a | | table. | table. | +-----------------------------------------+-----------------------------------------------+ | Primary key can be made foreign key | In SQL Server, Unique key can be made foreign | | into another table. | key into another table. | +-----------------------------------------+-----------------------------------------------+
आप विस्तृत जानकारी यहाँ से प्राप्त कर सकते हैं:
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html
एक प्राथमिक कुंजी में डेटाबेस की पंक्ति को पहचानने का शब्दार्थ है। इसलिए दी गई तालिका के लिए केवल एक प्राथमिक कुंजी हो सकती है, जबकि कई अद्वितीय कुंजी हो सकती हैं।
इसी कारण से एक प्राथमिक कुंजी NULL नहीं हो सकती (कम से कम Oracle में, अन्य डेटाबेस के बारे में निश्चित नहीं है)
चूंकि यह पंक्ति की पहचान करता है इसलिए इसे कभी नहीं बदलना चाहिए। प्राथमिक कुंजियों को बदलने से गंभीर दर्द और शायद शाश्वत लानत होती है।
ज्यादातर मामलों में आप प्राथमिक कुंजी के लिए कुछ कृत्रिम आईडी चाहते हैं, जिसका उपयोग किसी भी चीज के लिए नहीं किया जाता है, लेकिन तालिका में एकल पंक्तियों की पहचान की जाती है।
दूसरी ओर अद्वितीय कुंजियाँ आप जितना चाहें बदल सकते हैं।
एक प्राथमिक कुंजी एक अद्वितीय कुंजी है।
प्रत्येक तालिका में अधिकतम एक प्राथमिक कुंजी होनी चाहिए, लेकिन इसमें कई अद्वितीय कुंजी हो सकती हैं। तालिका की पंक्ति को विशिष्ट रूप से पहचानने के लिए एक प्राथमिक कुंजी का उपयोग किया जाता है। एक प्राथमिक कुंजी तब से नहीं हो सकती NULL
जब तक NULL
कोई मूल्य नहीं है।
मुझे पता है कि यह सवाल कई साल पुराना है, लेकिन मैं यह समझाने का जवाब देना चाहूंगा कि क्यों नहीं
प्राथमिक कुंजी का उद्देश्य : किसी डेटाबेस में किसी पंक्ति को विशिष्ट रूप से पहचानने के लिए => एक पंक्ति तालिका द्वारा प्रतिरूपित इकाई प्रकार के एक एकल उदाहरण का प्रतिनिधित्व करती है। एक प्राथमिक कुंजी एक इकाई, AKA इकाई अखंडता की अखंडता को लागू करती है। प्राइमरी की एक क्लस्टर इंडेक्स होगा यानी यह उस ऑर्डर को परिभाषित करता है जिसमें डेटा को एक टेबल में फिजिकली स्टोर किया जाता है।
अद्वितीय कुंजी का उद्देश्य : ठीक है, प्राथमिक कुंजी के साथ हमारे पास विशिष्ट रूप से एक पंक्ति को पहचानने का एक तरीका है। लेकिन मेरे पास एक व्यवसाय की आवश्यकता है जैसे, एक अन्य स्तंभ / स्तंभों के एक सेट में अद्वितीय मान होना चाहिए। खैर, तकनीकी रूप से, यह देखते हुए कि यह कॉलम अद्वितीय है, यह इकाई अखंडता को लागू करने के लिए एक उम्मीदवार हो सकता है। लेकिन हम सभी जानते हैं, इस कॉलम में बाहरी संगठन से उत्पन्न होने वाले डेटा शामिल हो सकते हैं जो मुझे अद्वितीय होने के बारे में संदेह हो सकता है। मैं इकाई अखंडता प्रदान करने के लिए इस पर भरोसा नहीं कर सकता। मैं अपनी व्यावसायिक आवश्यकता को पूरा करने के लिए इसे एक अद्वितीय कुंजी बनाता हूं।
तुम वहाँ जाओ!
यदि आपका डेटाबेस डिज़ाइन ऐसा है कि उनकी विदेशी कुंजी की कोई आवश्यकता नहीं है, तो आप यूनीक कुंजी के साथ जा सकते हैं ( लेकिन याद रखें कि अद्वितीय कुंजी एकल नल की अनुमति दें )।
यदि आप डेटाबेस को विदेशी कुंजी की मांग करते हैं तो आप प्राथमिक विकल्प के साथ जाने के लिए कोई विकल्प नहीं छोड़ते हैं।
यहां अद्वितीय और प्राथमिक कुंजी यात्रा के बीच अंतर देखने के लिए
अद्वितीय कुंजी: - इसका उपयोग तब किया जाना चाहिए जब आपको अद्वितीय मूल्य देना होगा। अद्वितीय कुंजी के मामले में इसका मतलब है कि शून्य मान भी अनुमत हैं। साधारण कुंजी वे कुंजी हैं जो उस स्तंभ में अद्वितीय और गैर-समान हैं उदाहरण के लिए जैसे आपका पालतू नाम यह शून्य की तरह कुछ भी नहीं हो सकता है और यदि आप डेटाबेस के संदर्भ में पूछ रहे हैं, तो यह ध्यान दिया जाना चाहिए कि प्रत्येक नल डेटाबेस में एक और शून्य से अलग है। EXCEPT-SQL सर्वर जहां null = null सत्य है
प्राथमिक कुंजी: - इसका उपयोग तब किया जाना चाहिए जब आपको विशिष्ट रूप से किसी पंक्ति को पहचानना हो। एक कुंजी एक डेटाबेस बाधा में प्रत्येक पंक्ति के लिए विशिष्ट है जो यह है कि यह इसमें अशक्त होने की अनुमति नहीं देता है। इसके अलावा, आपने देखा होगा कि डेटाबेस एक कॉलम है जो स्वतः वृद्धि है और यह तालिका की प्राथमिक कुंजी है। इसके अलावा यह एक अन्य तालिका में एक विदेशी कुंजी के रूप में इस्तेमाल किया जा सकता है। नमूना एक आदेश तालिका , बिल तालिका में एक बिल पर आदेश हो सकता है ।
अब स्थिति में वापस आ रहा है जब इसका उपयोग करने के लिए: -
1) स्तंभ में प्राथमिक कुंजी जो तालिका में शून्य नहीं हो सकती है और आप संबंध बनाने के लिए किसी अन्य तालिका में विदेशी कुंजी के रूप में उपयोग कर रहे हैं
2) टेबल में अद्वितीय कुंजी जहां यह तालिका या पूरे डेटाबेस में प्रभावित नहीं करता है चाहे आप रेस्तरां में स्नैक्स जैसे विशेष कॉलम के लिए नल लेते हैं यह संभव है कि आप रेस्तरां में स्नैक्स न लें
प्राथमिक कुंजी और अद्वितीय कुंजी के बीच अंतर
दोनों Primary key
और Unique Key
तालिका में पंक्ति को विशिष्ट रूप से परिभाषित करने के लिए उपयोग किए जाते हैं।
स्तंभ का Primary Key
एक बनाता है clustered index
जबकि ए Unique creates an unclustered index of the column
।
A Primary Key
NULL value
हालांकि, अनुमति नहीं a Unique Key
देता है one NULL value
।
बस प्राथमिक कुंजी एक अद्वितीय है और अशक्त नहीं हो सकता है, अद्वितीय शून्य हो सकता है और अद्वितीय नहीं हो सकता है।
may not be unique
यहाँ क्या मतलब है?
प्राथमिक कुंजी का मुख्य उद्देश्य तालिका में प्रत्येक रिकॉर्ड की पहचान करने के लिए एक साधन प्रदान करना है।
प्राथमिक कुंजी पंक्ति के भीतर डेटा का उपयोग करके, पंक्ति को पहचानने का एक साधन प्रदान करती है। एक प्राथमिक कुंजी एक या अधिक स्तंभों पर आधारित हो सकती है, जैसे पहले और अंतिम नाम; हालाँकि, कई डिज़ाइनों में, प्राथमिक कुंजी एक पहचान कॉलम से एक ऑटो-जनरेट संख्या है।
एक प्राथमिक कुंजी में निम्नलिखित विशेषताएं हैं:
एक अद्वितीय कुंजी को एक अद्वितीय बाधा भी कहा जाता है। डेटाबेस के भीतर पंक्तियों को अद्वितीय बनाने के लिए एक अद्वितीय बाधा का उपयोग किया जा सकता है।
क्या हम पहले से ही प्राथमिक कुंजी के साथ ऐसा नहीं करते हैं? हां, हम करते हैं, लेकिन एक तालिका में स्तंभों के कई सेट हो सकते हैं जो आप अद्वितीय चाहते हैं।
SQL सर्वर में अद्वितीय कुंजी में निम्न विशेषताएँ हैं:
स्रोत: यहाँ
एक प्राथमिक कुंजी की मुख्य विशेषताएं हैं:
इसमें डेटा की प्रत्येक पंक्ति के लिए एक अद्वितीय मान होना चाहिए। इसमें शून्य मान नहीं हो सकते। एक तालिका में केवल एक प्राथमिक कुंजी।
एक विशिष्ट कुंजी की मुख्य विशेषताएं हैं:
इसमें डेटा की प्रत्येक पंक्ति के लिए एक अद्वितीय मान भी हो सकता है।
इसमें अशक्त मूल्य भी हो सकते हैं।
एक तालिका में एकाधिक अद्वितीय कुंजियाँ।
PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT