MySQL வெளிநாட்டு விசை கட்டுப்பாடுகளை எவ்வாறு பயன்படுத்துவது

How Use Mysql Foreign Key Constraints



MySQL தரவுத்தளத்தில் இரண்டு அட்டவணைகளுக்கு இடையில் ஒரு உறவை உருவாக்க வெளிநாட்டு முக்கிய கட்டுப்பாடு பயன்படுத்தப்படுகிறது. தொடர்புடைய அட்டவணையில் பல்வேறு வகையான கட்டுப்பாடுகளை அமைப்பது MySQL இன் மிக முக்கியமான அம்சமாகும். எந்த அட்டவணைக்கும் வெளிநாட்டு விசை தடையை வரையறுக்க நீங்கள் மற்றொரு அட்டவணையின் முதன்மை விசையைப் பயன்படுத்த வேண்டும். அட்டவணையில் குறிப்பிட்ட வரிசையை அடையாளம் காண முதன்மை விசை ஒரு அட்டவணையின் தனித்துவமான விசையாகும், மேலும் இந்த முதன்மை விசையை மற்றொரு அட்டவணையில் பயன்படுத்தும் போது ஒன்றுக்கு ஒன்று அல்லது ஒன்றுக்கு ஒன்று அல்லது பல அல்லது பல உறவுகளை உருவாக்கலாம் வெளிநாட்டு விசை என்று அழைக்கப்படுகிறது. MySQL அட்டவணையில் வெளிநாட்டு விசைகளின் அம்சங்கள் மற்றும் இந்த விசைகளை எவ்வாறு பயன்படுத்தலாம் என்பது இந்த கட்டுரையில் காட்டப்பட்டுள்ளது.

வெளிநாட்டு முக்கிய கட்டுப்பாடுகளின் அம்சங்கள்:

வெளிநாட்டு முக்கிய கட்டுப்பாடுகளின் சில முக்கிய அம்சங்கள் கீழே விளக்கப்பட்டுள்ளன.







  • குழந்தை அட்டவணையில் பயன்படுத்தப்படும் வெளிநாட்டு விசையின் தரவு வகை வெளிநாட்டு விசையை குறிப்பிட பெற்றோர் அட்டவணையில் பயன்படுத்தப்படும் முதன்மை விசையின் தரவு வகையுடன் ஒரே மாதிரியாக இருக்க வேண்டும்.
  • எந்த குறியீட்டு நெடுவரிசை அல்லது பல நெடுவரிசைகள் இன்னோடிபி அட்டவணைக்கு மட்டுமே வெளிநாட்டு விசையாக குறிப்பிடப்படலாம்.
  • வெளிநாட்டு விசையை உருவாக்க குறிப்பு சலுகைகள் அல்லது தேர்ந்தெடுக்கப்பட்ட, இன்சர்ட், புதுப்பிப்பு மற்றும் நீக்கு அறிக்கைகளின் குறைந்தபட்சம் ஒரு சலுகை தேவை.
  • ஒரு வெளிநாட்டு விசையை இரண்டு வழிகளில் உருவாக்கலாம். ஒன்று கிரியேட் ஸ்டேட்மெண்ட்டையும் மற்றொன்று ஆல்டர் ஸ்டேட்மெண்ட்டையும் பயன்படுத்தி.

முன்நிபந்தனை:

ஒரு வெளிநாட்டு விசை தடையை உருவாக்கும் முன், நீங்கள் முதன்மை விசையுடன் ஒரு தரவுத்தளம் மற்றும் பெற்றோர் அட்டவணையை உருவாக்க வேண்டும். தரவுத்தள பெயர் 'என்று வைத்துக்கொள்வோம் நூலகம் 'மற்றும்' பெயரிடப்பட்ட இரண்டு பெற்றோர் அட்டவணைகள் உள்ளன புத்தகங்கள் 'மற்றும்' கடன் வாங்குபவர் ' பயன்படுத்தி MySQL சேவையகத்துடன் இணைப்பை ஏற்படுத்தவும் mysql வாடிக்கையாளர் மற்றும் தரவுத்தளத்தையும் அட்டவணைகளையும் உருவாக்க பின்வரும் SQL அறிக்கைகளை இயக்கவும்.



உருவாக்கு தரவுத்தளம் நூலகம்;
பயன்படுத்தவும் நூலகம்;

உருவாக்கு மேசை புத்தகங்கள்(
ஐடி INT இல்லை ஏதுமில்லை AUTO_INCREMENT ,
தலைப்பு varchar (ஐம்பது) இல்லை ஏதுமில்லை ,
நூலாசிரியர் varchar (ஐம்பது) இல்லை ஏதுமில்லை ,
பதிப்பகத்தார் varchar (ஐம்பது) இல்லை ஏதுமில்லை ,
முதன்மை கீ (ஐடி)
) என்ஜின் = INNODB ;

உருவாக்கு மேசை கடன் வாங்குபவர்கள்(
ஐடி வர்சார் (ஐம்பது) இல்லை ஏதுமில்லை ,
பெயர் varchar (ஐம்பது) இல்லை ஏதுமில்லை ,
முகவரி varchar (ஐம்பது) இல்லை ஏதுமில்லை ,
மின்னஞ்சல் varchar (ஐம்பது) இல்லை ஏதுமில்லை ,
முதன்மை கீ (ஐடி)
) என்ஜின் = INNODB ;



CREATE அறிக்கையைப் பயன்படுத்தி வெளிநாட்டு விசை தடையை வரையறுக்கவும்

என்ற அட்டவணையை உருவாக்கவும் book_borrow_info பின்வரும் அறிக்கையை செயல்படுத்துவதன் மூலம் வெளிநாட்டு முக்கிய கட்டுப்பாடுகளுடன். இங்கே, தி புத்தகம்_ஐடி புலம் ஒரு வெளிநாட்டு சாவி இந்த அட்டவணை மற்றும் இந்த புலத்தின் ஒவ்வொரு மதிப்பும் இருக்க வேண்டும் ஐடி துறையில் புத்தகங்கள் மேசை. புத்தகங்கள் பெற்றோர் அட்டவணை மற்றும் book_borrow_info குழந்தை அட்டவணை ஆகும். இங்கு வெளிநாட்டு விசையுடன் இரண்டு கட்டுப்பாடுகள் அமைக்கப்பட்டுள்ளன. இவை கேஸ்கேடை நீக்கு மற்றும் புதுப்பிப்பு கேஸ்கேட் . அதாவது எந்த முதன்மை விசையும் பெற்றோர் அட்டவணையில் இருந்து அகற்றப்பட்டால் அல்லது புதுப்பிக்கப்படும் என்றால் வெளிநாட்டு விசையுடன் தொடர்புடைய குழந்தை அட்டவணை தொடர்பான பதிவுகள் அகற்றப்படும் அல்லது வெளிநாட்டு விசை புதுப்பிக்கப்படும்.





உருவாக்கு மேசை book_borrow_info(
கடன்_ஐடி வர்சார் (ஐம்பது),
புத்தகம்_ஐடி INT ,
கடன்_ தேதி தேதி இல்லை ஏதுமில்லை ,
திரும்ப_ தேதி தேதி இல்லை ஏதுமில்லை ,
நிலை வர்சார் (பதினைந்து) இல்லை ஏதுமில்லை ,
INDEX par_ind(புத்தகம்_ஐடி),
முதன்மை கீ (கடன்_ஐடி,கடன்_ தேதி),
வெளிநாட்டு கீ (புத்தகம்_ஐடி) குறிப்புகள் புத்தகங்கள்(ஐடி)
ஆன் அழி கேஸ்கேட்
ஆன் புதுப்பிக்கவும் கேஸ்கேட்
) என்ஜின் = INNODB ;

இப்போது, ​​இரண்டு அட்டவணைகளிலும் சில பதிவுகளைச் செருக பின்வரும் SQL அறிக்கைகளை இயக்கவும். முதல் INSERT அறிக்கை நான்கு பதிவுகளைச் சேர்க்கும் புத்தகங்கள் மேசை. நான்கு மதிப்புகள் ஐடி துறையில் புத்தகங்கள் அட்டவணை தானாக அதிகரிக்கும் பண்புக்கு 1, 2, 3 மற்றும் 4 ஆக இருக்கும். இரண்டாவது INSERT அறிக்கை நான்கு பதிவுகளைச் சேர்க்கும் book_borrow_info அடிப்படையில் ஐடி மதிப்பு புத்தகங்கள் மேசை.



செருகவும் INTO புத்தகங்கள் மதிப்புகள்
( ஏதுமில்லை , 'ஒரு மோக்கிங்பேர்டை கொல்ல', 'ஹார்பர் லீ', 'கிராண்ட் சென்ட்ரல் பப்ளிஷிங்'),
( ஏதுமில்லை , 'நூறு ஆண்டுகள் தனிமை', 'கார்சியா மார்க்வெஸ்', 'லுட்ஃபி ஓஸ்கோக்'),
( ஏதுமில்லை , 'இந்தியாவுக்கு ஒரு பாதை', 'ஃபோர்ஸ்டர், ஈ.எம்.', 'பிபிசி ஹல்டன் பட நூலகம்'),
( ஏதுமில்லை , 'கண்ணுக்கு தெரியாத மனிதன்', 'ரால்ப் எலிசன்', 'என்சைக்ளோபீடியா பிரிட்டானிகா, இன்க்.');

செருகவும் INTO book_borrow_info மதிப்புகள்
('123490', 1, '2020-02-15', '2020-02-25', 'திரும்பியது'),
('157643', 2, '2020-03-31', '2020-03-10', 'நிலுவையில்'),
('174562', 4, '2020-04-04', '2020-04-24', 'கடன் வாங்கிய'),
('146788', 3, '2020-04-10', '2020-01-20', 'கடன் வாங்கிய');

பெற்றோர் அட்டவணையின் முதன்மை முக்கிய புலத்தில் இல்லாத குழந்தை அட்டவணையின் வெளிநாட்டு விசை புலத்தில் ஒரு மதிப்பை நீங்கள் செருக முயற்சித்தால், MySQL பிழையை உருவாக்கும். பின்வரும் SQL அறிக்கை ஒரு பிழையை உருவாக்கும், ஏனெனில் பெற்றோர் அட்டவணை, புத்தகங்கள் எந்த ஐடி மதிப்பையும் கொண்டிருக்கவில்லை 10 .

செருகவும் INTO book_borrow_info மதிப்புகள்
('195684', 10, '2020-04-15', '2020-04-30', 'திரும்பியது');

பின்வரும் நீக்கு அறிக்கையை செயல்படுத்திய பிறகு, நான்காவது பதிவு எப்போது அகற்றப்படும் புத்தகங்கள் அட்டவணை பின்னர் தொடர்புடைய பதிவுகளை இருந்து book_borrow_info அட்டவணை வெளிநாட்டு விசை கட்டுப்பாட்டுக்காக தானாகவே அகற்றப்படும்.

அழி இருந்து புத்தகங்கள் எங்கே ஐடி= 4;
தேர்ந்தெடுக்கவும் * இருந்து புத்தகங்கள்;
தேர்ந்தெடுக்கவும் * இருந்து book_borrow_info;

ALTER அறிக்கையைப் பயன்படுத்தி வெளிநாட்டு விசை தடையை வரையறுக்கவும்

முதலில், சில பதிவுகளைச் செருகவும் கடன் வாங்குபவர்கள் அட்டவணை மற்றும் இந்த அட்டவணை அடுத்த அட்டவணையில் பெற்றோர் அட்டவணையாக வரையறுக்கப்படும் வயது அறிக்கை

செருகவும் INTO கடன் வாங்குபவர்கள் மதிப்புகள்
('123490', 'பேட்ரிக் வூட்', '34 மேற்கு தெரு லங்காஸ்டர் LA14 9ZH ', '[மின்னஞ்சல் பாதுகாக்கப்பட்டது]'),
('157643', 'எஸ்ரா மார்ட்டின்', '10 தோப்பு பர்மிங்காம் பி 98 1 இயூ ', '[மின்னஞ்சல் பாதுகாக்கப்பட்டது]'),
('174562', 'ஜான் இன்னெஸ் ஆர்ச்சி', '55 மெயின் ரோடு லிவர்பூல் எல் 2 3 ஓடி ', '[மின்னஞ்சல் பாதுகாக்கப்பட்டது]'),
('146788', 'ஃபிரடெரிக் ஹான்சன்', '85 ஹைஃபீல்ட் சாலை ஷ்ரெஸ்ஸ்பரி SY46 3ME ', '[மின்னஞ்சல் பாதுகாக்கப்பட்டது]');

பின்வருவதை இயக்கவும் வயது மற்றொரு வெளிநாட்டு முக்கிய தடையை அமைக்க அறிக்கை book_borrow_info உறவை உருவாக்குவதற்கான அட்டவணை கடன் வாங்குபவர்கள் மேசை. இங்கே, கடன்_ஐடி ஒரு வெளிநாட்டு விசையாக வரையறுக்கப்படுகிறது book_borrow_info மேசை.

மேலும் அட்டவணை புத்தகம்_பிரோ_இன்ஃபோ கான்ஸ்ட்ராண்ட் fk_borrower ஐ சேர்க்கவும்
வெளிநாட்டு கீ(கடன்_ஐடி)கடன் வாங்குபவர்களைக் குறிக்கிறது(ஐடி)புதுப்பிப்பு மீட்பு நீக்கம் கேஸ்கேட் மீது;

இப்போது, ​​ஒரு பதிவைச் செருகவும் book_borrow_info செல்லுபடியாகும் கடன்_ஐடி உள்ள மதிப்பு ஐடி துறையில் கடன் வாங்குபவர்கள் மேசை. 157643 கடன் வாங்குபவர்களின் அட்டவணையில் மதிப்பு உள்ளது மற்றும் பின்வரும் INSERT அறிக்கை வெற்றிகரமாக செயல்படுத்தப்படும்.

செருகவும் INTO book_borrow_info மதிப்புகள்
('157643', 1, '2020-03-10', '2020-03-20', 'திரும்பியது');

ஐடி மதிப்பு இருப்பதால் பின்வரும் இன்செர்ட் அறிக்கை பிழை செய்தியை உருவாக்கும் 195680 கடன் வாங்குபவர்களின் அட்டவணையில் இல்லை.

செருகவும் INTO book_borrow_info மதிப்புகள்
('195680', 1, '2020-04-15', '2020-04-30', 'திரும்பியது');

முடிவுரை:

வெளிநாட்டு முக்கிய தடைகளை சரியாக வரையறுப்பது ஒரு தொடர்புடைய தரவுத்தளத்தை உருவாக்குவதற்கும் அட்டவணையில் தரவை சரியான முறையில் நிர்வகிப்பதற்கும் மிக முக்கியமான பணியாகும். தரவுத்தள வடிவமைப்பாளர்களுக்கு வெளிநாட்டு முக்கிய தடைகளின் பயன்களை அறிவது மிகவும் அவசியம். இந்த கட்டுரை புதிய தரவுத்தள வடிவமைப்பாளர்களுக்கு வெளிநாட்டு முக்கிய தடைகளின் கருத்தை புரிந்துகொள்ளவும், அவற்றை தங்கள் பணிகளில் சரியாகப் பயன்படுத்தவும் உதவும் என்று நம்புகிறேன்.