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

क्या मेरी तालिका को अधिक सामान्यीकरण की आवश्यकता है?

सामान्यीकरण के लिए कार्यात्मक निर्भरता (एफडी) को जानना और निर्भरता (एफडी) में शामिल होना आवश्यक है। आपने उन्हें नहीं दिया।

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

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

अनुमान
मुझे नहीं पता कि is_calculated . क्या है के लिए है।
शायद एक दी गई date और meal जोड़ी में ठीक एक content है ?

TL;DR यह देखने के लिए कि क्या यह कार्यात्मक रूप से एक दूसरे कॉलम को निर्धारित करता है, आपको वास्तव में कॉलम के प्रत्येक संभावित सेट की जांच करने की आवश्यकता है। यानी क्या प्रत्येक डेटाबेस के लिए कॉलम के सेट के लिए मानों का एक सबरो कॉलम के लिए केवल एक मान के साथ दिखाई देता है। हम केवल आपकी भविष्यवाणियों और आपके आवेदन की स्पष्ट समझ के बिना अनुमान लगा सकते हैं। आप निम्न द्वारा कार्य को कम कर सकते हैं:यदि स्तंभों का एक समूह अद्वितीय है तो उसके सुपरसेट अन्य सभी स्तंभों को निर्धारित करते हैं। यदि स्तंभों का एक समूह न्यूनतम रूप से अद्वितीय है (एक CK है) तो इसका कोई भी छोटा उपसमुच्चय अन्य सभी स्तंभों को निर्धारित नहीं करता है। आप पुटीय FDs के प्रति-उदाहरणों की तलाश कर सकते हैं, जहां दो पंक्तियों में एक पुटकीय निर्धारक के लिए मानों का एक ही सबरो हो सकता है, लेकिन एक पुटेटिव निर्धारित विशेषता के लिए अलग-अलग मान हो सकते हैं। आर्मस्ट्रांग के अभिगृहीत दिए गए द्वारा निहित सभी FD उत्पन्न करते हैं।

JDs 4NF और 5NF के सामान्यीकरण में JDs को समाप्त करने के लिए तालिका को कई तालिकाओं में विभाजित करना शामिल है जो CKs द्वारा निहित नहीं हैं। एक तालिका के विधेय को AND के रूप में ठीक उसी तरह व्यक्त किया जा सकता है जब एक JD विधेय के कॉलम सेट के अनुरूप होता है। एक संबंध 5NF में होता है जब प्रत्येक JD में प्रत्येक संयोजन कम से कम CK पर किसी अन्य को ओवरलैप करता है। (फ़ागिन की सदस्यता एल्गोरिथम।)

PS यदि आप बाधाओं के बारे में परवाह करते हैं, तो जब आप एक टेबल से दो टेबल पर गए तो क्या आपने एक को खो दिया?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ज़ेंड फ्रेमवर्क के तहत MySQL को कैसे कॉन्फ़िगर करें?

  2. क्या कई विदेशी कुंजी समझ में आती हैं?

  3. कोई बात नहीं, मैं हाइबरनेट में MySQL INSERT स्टेटमेंट को बैच नहीं कर सकता

  4. Context.User Asp.net MVC ऐप में विंडोज़ ऑथ के माध्यम से Application_AuthenticateRequest में NULL है

  5. MySQL सभी व्हाइटस्पेस को इसके साथ बदलें -