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

SQL में समग्र प्राथमिक कुंजी का संदर्भ कैसे दें

हम यह कहने के लिए एक SQL FK (विदेशी कुंजी) बाधा की घोषणा करते हैं कि स्तंभों की सूची के लिए एक उप-मान हमेशा स्तंभों की सूची के लिए एक उप-मान के रूप में कहीं और दिखाई देता है जो SQL PK (प्राथमिक कुंजी) या UNIQUE NOT NULL बनाता है। जब भी यह अन्य घोषणाओं द्वारा पहले से ही निहित न हो तो इसे घोषित करें। इसे घोषित SQL PK (प्राथमिक कुंजी) या UNIQUE NOT NULL में कॉलम सूची का संदर्भ देना चाहिए। तो आपको यह घोषित करना होगा कि संदर्भित तालिका में, भले ही वह पहले से ही NOT NULLs द्वारा निहित हो और एक छोटा निहित PK या UNIQUE NOT NULL।

इसलिए ध्यान दें कि SQL PK अनिवार्य रूप से अद्वितीय होने के संबंधपरक अर्थ में एक PK नहीं है, लेकिन इसमें एक छोटा अद्वितीय स्तंभ सेट नहीं है, अर्थात एक सुपरकी होने के नाते जिसमें एक छोटी सुपरकी नहीं है, यानी एक न्यूनतम/इरेड्यूसेबल सुपरकी होना, यानी CK होना ( उम्मीदवार कुंजी).

यहां, आपको buildingno . को बदलने की आवश्यकता हो सकती है &roomno एक-एक करके FK, (buildingno, roomno) Room . के लिए :

CONSTRAINT SESSION_FK12
    FOREIGN KEY(BUILDINGNO,ROOMNO) REFERENCES ROOM(BUILDINGNO,ROOMNO)

वह हो सकता है अपनी तालिकाओं के अर्थ के लिए उपयुक्त रहें--जो वास्तव में आप नहीं देते हैं, इसलिए हम नहीं जान सकते, हम केवल अनुमान लगा सकते हैं। जैसे अगर buildingno भी सकता है कमरे में PK या UNIQUE NOT NULL घोषित किया जाए, जो कि जब roomno IS NOT NULL . है वास्तव में संगत है और इसका अर्थ है (buildingno, roomno) PK या UNIQUE NOT NULL घोषित किया जा सकता है, हो सकता है कि आपका FK दाएं हो लेकिन आपका Room घोषणाएं अपर्याप्त हैं।

जब स्तंभों की सूची के लिए एक सबरो मान हमेशा कॉलम की सूची के लिए एक सबरो मान के रूप में कहीं और दिखाई देता है जिसे IND (समावेश निर्भरता) बाधा कहा जाता है। SQL में गैर-FK IND घोषित करने का कोई तरीका नहीं है; हमें ट्रिगर्स द्वारा लागू करना चाहिए। वह भी हो सकता है कि आपको अपने डिजाइन के लिए क्या चाहिए।

आप FK को buildingno . से रख सकते हैं Building . के लिए , लेकिन यह मेरे द्वारा सुझाए गए FK और buildingno में FK द्वारा निहित है Room . पर संदर्भ Building

समग्र प्राथमिक कुंजी का हिस्सा संदर्भित करना



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विजुअल बेसिक से आउट-पैरामीटर के रूप में रेफ कर्सर के साथ ओरेकल फ़ंक्शन को कैसे कॉल करें

  2. Oracle 18c में जेसन को कुशलतापूर्वक कैसे पार्स करें?

  3. SQL परिणाम समूह महीने के अनुसार

  4. ओरेकल फ़ेच फर्स्ट 1 रो विद यूनियन ऑल स्टेटमेंट

  5. रेंज फिल टेबल