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

EF4.1:शून्य-या-एक से शून्य-या-एक (0..1 से 0..1) संबंध होना संभव है?

नहीं, यह संभव नहीं है और मुझे संदेह है कि यह SQL सर्वर में काम करता है। डेटाबेस संबंध के लिए आवश्यक है कि एक छोर निर्भर हो जाए। इसका मतलब है कि यह एक प्रमुख अंत की प्राथमिक कुंजी (पीके) का संदर्भ देता है - हम इसे विदेशी कुंजी (एफके) कहते हैं। अगर हम एक-से-एक संबंध के बारे में बात करते हैं तो एफके को अद्वितीय के रूप में चिह्नित किया जाना चाहिए ताकि आश्रित तालिका में केवल एक रिकॉर्ड मुख्य तालिका से दिए गए रिकॉर्ड को संदर्भित कर सके। इस मामले में एकमात्र वैध संबंध 0..1 - 1 है जहां प्रिंसिपल बिना आश्रित के मौजूद हो सकता है लेकिन आश्रित केवल मौजूदा प्रिंसिपल से संबंधित होने पर ही मौजूद हो सकता है क्योंकि इसका एफके वैल्यू प्रिंसिपल के पीके वैल्यू पर सेट होना चाहिए। सैद्धांतिक रूप से FK अशक्त हो सकता है लेकिन यह इस बात पर निर्भर करता है कि डेटाबेस अद्वितीय बाधाओं को कैसे लागू करता है। यदि डेटाबेस एक अन्य अद्वितीय मान के रूप में शून्य की गणना करता है, तो केवल एक आश्रित रिकॉर्ड में FK को शून्य पर सेट किया जा सकता है (मुझे लगता है कि यह SQL सर्वर का मामला है)।

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

आपके लिए सबसे अच्छा समाधान Request . पर विचार करना है मुख्य इकाई और Result . के रूप में आश्रित के रूप में। अनुरोध पहले बनाया जाना चाहिए और इसे डेटाबेस में तब तक रखा जाना चाहिए जब तक Result . Result संबंधित Request . के समान PK मान होना चाहिए (स्तंभ को स्वतः वृद्धि नहीं किया जा सकता) (और PK Request . के लिए FK होना चाहिए )।



  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. जेपीए समग्र प्राथमिक कुंजी

  3. SQL 2008 HierarchyID NHibernate में समर्थन करता है

  4. एडीओ .NET बनाम एसक्यूएल सर्वर प्रबंधन स्टूडियो - एडीओ खराब प्रदर्शन करता है

  5. Sql सर्वर 2008 में nvarchar को bigint में बदलें