हां, आप यह कर सकते हैं (और आपको डेटाबेस डिज़ाइन बिंदु दृश्य से) चाहिए।
हालांकि, इस बात पर विचार करें कि user_id
तालिका 2 पर प्राथमिक कुंजी है। आप प्रभावी रूप से कह रहे हैं कि तालिका 2 में प्रत्येक पंक्ति किसी उपयोगकर्ता से मेल खाती है, लेकिन आपके पास पहले से एक सारणी है जहां प्रत्येक पंक्ति किसी उपयोगकर्ता से मेल खाती है: तालिका 1. यह सवाल उठाता है "फिर आप टेबल 2 के सभी डेटा को तालिका 1 में निरर्थक कॉलम में क्यों नहीं डालते?"। आखिरकार, दो टेबल होने का मतलब है कि आपको एक के बजाय इस डेटा को प्राप्त करने के लिए दो प्रश्न पूछना होगा।
अब वहाँ कुछ स्थितियों में, जहां इस अभ्यास में एक अच्छा विचार हो सकते हैं:
- यदि आप उन के बहुत सारे लेकिन तालिका 2 में केवल कुछ ऐसी पंक्तियां है, शायद तालिका 2 पर क्वेरी केवल शायद ही कभी किया जाता हो जाएगा ; साथ ही, आप तालिका 1
- पर संग्रहण स्थान और संशोधन गति प्राप्त करते हैं, भविष्य में तालिका 2 की प्राथमिक कुंजी बदलने के लिए भविष्य में संभव हो सकता है, जबकि विदेशी कुंजी बनी हुई है; यदि आप तालिका 1 में सभी डेटा डालते हैं, तो यह संशोधन आपके डेटाबेस मॉडल को
यह एक अच्छा विचार हो सकता है, लेकिन यह आपके आवेदन के विवरणों पर निर्भर करता है।
इसी तरह का प्रश्न (लेकिन डुप्लिकेट नहीं): [विदेशी कुंजी कैसे बनाएं जो MySQL में प्राथमिक कुंजी भी है?] (Http://stackoverflow.com/questions/5575051/how-to-create-foreign-key -थैट-ए-ए-प्राथमिक-कुंजी-इन-माइस्क्ल) – naXa