जुड़ता है कि कैसे संबंधपरक डीबीएमएस काम करते हैं। सामान्यीकरण के बारे में जानें और उसका उपयोग करें।
यदि यह हर सेवा के लिए सही है तो आपका डेटाबेस एक बाधा के अधीन है। यह है कि (select service from Service_has_transaction join Transaction_has_wallet)
(select service from Service_has_transaction join Transaction_has_wallet join Wallet_has_bonus)
।
अधिकांश SQL DBMS आपको उस बाधा को घोषणात्मक रूप से व्यक्त करने की अनुमति नहीं देते हैं और यह नहीं जानते कि इसे लागू करने के लिए कैसे अनुकूलित किया जाए। हालाँकि एक SQL मुहावरा है जिसका उपयोग हम इसे घोषित रूप से व्यक्त करने और लागू करने के लिए कर सकते हैं। (अपनी तालिका परिभाषाओं का अनुमान लगाते हुए:) पहले एक bonus
जोड़ें कॉलम से Transaction_has_wallet
और Transaction_has_wallet (wallet, bonus)
. से एक विदेशी कुंजी Wallet_has_bonus
के लिए . फिर Service_has_transaction
. में वॉलेट और बोनस कॉलम जोड़ें और Service_has_transaction (transaction, wallet, bonus)
. से एक विदेशी कुंजी करने के लिए Transaction
. यह अनावश्यक कॉलम जोड़ता है लेकिन फिर भी डेटाबेस को वैध राज्यों तक सीमित करता है क्योंकि विदेशी कुंजी बाधाएं अनावश्यक मानों को गलत होने से रोकती हैं। (उम्मीद है कि यह ट्रिगर्स के माध्यम से मनमानी बाधाओं को व्यक्त करने के बारे में सीखने के लिए एक प्रेरक उदाहरण है।)