ஒரு தரவுத்தளத்தில் பல இருந்து பல உறவுகள்

அட்டவணையின் A இல் உள்ள ஒவ்வொன்றும் அட்டவணை B இல் உள்ள பல இணைக்கப்பட்ட பதிவுகள் இருக்கலாம், ஆனால் அட்டவணை B இல் உள்ள ஒவ்வொன்றும் அட்டவணையில் A. ஒரே ஒரு ஒத்த பதிவு மட்டுமே இருக்கும் போது ஒரு தரவுத்தளத்தில் ஒரு பல உறவு ஏற்படுகிறது. ஒரு தரவுத்தளம் மிகவும் பொதுவான தரவுத்தள வடிவமைப்பாகும் மற்றும் நல்ல வடிவமைப்பு இதயத்தில் உள்ளது.

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

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

ஒருவருடன் பல உறவுகளை நிறுவுவது முக்கியம்

ஒருவருடன் பல உறவுகளை பிரதிநிதித்துவப்படுத்துவதற்காக குறைந்தது இரண்டு அட்டவணைகள் தேவை. ஏன் என்று பார்ப்போம்.

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

ஆசிரியர்கள் மற்றும் பாடநெறிகள்
Teacher_ID Teacher_Name கோர்ஸ்
Teacher_001 கார்மென் உயிரியல்
Teacher_002 வெரோனிகா கணித
Teacher_003 ஜார்ஜ் ஆங்கிலம்

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

ஆசிரியர்கள் மற்றும் பாடநெறிகள்
Teacher_ID ஆசிரியர் _ பெயர் கோர்ஸ்
Teacher_001 கார்மென் உயிரியல், கணிதம்
Teacher_002 வெரோனிகா கணித
Teacher_003 ஜார்ஜ் ஆங்கிலம்

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

இது தரவு தேட கடினமாக உள்ளது. இந்த வடிவமைப்பானது தரவுத்தள இயல்பாக்கம், முதல் இயல்புநிலை படிவம் (1NF) முதல் கொள்கைகளை மீறுகிறது, ஒவ்வொரு அட்டவணையில் ஒரு ஒற்றை, தனித்தனி தரவுகளைக் கொண்டிருக்க வேண்டும் என்று கூறுகிறது.

மற்றொரு வடிவமைப்பு மாற்று கார்மன் ஐந்து இரண்டாவது பதிவு சேர்க்க வேண்டும்:

ஆசிரியர்கள் மற்றும் பாடநெறிகள்
ஆசிரியர் _ID ஆசிரியர் _ பெயர் கோர்ஸ்
Teacher_001 கார்மென் உயிரியல்
Teacher_001 கார்மென் கணித
Teacher_002 வெரோனிகா கணித
Teacher_003 ஜார்ஜ் ஆங்கிலம்

இது 1NF க்கு முரணானது ஆனால் இன்னும் மோசமான தரவுத்தள வடிவமைப்பாக இருக்கிறது, ஏனென்றால் இது பணிநீக்கத்தை அறிமுகப்படுத்துகிறது மற்றும் தேவையற்ற முறையில் மிகப்பெரிய தரவுத்தளத்தை வீசுகிறது. மிக முக்கியமாக, தரவு சீரற்றதாகிவிடும். உதாரணமாக, கார்மென் பெயரை மாற்றினால் என்ன செய்வது? தரவோடு பணிபுரிபவருக்கு ஒருவர் ஒரு பதிவில் தனது பெயரை புதுப்பித்து, இரண்டாவது பதிப்பில் அதை புதுப்பிக்கத் தவறிவிடலாம். இந்த வடிவமைப்பு இரண்டாவது இயல்பான படிவத்தை (2NF) மீறுகிறது, இது 1NF க்கு ஒத்துப் போகிறது, மேலும் தரவு பலவற்றை பல அட்டவணைகளாக பிரிக்கவும் அவற்றுக்கு இடையேயான உறவை உருவாக்குவதன் மூலம் பல பதிவுகளின் நீக்குதல்களை தவிர்க்கவும் வேண்டும்.

ஒரு பல உறவுகள் ஒரு தரவுத்தள வடிவமைக்க எப்படி

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

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

ஆசிரியர்கள்
ஆசிரியர் _ID ஆசிரியர் _ பெயர்
Teacher_001 கார்மென்
Teacher_002 வெரோனிகா
Teacher_003 ஜார்ஜ்

இங்கு பாடநெறி அட்டவணை. அதன் வெளிநாட்டு கீ, ஆசிரியர்_ஐடி ஆசிரியருக்கான ஆசிரியருக்கு ஒரு பாடத்தை இணைக்கிறது:

படிப்புகள்
Course_ID படிப்பின் பெயர் Teacher_ID
Course_001 உயிரியல் Teacher_001
Course_002 கணித Teacher_001
Course_003 ஆங்கிலம் Teacher_003

ஆசிரியர்களுக்கும் பாடநெறிகளுக்கும் இடையில் ஒரு வெளிநாட்டு விசையைப் பயன்படுத்தி நாம் ஒரு உறவை உருவாக்கியுள்ளோம்.

இது உயிரியல் மற்றும் கணித இருவரும் கார்மென் மூலமாக கற்பிக்கப்படுகிறது மற்றும் ஜார்ஜ் ஆங்கிலத்தில் கற்பிக்கிறார் என்று நமக்கு சொல்கிறது.

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

தரவுத்தளங்கள் ஒருவருடன் ஒரு உறவுமுறையும் ஒரு பல-பல உறவுகளையும் செயல்படுத்தலாம்.