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

टेबल डिजाइन करते समय एक-से-एक, एक-से-कई और कई-से-अनेक संबंधों को कैसे कार्यान्वित करें?

एक-से-एक: संदर्भित तालिका के लिए एक विदेशी कुंजी का प्रयोग करें:

student: student_id, first_name, last_name, address_id
address: address_id, address, city, zipcode, student_id # you can have a
                                                        # "link back" if you need

आपको विदेशी कुंजी कॉलम (addess.student_id पर एक अद्वितीय बाधा भी डालनी होगी। ) चाइल्ड टेबल में कई पंक्तियों को रोकने के लिए (address ) संदर्भित तालिका में एक ही पंक्ति से संबंधित (student )।

एक से अनेक :"एक" पक्ष से वापस लिंक करते हुए संबंध के कई पक्षों पर एक विदेशी कुंजी का उपयोग करें:

teachers: teacher_id, first_name, last_name # the "one" side
classes:  class_id, class_name, teacher_id  # the "many" side

अनेक-से-अनेक :जंक्शन तालिका का उपयोग करें (उदाहरण):

student: student_id, first_name, last_name
classes: class_id, name, teacher_id
student_classes: class_id, student_id     # the junction table

उदाहरण प्रश्न:

 -- Getting all students for a class:

    SELECT s.student_id, last_name
      FROM student_classes sc 
INNER JOIN students s ON s.student_id = sc.student_id
     WHERE sc.class_id = X

 -- Getting all classes for a student: 

    SELECT c.class_id, name
      FROM student_classes sc 
INNER JOIN classes c ON c.class_id = sc.class_id
     WHERE sc.student_id = Y



  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. Oracle डायनेमिक DESC और ASC क्रम में

  3. बिटैंड () Oracle में फ़ंक्शन

  4. Oracle 'विभाजन द्वारा' और 'Row_Number' कीवर्ड

  5. 'IN' क्लॉज से ऑर्डर रखें