मैं एक एसक्यूएल सर्वर में निम्न तालिकाओं है 2008 db:मेरे पास एक चेक बाधा कैसे है जो किसी अन्य तालिका को संदर्भित करती है?
tblItem है, जो एक ItemID क्षेत्र है;
tblGoodItem, जिसमें एक आइटम आईडी फ़ील्ड भी है, और इसमें एक विदेशी कुंजी है जो tblItem को इंगित करती है;
tblBadItem है, जो भी एक ItemID क्षेत्र है, और यह भी tblItem के लिए एक विदेशी कुंजी की ओर इशारा करते हैं।
कोई आइटम एक अच्छी वस्तु और बुरी वस्तु दोनों नहीं हो सकता है; यह या तो एक या दूसरे होना चाहिए। हालांकि, क्या आइटम अच्छा या बुरा है, यह एक आइटम होना चाहिए। कैसे मैं दोनों tblGoodItem और tblBadItem में ItemID क्षेत्रों के लिए एक बाधा जोड़ सकता हूँ, ताकि एक ItemID मूल्य दोनों तालिकाओं में मौजूद नहीं कर सकते हैं:
मेरा प्रश्न है?
मैं इसी तरह के सवाल पर स्टैक ओवरफ़्लो में कुछ उत्तर पढ़ा है, और मैं इस समाधान के बारे में सोच रहा हूँ:
एक दृश्य vwItem जो ItemID पर tblBadItem पर tblGoodItem मिलती है बनाएँ।
एक यूडीएफ fnItem लिखें जो vwItem पर एक प्रश्न करता है यह देखने के लिए कि दृश्य में कितने रिकॉर्ड मौजूद हैं।
की कोई समस्या जो fnItem कॉल करता है और पुष्टि करता है कि दिए गए मान 0.
यह सबसे अच्छा विचार है है है? क्या किसी के पास बेहतर विचार है?
आपने मुझे कुछ सेकंड तक हराया। –
मुझे यह विचार बहुत पसंद है। बुरे से अच्छे से बदलने के बारे में चिंता करने की ज़रूरत नहीं है - वास्तव में, मैं विशेष रूप से ऐसा परिवर्तन नहीं करना चाहता हूं। –