MySQL में, विदेशी कुंजी बाधाओं को प्रतीकात्मक नाम देने की आवश्यकता नहीं है। यदि कोई नाम नहीं दिया गया है, तो InnoDB स्वचालित रूप से एक अद्वितीय नाम बनाता है।
किसी भी मामले में, यह वह परंपरा है जिसका मैं उपयोग करता हूं:
fk_[referencing table name]_[referenced table name]_[referencing field name]
उदाहरण:
CREATE TABLE users(
user_id int,
name varchar(100)
);
CREATE TABLE messages(
message_id int,
user_id int
);
ALTER TABLE messages ADD CONSTRAINT fk_messages_users_user_id
FOREIGN KEY (user_id) REFERENCES users(user_id);
मैं संदर्भ और संदर्भित तालिकाओं में समान फ़ील्ड नामों के साथ रहने की कोशिश करता हूं, जैसा कि user_id
में है उपरोक्त उदाहरण में। जब यह व्यावहारिक नहीं है, तो मैं संदर्भित फ़ील्ड नाम को विदेशी कुंजी नाम में भी जोड़ देता हूं।
यह नामकरण परंपरा मुझे केवल तालिका परिभाषाओं को देखकर प्रतीकात्मक नाम का "अनुमान" लगाने की अनुमति देती है, और इसके अलावा यह अद्वितीय नामों की भी गारंटी देता है।