मैं मतभेदों को पूरी तरह से समझ नहीं पाया हूं। क्या आप दोनों अवधारणाओं का वर्णन कर सकते हैं और वास्तविक दुनिया के उदाहरणों का उपयोग कर सकते हैं?
मैं मतभेदों को पूरी तरह से समझ नहीं पाया हूं। क्या आप दोनों अवधारणाओं का वर्णन कर सकते हैं और वास्तविक दुनिया के उदाहरणों का उपयोग कर सकते हैं?
जवाबों:
एक पहचान संबंध तब होता है जब एक बच्चे की तालिका में एक पंक्ति का अस्तित्व एक मूल तालिका में एक पंक्ति पर निर्भर करता है। यह भ्रामक हो सकता है क्योंकि बच्चे की मेज के लिए छद्म शब्द बनाने के लिए इन दिनों यह आम बात है, लेकिन बच्चे की प्राथमिक कुंजी के मूल भाग के लिए विदेशी कुंजी न बनाएं। औपचारिक रूप से, ऐसा करने का "सही" तरीका बच्चे की प्राथमिक कुंजी का विदेशी कुंजी हिस्सा बनाना है। लेकिन तार्किक संबंध यह है कि बच्चा माता-पिता के बिना मौजूद नहीं हो सकता है।
उदाहरण: A Person
में एक या अधिक फ़ोन नंबर हैं। यदि उनके पास सिर्फ एक फोन नंबर होता है, तो हम इसे केवल एक कॉलम में संग्रहीत कर सकते हैं Person
। चूंकि हम कई फोन नंबरों का समर्थन करना चाहते हैं, इसलिए हम एक दूसरी तालिका बनाते हैं PhoneNumbers
, जिसकी प्राथमिक कुंजी में person_id
संदर्भित Person
तालिका शामिल होती है।
हम एक व्यक्ति से संबंधित फोन नंबर के बारे में सोच सकते हैं, भले ही वे एक अलग तालिका की विशेषताओं के रूप में तैयार किए गए हों। यह एक मजबूत सुराग है कि यह एक पहचान वाला संबंध है (भले ही हम person_id
प्राथमिक कुंजी में शाब्दिक रूप से शामिल नहीं हैं PhoneNumbers
)।
एक गैर-पहचान वाला संबंध तब होता है जब माता-पिता की प्राथमिक प्रमुख विशेषताएं बच्चे की प्राथमिक प्रमुख विशेषता नहीं बनना चाहिए । इसका एक अच्छा उदाहरण एक लुकिंग टेबल है, जैसे Person.state
कि प्राथमिक कुंजी को संदर्भित करने पर एक विदेशी कुंजी States.state
। Person
सम्मान के साथ एक बच्चे की मेज है States
। लेकिन एक पंक्ति को Person
उसके state
गुण द्वारा नहीं पहचाना जाता है। Ie state
प्राथमिक कुंजी का हिस्सा नहीं है Person
।
एक गैर-पहचान वाला संबंध वैकल्पिक या अनिवार्य हो सकता है , जिसका अर्थ है कि विदेशी कुंजी कॉलम क्रमशः NULL को अनुमति देता है या NULL को अस्वीकार करता है।
गैर-पहचान वाले संबंधों की पहचान के बारे में अभी भी उलझन में मेरा जवाब देखें
Beds
बिना किसी जोड़ के किसी विशिष्ट भवन में सभी बिस्तरों के लिए तालिका को क्वेरी कर सकते हैं ।
user_id
अपने आप प्राथमिक कुंजी होनी चाहिए, और updated_by
एक बहु-स्तंभ प्राथमिक कुंजी का हिस्सा नहीं है।
वास्तविक दुनिया से एक और स्पष्टीकरण है:
एक पुस्तक एक मालिक की होती है, और एक मालिक कई पुस्तकों का मालिक हो सकता है। लेकिन, पुस्तक मालिक के बिना भी मौजूद हो सकती है, और इसका स्वामित्व एक मालिक से दूसरे में बदल सकता है। पुस्तक और मालिक के बीच का संबंध एक गैर-पहचान वाला संबंध है।
हालाँकि, एक पुस्तक एक लेखक द्वारा लिखी गई है, और लेखक कई किताबें लिख सकता है। लेकिन, पुस्तक को एक लेखक द्वारा लिखा जाना चाहिए - यह एक लेखक के बिना मौजूद नहीं हो सकता है। इसलिए, पुस्तक और लेखक के बीच का संबंध एक पहचान वाला संबंध है।
PK(Book.id, Book.person_id)
।
the Identifying relationship
!!! हाँ एक किताब एक लेखक बिना लिखा नहीं किया जा सकता लेकिन, किताबें तालिका में लेखक क्षेत्र है पहचान नहीं किताब पंक्ति !!!
बिल का उत्तर सही है, लेकिन यह देखना चौंकाने वाला है कि अन्य सभी उत्तरों में से कोई भी सबसे महत्वपूर्ण पहलू नहीं है।
बार-बार यह कहा जाता है, कि बच्चे के संबंध में उसकी पहचान और पहचान माता-पिता के बिना नहीं हो सकती। (उदा । यूज़र 287724 )। यह सच है, लेकिन पूरी तरह से बात याद आती है। इसे हासिल करने के लिए विदेशी कुंजी का गैर-अशक्त होना पर्याप्त होगा । इसे प्राथमिक कुंजी का हिस्सा होने की आवश्यकता नहीं है।
तो यहाँ असली कारण है:
एक रिश्ते की पहचान का उद्देश्य यह है कि विदेशी कुंजी कभी भी बदल नहीं सकती है , क्योंकि यह प्राथमिक कुंजी का हिस्सा है ... इसलिए पहचान करना !!!
एक पहचान संबंध निर्दिष्ट करता है कि मूल वस्तु के बिना एक बच्चा वस्तु मौजूद नहीं हो सकती है
गैर-पहचान वाले संबंध वस्तुओं, 1: 1 या 1: n कार्डिनैलिटी के बीच एक नियमित जुड़ाव निर्दिष्ट करते हैं।
गैर-पहचान वाले रिश्तों को वैकल्पिक के रूप में निर्दिष्ट किया जा सकता है जहां एक माता-पिता की आवश्यकता नहीं है या अनिवार्य है जहां एक माता-पिता को माता-पिता के कार्डिनल सेट की आवश्यकता होती है ...
House
ने Wall
एस। आप घर से निकाल देते हैं और आपके पास दीवारें नहीं हैं। लेकिन एक दीवार केवल एक घर की है। इसलिए मजबूत-संबंध बनाने से काम नहीं चलेगा: PK(Wall.id, House.id)
आप मॉडल को उसी दीवार से दूसरे घर में डालने की अनुमति देंगे।
यहाँ एक अच्छा वर्णन है:
दो संस्थाओं के बीच संबंधों को "पहचान" या "गैर-पहचान" के रूप में वर्गीकृत किया जा सकता है। रिश्तों की पहचान तब होती है जब मूल इकाई की प्राथमिक कुंजी को बाल इकाई की प्राथमिक कुंजी में शामिल किया जाता है। दूसरी ओर, एक गैर-पहचान वाला संबंध तब मौजूद होता है जब मूल इकाई की प्राथमिक कुंजी को बाल इकाई में शामिल किया जाता है, लेकिन बाल इकाई की प्राथमिक कुंजी के हिस्से के रूप में नहीं। इसके अलावा, गैर-पहचान वाले संबंधों को या तो "अनिवार्य" या "गैर-अनिवार्य" के रूप में वर्गीकृत किया जा सकता है। जब बच्चे की तालिका में मूल्य शून्य नहीं हो सकता है तो एक अनिवार्य गैर-पहचान संबंध मौजूद होता है। दूसरी ओर, एक गैर-अनिवार्य गैर-पहचान संबंध मौजूद है जब बच्चे की तालिका में मूल्य शून्य हो सकता है।
http://www.sqlteam.com/article/database-design-and-modeling-fundamentals
यहाँ एक पहचान रिश्ते का एक सरल उदाहरण है:
Parent
------
ID (PK)
Name
Child
-----
ID (PK)
ParentID (PK, FK to Parent.ID) -- notice PK
Name
यहाँ एक समान गैर-पहचान संबंध है:
Parent
------
ID (PK)
Name
Child
-----
ID (PK)
ParentID (FK to Parent.ID) -- notice no PK
Name
user287724 का उत्तर पुस्तक और लेखक के रिश्ते का निम्नलिखित उदाहरण देता है:
एक पुस्तक हालांकि एक लेखक द्वारा लिखी गई है, और लेखक कई किताबें लिख सकता है। लेकिन पुस्तक को एक लेखक द्वारा लिखा जाना चाहिए, यह एक लेखक के बिना मौजूद नहीं हो सकता है। इसलिए पुस्तक और लेखक के बीच का संबंध एक पहचान वाला रिश्ता है।
यह एक बहुत ही भ्रामक उदाहरण है और निश्चित रूप से है एक वैध उदाहरण नहीं एक के लिए identifying relationship
।
हाँ, एक book
कम से कम एक बिना लिखा नहीं किया जा सकता author
है, लेकिन author
(यह विदेशी कुंजी है) की book
है पहचान नहींbook
में books
तालिका!
आप निकाल सकते हैं author
से (FK) book
पंक्ति और अभी भी कुछ अन्य क्षेत्र (द्वारा पुस्तक पंक्ति की पहचान कर सकते हैं ISBN
, ID
... आदि), लेकिन पुस्तक में नहीं लेखक !!
मुझे लगता है कि identifying relationship
(उत्पाद तालिका) और (विशिष्ट उत्पाद विवरण तालिका) के बीच संबंध का एक वैध उदाहरण होगा1:1
products table
+------+---------------+-------+--------+
|id(PK)|Name |type |amount |
+------+---------------+-------+--------+
|0 |hp-laser-510 |printer|1000 |
+------+---------------+-------+--------+
|1 |viewsonic-10 |screen |900 |
+------+---------------+-------+--------+
|2 |canon-laser-100|printer|200 |
+------+---------------+-------+--------+
printers_details table
+--------------+------------+---------+---------+------+
|Product_ID(FK)|manufacturer|cartridge|color |papers|
+--------------+------------+---------+---------+------+
|0 |hp |CE210 |BLACK |300 |
+--------------+------------+---------+---------+------+
|2 |canon |MKJ5 |COLOR |900 |
+--------------+------------+---------+---------+------+
* please note this is not real data
इस उदाहरण में Product_ID
में printers_details
मेज एक FK संदर्भ में माना जाता है products.id
मेज और भी एक पी में printers_details
मेज, इस वजह से एक की पहचान रिश्ता है Product_ID
(FK) प्रिंटर तालिका में पहचानना है बच्चे तालिका के अंदर पंक्ति है, हम नहीं निकाल सकते product_id
बच्चे मेज से क्योंकि हम क्योंकि हम खो यह प्राथमिक कुंजी है किसी भी अधिक पंक्ति पहचान नहीं कर सकते
यदि आप इसे 2 लाइनों में रखना चाहते हैं:
एक पहचान संबंध वह संबंध है जब चाइल्ड टेबल में FK को चाइल्ड टेबल में PK (या आइडेंटिफ़ायर) माना जाता है जबकि अभी भी पेरेंट टेबल को संदर्भित करता है
एक और उदाहरण तब हो सकता है जब आपके पास किसी देश के डेटाबेस के आयात और निर्यात में 3 टेबल (आयात - उत्पाद - देश) हों
import
तालिका बच्चे इन क्षेत्रों है कि ( product_id
) (FK, country_id
) (FK, आयात की मात्रा, मूल्य, इकाइयों आयातित, (वायु, समुद्र) परिवहन के रास्ते)
we may use the (
product_id , the
country_id`) प्रत्येक की पहचान के लिए आयातों की पंक्ति "यदि वे एक ही वर्ष में" यहां दोनों कॉलम बाल तालिका (आयात) में एक प्राथमिक कुंजी और साथ ही माता-पिता की तालिकाओं को संदर्भित कर सकते हैं।
कृपया मुझे खुशी मैं अंत में की अवधारणा को समझने हूँ identifying relationship
और non identifying relationship
, इसलिए कृपया मुझे मत बताओ मैं एक के लिए इन मतदान अप के सभी के साथ गलत हूँ पूरी तरह से अवैध उदाहरण
हां तार्किक रूप से एक पुस्तक एक लेखक के बिना नहीं लिखी जा सकती है लेकिन एक पुस्तक को लेखक के बिना पहचाना जा सकता है, वास्तव में इसे लेखक के साथ नहीं पहचाना जा सकता है!
आप लेखक को पुस्तक पंक्ति से 100% निकाल सकते हैं और फिर भी पुस्तक की पहचान कर सकते हैं! ।
गैर-पहचान संबंध
एक गैर-पहचान वाले रिश्ते का मतलब है कि एक बच्चा माता-पिता से संबंधित है लेकिन इसे अपने आप से पहचाना जा सकता है।
PERSON ACCOUNT
====== =======
pk(id) pk(id)
name fk(person_id)
balance
ACCOUNT और PERSON के बीच का संबंध गैर-पहचान है।
रिश्ते की पहचान
एक पहचान रिश्ते का मतलब है कि बच्चे को पहचान देने के लिए माता-पिता की जरूरत है। माता-पिता के कारण बच्चा पूरी तरह से मौजूद है।
इसका मतलब यह है कि विदेशी कुंजी एक प्राथमिक कुंजी भी है।
ITEM LANGUAGE ITEM_LANG
==== ======== =========
pk(id) pk(id) pk(fk(item_id))
name name pk(fk(lang_id))
name
ITEM_LANG और ITEM के बीच संबंध पहचान रहा है। और ITEM_LANG और LANGUAGE के बीच भी।
यदि आप समझते हैं कि माता-पिता के विलोपन के बाद बच्चे के आइटम को हटा दिया जाना चाहिए, तो यह एक पहचान का रिश्ता है।
यदि माता-पिता को हटाए जाने के बावजूद बच्चे का सामान रखा जाना चाहिए, तो यह एक गैर-पहचानने वाला अनुपात है।
एक उदाहरण के रूप में, मेरे पास प्रशिक्षुओं, प्रशिक्षणों, डिप्लोमा और प्रशिक्षण सत्रों के साथ एक प्रशिक्षण डेटाबेस है:
यदि संबंधित प्रशिक्षु, प्रशिक्षण या डिप्लोमा में से एक को हटा दिया जाता है, तो केवल प्रशिक्षण सत्र को हटा दिया जाना चाहिए।
पुनर्मिलन की पहचान का मतलब है कि बाल इकाई पूरी तरह से मूल इकाई की मौजूदगी पर निर्भर है। उदाहरण खाता तालिका व्यक्ति तालिका और personaccount। व्यक्ति खाता तालिका केवल खाते और व्यक्ति तालिका की मौजूदगी से पहचानी जाती है।
गैर-पहचान संबंध का मतलब है कि बच्चे की तालिका माता-पिता की तालिका की मौजूदगी से पहचानी नहीं जाती है उदाहरण के लिए खाता है और खाता के रूप में तालिका है। खाता तालिका की मौजूदगी के साथ खाता नहीं है।
जैसा कि नीचे दिए गए लिंक में अच्छी तरह से समझाया गया है, एक पहचान संबंध कुछ हद तक ईआर के वैचारिक मॉडल में अपने माता-पिता के कमजोर संबंध प्रकार की तरह है। डेटा मॉडलिंग के लिए यूएमएल शैली सीएडी ईआर प्रतीकों या अवधारणाओं का उपयोग नहीं करते हैं, और संबंधों के प्रकार हैं: पहचान करना, गैर-पहचान करना और गैर-विशिष्ट।
उन लोगों की पहचान करना माता-पिता / बच्चे के संबंध हैं जहां बच्चा एक कमजोर इकाई की तरह है (यहां तक कि पारंपरिक ईआर मॉडल जिसे इसकी पहचान संबंध कहा जाता है), जिसके पास अपनी विशेषताओं के द्वारा वास्तविक प्राथमिक कुंजी नहीं होती है और इसलिए इसे अपने आप से विशिष्ट नहीं पहचाना जा सकता है । बच्चे की मेज पर हर पहुंच, भौतिक मॉडल पर, माता-पिता की प्राथमिक कुंजी पर निर्भर (समावेशी शब्दार्थ) होगी, जो कि बच्चे की प्राथमिक कुंजी के भाग या कुल में बदल जाती है (एक विदेशी कुंजी भी), जिसके परिणामस्वरूप आम तौर पर एक समग्र कुंजी होती है। बच्चे की तरफ। बच्चे की अंतिम मौजूदा कुंजियाँ ही छद्म या आंशिक-कुंजियाँ हैं, माता-पिता के पीके के बिना, उस प्रकार के एंटिटी या एंटिटी सेट के किसी भी उदाहरण की पहचान करने के लिए पर्याप्त नहीं है।
गैर-पहचान संबंध पूर्ण स्वतंत्र इकाई सेटों के सामान्य संबंध (आंशिक या कुल) हैं, जिनके उदाहरण विशिष्ट पहचान के लिए एक-दूसरे की प्राथमिक कुंजी पर निर्भर नहीं करते हैं, हालांकि उन्हें आंशिक या कुल संबंधों के लिए विदेशी कुंजी की आवश्यकता हो सकती है, लेकिन नहीं बच्चे की प्राथमिक कुंजी के रूप में। बच्चे की अपनी प्राथमिक कुंजी है। जनक इदम। दोनों स्वतंत्र रूप से। रिश्ते की कार्डिनैलिटी के आधार पर, एक का पीके दूसरे (एन साइड) के लिए एफके के रूप में जाता है, और यदि आंशिक है, तो शून्य हो सकता है, यदि कुल, शून्य नहीं होना चाहिए। लेकिन, इस तरह के रिश्ते में, एफके कभी भी बच्चे का पीके नहीं होगा, क्योंकि जब कोई पहचानने वाला मामला होता है।
http://docwiki.embarcadero.com/ERStudioDA/XE7/en/Creating_and_Editing_Relationships
क्या माता-पिता से बच्चे में प्रवासित गुण 1 बच्चे की पहचान करने में मदद करते हैं?
ध्यान दें कि पहचान-निर्भरता का अर्थ अस्तित्व-निर्भरता है, लेकिन आसपास का दूसरा तरीका नहीं। प्रत्येक गैर-पूर्ण FK का अर्थ है कि कोई बच्चा माता-पिता के बिना मौजूद नहीं हो सकता है, लेकिन वह अकेले रिश्ते की पहचान नहीं करता है।
इस (और कुछ उदाहरणों) पर अधिक जानकारी के लिए, इरविन मैथड्स गाइड के "आइडेंटिफाईंग रिलेशनशिप" सेक्शन पर एक नज़र डालें ।
PS मुझे एहसास है कि मैं पार्टी के लिए देर से (बहुत) हूँ, लेकिन मुझे लगता है कि अन्य उत्तर या तो पूरी तरह से सटीक नहीं हैं (पहचान-निर्भरता के बजाय अस्तित्व-निर्भरता के मामले में इसे परिभाषित करना), या कुछ हद तक सही है। उम्मीद है कि यह उत्तर अधिक स्पष्टता प्रदान करता है ...
1 बच्चे का FK बच्चे के PRIMARY KEY या (गैर-पूर्ण) UNIQUE बाधा का एक हिस्सा है।
एक अच्छा उदाहरण ऑर्डर प्रोसेसिंग से आता है। ग्राहक के ऑर्डर में आमतौर पर एक ऑर्डर नंबर होता है जो ऑर्डर की पहचान करता है, कुछ डेटा जो ऑर्डर के अनुसार एक बार होता है जैसे कि ऑर्डर की तारीख और कस्टमर आईडी और लाइन आइटम की एक श्रृंखला। प्रत्येक लाइन आइटम में एक आइटम नंबर होता है जो एक ऑर्डर के भीतर एक लाइन आइटम की पहचान करता है, एक उत्पाद ऑर्डर किया जाता है, उस उत्पाद की मात्रा, उत्पाद की कीमत और लाइन आइटम के लिए राशि, जिसे मात्रा द्वारा गुणा करके गणना की जा सकती है कीमत।
वह संख्या जो किसी पंक्ति वस्तु को पहचानती है, उसे केवल एक आदेश के संदर्भ में पहचानती है। हर क्रम में पहली पंक्ति का आइटम नंबर "1" है। किसी पंक्ति वस्तु की पूर्ण पहचान उस क्रम संख्या के साथ मिलकर आइटम नंबर होती है, जिसमें वह एक भाग होता है।
आदेश और लाइन आइटम के बीच माता-पिता का बच्चा संबंध इसलिए पहचानने वाला रिश्ता है। ईआर मॉडलिंग में एक निकट से संबंधित अवधारणा "सबेंटिटी" नाम से जाती है, जहां लाइन आइटम ऑर्डर की एक उप-समानता है। आमतौर पर, एक उप-इकाई के पास एक अनिवार्य बाल-अभिभावक की पहचान का संबंध होता है, जिस इकाई के अधीन होता है।
शास्त्रीय डेटाबेस डिज़ाइन में, लाइन इटिम्स टेबल की प्राथमिक कुंजी होगी (ऑर्डरनंबर, आइटमनंबर)। आज के डिजाइनरों में से कुछ एक आइटम को एक अलग आइटमआईडी देंगे, जो प्राथमिक कुंजी के रूप में कार्य करता है, और डीबीएमएस द्वारा इसे इंगित किया जाता है। मैं इस मामले में शास्त्रीय डिजाइन की सलाह देता हूं।
मान लें कि हमारे पास वे टेबल हैं:
user
--------
id
name
comments
------------
comment_id
user_id
text
उन दो तालिकाओं के बीच संबंध संबंधों की पहचान करेगा। क्योंकि, टिप्पणियां केवल उसके मालिक की हो सकती हैं, अन्य उपयोगकर्ताओं की नहीं। उदाहरण के लिए। प्रत्येक उपयोगकर्ता की अपनी टिप्पणी होती है, और जब उपयोगकर्ता हटा दिया जाता है, तो उपयोगकर्ता की टिप्पणियों को भी हटा दिया जाना चाहिए।
एक पहचान संबंध दो मजबूत संस्थाओं के बीच है। एक गैर-पहचान वाला संबंध हमेशा मजबूत इकाई और कमजोर इकाई के बीच का संबंध नहीं हो सकता है। ऐसी स्थिति हो सकती है जहां एक बच्चे के पास खुद एक प्राथमिक कुंजी हो लेकिन उसकी इकाई का अस्तित्व उसकी मूल इकाई पर निर्भर हो सकता है।
उदाहरण के लिए: एक विक्रेता और एक पुस्तक के बीच एक संबंध जहां एक पुस्तक एक विक्रेता द्वारा बेची जा रही है, वहां मौजूद हो सकता है जहां विक्रेता की अपनी प्राथमिक कुंजी हो सकती है लेकिन इसकी इकाई केवल तब बनाई जाती है जब कोई पुस्तक बेची जा रही हो
बिल कार्विन पर आधारित संदर्भ