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

यूएमएल से ईआर आरेख के लिए सार वर्ग। संभव ? कैसे?

डेटाबेस मॉडल में सामान्यीकरण का अनुवाद करने के लिए मूल रूप से तीन विकल्प हैं

<एच3>1. एक टेबल प्रति कंक्रीट क्लास

टेबल बनाएं Admin , Teacher और Student . इनमें से प्रत्येक तालिका में User . की सभी विशेषताओं और संबंधों के लिए कॉलम हैं

  • प्रो
    • एक ठोस उपवर्ग के सभी क्षेत्र एक ही तालिका में हैं, इसलिए सभी छात्र डेटा प्राप्त करने के लिए किसी भी शामिल होने की आवश्यकता नहीं है
    • आसान डेटा सत्यापन बाधाएं (जैसे Student के लिए अनिवार्य फ़ील्ड) )
  • कोन
    • User . के सभी क्षेत्र प्रत्येक उपवर्ग तालिका में डुप्लीकेट हैं
    • विदेशी कुंजी User . के लिए तीन एफके क्षेत्रों में विभाजित किया जाना है। एक Admin . के लिए , एक Teacher . के लिए और एक Student . के लिए ।
<एच3>2. संपूर्ण सामान्यीकरण सेट के लिए टेबल पर

इस मामले में आपके पास केवल एक टेबल कॉल है User जिसमें User . के सभी फ़ील्ड शामिल हैं + User . के सभी उप-वर्गों के सभी फ़ील्ड

  • प्रो
    • सभी फ़ील्ड एक ही तालिका में हैं, इसलिए सभी User get प्राप्त करने के लिए किसी जॉइन की आवश्यकता नहीं है डेटा
    • FK का User में कोई विभाजन नहीं है
  • कोन
    • ऐसे कई फ़ील्ड हैं जिनका कभी उपयोग नहीं किया जाता है। Student . के लिए विशिष्ट सभी फ़ील्ड और Teacher Admins . के लिए कभी नहीं भरे जाते हैं और इसके विपरीत
    • डेटा सत्यापन जैसे कि एक ठोस वर्ग के लिए अनिवार्य फ़ील्ड जैसे Student बल्कि जटिल हो जाते हैं क्योंकि यह अब आसान नहीं रह गया है Not Null बाधा।
<एच3>3. एक टेबल प्रति कंक्रीट क्लास, और एक सुपरक्लास के लिए

इस मामले में आप प्रत्येक ठोस उप-वर्ग के लिए तालिकाएँ बनाते हैं और आप वर्ग User के लिए एक तालिका बनाते हैं . प्रत्येक ठोस उप-वर्ग तालिका में User . के लिए एक अनिवार्य FK है

  • प्रो
    • सबसे सामान्यीकृत स्कीमा:उपयोगकर्ता की विशेषताओं के लिए कोई दोहराई गई फ़ील्ड नहीं, और कोई अप्रयुक्त फ़ील्ड नहीं।
    • FK का User में कोई विभाजन नहीं है
    • आसान डेटा सत्यापन बाधाएं (जैसे Student के लिए अनिवार्य फ़ील्ड) )
  • कोन
    • यदि आप किसी Student का सारा डेटा चाहते हैं, तो आपको दो तालिकाओं को क्वेरी करनी होगी
    • जटिल सत्यापन नियम यह सुनिश्चित करने के लिए कि प्रत्येक User रिकॉर्ड में ठीक एक Admin है , Teacher या Student रिकॉर्ड।

आप इनमें से कौन सा विकल्प चुनते हैं, यह कई चीजों पर निर्भर करता है जैसे कि उप-वर्गों की संख्या, उपवर्ग या सुपरक्लास में विशेषताओं की संख्या, सुपरक्लास के लिए एफके की संख्या, और शायद कुछ अन्य चीजें जो मैंने नहीं कीं के बारे में सोचो।




  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 डेटाबेस को AJAX और PHP के साथ innerhtml में कैसे अपडेट करूं?

  4. मोनो उबंटू पर MySQL के लिए नेट फ्रेमवर्क डेटा प्रदाता का अस्तित्व कैसे खोजें?

  5. MySQL, एक AUTO_INCREMENT को दूसरी तालिका में पास कर रहा है