2010-11-30 15 views
7

प्रदान करता है मेरे पास मेरी एक तालिका में एक कॉलम है। यह वैकल्पिक है, इसलिए इसे खाली छोड़ दिया जा सकता है। हालांकि, अगर उस कॉलम के लिए एक मूल्य प्रदान किया जाता है, तो यह अद्वितीय होना चाहिए। दो सवाल:डाटाबेस डिज़ाइन: वैकल्पिक, लेकिन अद्वितीय होना चाहिए यदि कोई मान

  1. मैं कैसे लागू करते हैं यह मेरा डेटाबेस डिजाइन में (मैं MySQL Workbench उपयोग कर रहा हूँ, वैसे)
  2. वहाँ अपने मॉडल के साथ एक संभावित समस्या है?
+1

उत्तर (2)। नहीं, यह काफी सामान्य है। –

उत्तर

4

कॉलम पर UNIQUE अनुक्रमणिका का उपयोग करें। देखें:

http://dev.mysql.com/doc/refman/5.1/en/create-index.html

एक अद्वितीय सूचकांक एक बाधा पैदा करता है ऐसी है कि सूचकांक में सभी मूल्यों अंतर होना चाहिए। एक त्रुटि तब होती है जब आप किसी कुंजी पंक्ति के साथ एक नई पंक्ति जोड़ने का प्रयास करते हैं जो मौजूदा पंक्ति से मेल खाता है। सभी इंजनों के लिए, एक UNIQUE इंडेक्स कॉलम के लिए एकाधिक NULL मानों को अनुमति देता है जो में न्यूल हो सकता है। यदि आप UNIQUE अनुक्रमणिका में कॉलम के लिए उपसर्ग मान निर्दिष्ट करते हैं, तो कॉलम मान उपसर्ग के भीतर अद्वितीय होना चाहिए।

2

यह शून्य (और खाली नहीं) और अद्वितीय हो सकता है। डिफ़ॉल्ट मूल्य से शून्य हो सकता है। मेरे लिए कोई समस्या नहीं है।

1

आप एक तालिका पर एक अद्वितीय सूचकांक बना सकते हैं। तालिका बनाने/संपादित करते समय MySQL वर्कबेंच में यूक्यू चेकबॉक्स है।

0

चरण 1, ALTER तालिका और MODIFY फ़ील्ड NULL एस की अनुमति है।

ALTER TABLE my_table MODIFY my_field VARCHAR(100) NULL DEFAULT NULL; 

चरण 2, क्षेत्र में UNIQUE अनुक्रमणिका जोड़ें। एक नल क्षेत्र में यह पहली नजर में थोड़ा जवाबी सहज है यह उस पर एक UNIQUE सूचकांक डाल के साथ अपने ही झिझक -

ALTER TABLE my_table ADD UNIQUE INDEX U_my_field (my_field); 

यह उपयोग करने के लिए ठीक है।

0

1) कॉलम को एक नई तालिका में ले जाएं, इसे अद्वितीय और गैर-शून्य बनाएं। अब आपके पास इस नई तालिका में केवल एक पंक्ति हो सकती है जब आपके पास इसका मूल्य हो।

2) हां। चाबियों पर कुंजी और निर्भरता एक संबंधपरक डेटाबेस डिज़ाइन में डेटा अखंडता का आधार हैं। यदि एक विशेषता अद्वितीय होना चाहिए तो इसे एक कुंजी के रूप में लागू किया जाना चाहिए। एक शून्य "कुंजी" बिल्कुल महत्वपूर्ण नहीं है और वैसे भी कभी भी जरूरी नहीं है क्योंकि इसे हमेशा एक नई तालिका में स्थानांतरित किया जा सकता है और किसी भी जानकारी के नुकसान के बिना गैर-शून्य हो सकता है।

संबंधित मुद्दे