एक-से-एक: संदर्भित तालिका के लिए एक विदेशी कुंजी का प्रयोग करें:
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