Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL प्राथमिक कुंजी

बताता है कि प्राथमिक कुंजी क्या है, और यह संबंधपरक डेटाबेस का एक अभिन्न अंग क्यों है।

जब हमने अपनी दो तालिकाएँ बनाईं, तो हमने प्रत्येक तालिका के लिए एक प्राथमिक कुंजी भी बनाई।

जब आप बाईं ओर के नोड्स को विस्तृत करते हैं SCHEMAS टैब में, आप प्रत्येक तालिका के अंतर्गत सूचीबद्ध प्राथमिक कुंजियाँ (और विदेशी कुंजियाँ—हम उन्हें आगे प्राप्त करेंगे) देख सकते हैं:

जैसा कि साथ दिया गया स्क्रीनशॉट दिखाता है, इंडेक्स नोड्स में कोई अनुक्रमणिका होती है (हमारे मामले में विदेशी कुंजी और/या प्राथमिक कुंजी)। ये प्राथमिक कुंजियाँ और विदेशी कुंजियाँ केवल इसलिए हैं क्योंकि हमने तालिकाएँ बनाते समय इन्हें अपने कोड में निर्दिष्ट किया था।

विशेष रूप से, हमने PRIMARY KEY (FruitId) . का उपयोग किया है FruitId . बनाने के लिए फलों . के लिए प्राथमिक कुंजी को स्तंभित करें तालिका, और हमने PRIMARY KEY (UnitId) . का उपयोग किया UnitId . बनाने के लिए इकाइयों . के लिए प्राथमिक कुंजी को स्तंभित करें टेबल।

प्राथमिक कुंजी क्या है?

एक प्राथमिक कुंजी (जिसे अद्वितीय कुंजी . भी कहा जाता है) ) एक कॉलम है जिसे विशिष्ट पहचानकर्ता क्षेत्र के रूप में आवंटित किया गया है। प्राथमिक कुंजी कॉलम में मान प्रत्येक रिकॉर्ड के लिए अद्वितीय है। दूसरे शब्दों में, कोई भी दो रिकॉर्ड उस कॉलम पर समान मान साझा नहीं कर सकते हैं।

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

एक प्राथमिक या तो एक सामान्य मान हो सकता है जो अद्वितीय होने की गारंटी है (पुस्तकों, उत्पाद कोड, आदि के लिए एक आईएसबीएन संख्या), या यह विशेष रूप से अद्वितीय होने के लिए एप्लिकेशन या डीबीएमएस द्वारा उत्पन्न मूल्य हो सकता है (जैसे विश्व स्तर पर अद्वितीय पहचानकर्ता, या ऑटो वृद्धिशील पूर्णांक)।

प्राथमिक कुंजी चुनना

अपनी प्राथमिक कुंजी के लिए कॉलम चुनते समय सावधान रहें। आपको यह सुनिश्चित करने की आवश्यकता है कि प्रत्येक रिकॉर्ड में एक होगा, और इस बात की कोई संभावना नहीं है कि दो रिकॉर्ड समान मान साझा करेंगे, या कि एक रिकॉर्ड में एक से अधिक मान होंगे।

उदाहरण के लिए, उपयोगकर्ता के ईमेल पते का उपयोग करना कुछ मामलों में काम कर सकता है, लेकिन यह विशिष्ट पहचानकर्ता के लिए बहुत ठोस आधार नहीं है। उपयोगकर्ता अपना ईमेल पता बदल सकते हैं। उपयोगकर्ता ईमेल पते साझा कर सकते हैं। कुछ उपयोगकर्ताओं के पास ईमेल पता नहीं हो सकता है। बेशक, आप उपयोगकर्ताओं को अपना ईमेल पता बदलने या इसे साझा करने से रोकने के लिए अपना सिस्टम लिख सकते हैं, लेकिन आपका सिस्टम बहुत लचीला या उपयोगकर्ता के अनुकूल नहीं होगा।

आपको सभी उपयोगकर्ताओं के लिए एक अद्वितीय उपयोगकर्ता नाम रखने की आवश्यकता हो सकती है। यह काम कर सकता था। हालांकि, आपको सभी संभावनाओं के बारे में ध्यान से सोचने की जरूरत है। यदि कोई मौका है तो उपयोगकर्ता इसे बदल सकते हैं या इसे साझा कर सकते हैं (अतीत, वर्तमान, या भविष्य) इसे प्राथमिक कुंजी के रूप में उपयोग न करें। क्या होगा यदि "TechGuy12" उसके खाते को निष्क्रिय कर दे। क्या इसका मतलब यह है कि कोई अन्य उपयोगकर्ता अब "TechGuy12" का उपयोग कर सकता है? क्या यह आपके आवेदन या आपके द्वारा जेनरेट की जाने वाली किसी रिपोर्ट के लिए कोई समस्या होगी?

यदि आप अपने प्राथमिक कुंजी फ़ील्ड की "विशिष्टता" के बारे में किसी भी संदेह में हैं, तो एक स्वतः उत्पन्न संख्या का उपयोग करें जो बनाए गए प्रत्येक रिकॉर्ड के साथ वृद्धि करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL INSERT कथन के लिए Python dict का उपयोग करना

  2. MySQL में व्यू कैसे अपडेट करें

  3. एक अतुल्यकालिक दास से MySQL गैलेरा क्लस्टर को कैसे पुनर्प्राप्त करें

  4. #1055 - चयन सूची की अभिव्यक्ति ग्रुप बाय क्लॉज में नहीं है और इसमें गैर-समेकित कॉलम है यह sql_mode=only_full_group_by के साथ असंगत है

  5. MySQL:बड़ा VARCHAR बनाम टेक्स्ट?