ഒരു ഡാറ്റാബേസിലെ ഒന്ന് മുതൽ നിരവധി ബന്ധങ്ങൾ

ടേബിളിലെ എ രേഖകളിൽ ഓരോ ടേബിളിനും ടേബിൾ ബിയിൽ അനേകം റെക്കോർഡ് റെക്കോർഡുകൾ ഉണ്ടാകാറുണ്ട്. എന്നാൽ ടേബിൾ ബിയിലെ ഓരോ രേഖയിലും ടേബിൾ എ യിൽ മാത്രം ഒരു രേഖയുണ്ട്. ഒരു ഡാറ്റാബേസ് ഏറ്റവും സാധാരണയായ ഡാറ്റാബേസ് ഡിസൈൻ ആണ്.

ഒരു അദ്ധ്യാപകനും അവർ പഠിപ്പിക്കുന്ന കോഴ്സും തമ്മിലുള്ള ബന്ധം പരിഗണിക്കുക. ഒരു അധ്യാപകർക്ക് ഒന്നിലധികം കോഴ്സുകൾ പഠിപ്പിക്കാൻ കഴിയും, പക്ഷേ കോഴ്സിന് അധ്യാപകരുമായുള്ള ബന്ധവും ഇല്ല.

അതിനാൽ, ടീച്ചർ ടേബിളിൽ ഓരോ റെക്കോഡിനും കോഴ്സസ് ടേബിളിൽ നിരവധി രേഖകൾ ഉണ്ടാകും. ഇത് ഒന്നിൽ നിന്ന് അനേകം ബന്ധം: ഒന്നിലധികം കോഴ്സുകളിൽ ഒരു അധ്യാപകൻ.

ഒന്നിലധികം ബന്ധം സ്ഥാപിക്കുന്നതിന്റെ പ്രാധാന്യം എന്തുകൊണ്ടാണ്

ഒന്നിൽക്കൂടുതൽ ബന്ധം പ്രതിനിധീകരിക്കാൻ, കുറഞ്ഞത് രണ്ട് പട്ടികകൾ ആവശ്യമാണ്. എന്തുകൊണ്ടെന്ന് നമുക്ക് നോക്കാം.

ഒരു ടീച്ചർ ടേബിൾ ഞങ്ങൾ സൃഷ്ടിച്ചിട്ടുണ്ടാകാം. അതിൽ പഠിപ്പിക്കുന്ന പാഠങ്ങളും കോഴ്സുകളും റെക്കോർഡ് ചെയ്യാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. നമ്മൾ ഇത് രൂപകൽപ്പന ചെയ്യാം:

അധ്യാപകരും കോഴ്സുകളും
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 ജോർജ്

ഇവിടെയാണ് കോഴ്സുകളുടെ ടേബിൾ. അതിന്റെ വിദേശ കീ, Teacher_ID, ടീച്ചർ ടേബിളിൽ അധ്യാപകന് ഒരു കോഴ്സ് ബന്ധപ്പെടുത്തുന്നു:

കോഴ്സുകൾ
കോഴ്സ്_ഐഡി കോഴ്സിന്റെ പേര് Teacher_ID
കോഴ്സ്_001 ജീവശാസ്ത്രം Teacher_001
കോഴ്സ്_002 മഠം Teacher_001
കോഴ്സ്_003 ഇംഗ്ലീഷ് Teacher_003

ഒരു വിദേശ കീ ഉപയോഗിച്ച് അധ്യാപകരെയും കോഴ്സുകളെയും തമ്മിൽ ബന്ധം വളർത്തിയെടുത്തിട്ടുണ്ട്.

ബയോളജി, മഠം കാർമെൻ നിർദേശിച്ചതായും ജോർജ് ഇംഗ്ലീഷിൽ പഠിപ്പിക്കുന്നതായും ഇത് നമ്മോട് പറയുന്നു.

ഈ ഡിസൈൻ എങ്ങനെയാണ് സാധ്യമായ redundancies ൽ നിന്നും വരുന്നത് എന്ന് നമുക്ക് കാണാം, വ്യക്തിഗത അദ്ധ്യാപകർ ഒന്നിലധികം കോഴ്സുകൾ പഠിപ്പിക്കാൻ അനുവദിക്കുന്നു, ഒപ്പം ഒന്നിൽ നിന്ന് അനേകം ബന്ധങ്ങളെ പ്രോത്സാഹിപ്പിക്കുകയും ചെയ്യുന്നു.

ഡേറ്റാബെയിസുകൾക്ക് ഒന്നായും ഒരു ബന്ധം നടപ്പാക്കാം, പലർക്കും പല ബന്ധം.