मैं phpmyadmin का उपयोग नहीं करता, लेकिन मैं इसके साथ शुरू करूंगा
- विषयों के नाम पर एक अद्वितीय बाधा,
- जोड़ी पर एक अद्वितीय बाधा {teachers.name, Teachers.subject_id},
- एक अद्वितीय बाधा {events.venue,events.subject_id,events.teacher_id},
- जोड़ी पर एक अद्वितीय बाधा {teachers.id, Teachers.subject_id}.
पहले तीन को पहचान के साथ करना है; आखिरी वाला आपको एक विदेशी कुंजी बाधा के साथ {teachers.id, Teachers.subject_id} को लक्षित करने देता है।
सामान्य स्थिति में, लोगों के नाम अद्वितीय नहीं होते हैं। तो आप कर सकते थे एक ही नाम के दो शिक्षक हैं जो एक ही विषय पढ़ाते हैं। आप उस तरह की समस्या से कैसे संपर्क कर सकते हैं यह एप्लिकेशन पर निर्भर है।
फिर विदेशी कुंजियाँ
- शिक्षकों.subject_id से विषयों.id तक, और
- {events.teacher_id,events.subject_id} से {teachers.id, Teachers.subject_id}
यह कम से कम आपको एक त्रुटि देगा यदि आप घटनाओं में गलत विषय वाले शिक्षक को सम्मिलित करने का प्रयास करते हैं।
आपको INNODB इंजन का उपयोग करना होगा विदेशी कुंजी बाधाओं को लागू करने के लिए। अन्य इंजन उन्हें पार्स कर देंगे, लेकिन उन्हें अनदेखा कर देंगे।
<ब्लॉकक्वॉट>विदेशी कुंजी और संदर्भ खंड InnoDBstorage इंजन द्वारा समर्थित हैं, जो लागू करता है [CONSTRAINT [प्रतीक]] विदेशी कुंजी [index_name] (...) संदर्भ ... (...) जोड़ें। खंड 14.6.6, “InnoDBand विदेशी कुंजी प्रतिबंध” देखें। अन्य स्टोरेज इंजनों के लिए, क्लॉज को पार्स किया जाता है लेकिन अनदेखा किया जाता है।