शून्य मान
<ब्लॉकक्वॉट>इसका मतलब यह भी है कि आइटम में स्वयं सहित 5 आईडी होंगे। यह सब शून्य मानों का कारण बनता है (जाहिरा तौर पर एक बड़ी संख्या नहीं, जिसे मैं समझ सकता हूं) क्योंकि यदि स्थान और मूल्य वैकल्पिक हैं और आइटम तालिका में एक प्रविष्टि पर उपयोग नहीं किए जाते हैं तो मेरे पास एक शून्य मान होगा
व्यक्तिगत रूप से मुझे लगता है कि यह एक ऐसी स्थिति है जहां NULL मान परिपूर्ण हैं, और मुझे निश्चित रूप से इसे अपने डेटाबेस डिज़ाइन में डालने के बारे में कोई संदेह नहीं होगा।
एक तरह से मैंने दूसरों को NULL . के बिना एक ही चीज़ हासिल करते देखा है मान 0 की एक आईडी के साथ वैकल्पिक तालिकाओं (आपके उदाहरण में स्थान और मूल्य) में एक रिकॉर्ड बनाना है जो दर्शाता है कि कोई संबंधित रिकॉर्ड नहीं है - लेकिन यह इन रिकॉर्ड्स को फ़िल्टर करने के लिए एप्लिकेशन के डेवलपर के लिए 10 गुना अधिक काम करता है - इसमें शामिल होना FAR आसान है और यदि आपको कोई रिकॉर्ड वापस नहीं मिलता है, तो वैकल्पिक तालिका में कोई संबंधित रिकॉर्ड नहीं हैं।
बस एक LEFT करना याद रखें या RIGHT OUTER अगर आप Item वापस करना चाहते हैं तो शामिल हों s इस पर ध्यान दिए बिना कि उनके पास Place है या नहीं या Price संबद्ध (आपको NULL मिलेगा) Item . के लिए वैकल्पिक तालिका कॉलम में मान s जिनके पास संबद्ध रिकॉर्ड नहीं हैं) और एक INNER शामिल हों यदि आप केवल Itemचाहते हैं जो करते हैं एक संबद्ध वैकल्पिक रिकॉर्ड है।
समग्र कुंजियां
एक समग्र कुंजी एक तालिका में एक कुंजी है जो एक से अधिक स्तंभों से बनी होती है। यदि आपका प्रत्येक Person , Item , Place और Price सभी के पास एक आईडी है (भले ही यह केवल एक ऑटो-इन्क्रीमेंटिंग संख्या है) आपको एक समग्र कुंजी की आवश्यकता नहीं होगी - प्रत्येक तालिका में केवल एक प्राथमिक कुंजी कॉलम और Item में एक विदेशी कुंजी कॉलम। प्रत्येक संबंधित तालिका के लिए तालिका - उदा। item_id , person_id , place_id , price_id . आप कहते हैं कि Item इसकी अपनी आईडी है, इसलिए आपको एक समग्र कुंजी की आवश्यकता नहीं होनी चाहिए - item_id पर केवल एक प्राथमिक कुंजी कॉलम।