നോർമലൈസേഷൻ ഉറപ്പാക്കാൻ സഹായിക്കുന്ന ട്രാൻസിറ്റ് ഡിപൻഡൻസികൾ ഒഴിവാക്കുക
ഒരു ഡാറ്റാബേസിലെ ട്രാൻസിറ്റീവ് ഡിപൻഡൻസി ഫംഗ്ഷണൽ ആശ്രിതത്വത്തിന് കാരണമാകുന്ന അതേ പട്ടികയിലെ മൂല്യങ്ങൾ തമ്മിലുള്ള പരോക്ഷമായ ബന്ധമാണ്. മൂന്നാമത്തെ സാധാരണ ഫോം (3NF) ന്റെ സാധാരണ നിലവാരം നേടാൻ നിങ്ങൾ ഏതെങ്കിലും ട്രാൻസിറ്റീവ് ആശ്രിതത്വം ഒഴിവാക്കണം.
അതിന്റെ സ്വഭാവം അനുസരിച്ച് ഒരു സന്തുലിത ആശ്രിതത്വത്തിന് മൂന്നു അല്ലെങ്കിൽ അതിൽ കൂടുതൽ പ്രവർത്തനങ്ങൾ (അല്ലെങ്കിൽ ഡാറ്റാബേസ് നിരകൾ) അവയ്ക്കിടയിൽ ഒരു പ്രവർത്തനപരമായ ആശ്രിതത്വം ആവശ്യമാണ്. അതായത്, ഒരു പട്ടികയിലെ നിര A നെ മധ്യനിര വരി C നെ ആശ്രയിച്ചിരിക്കുന്നു.
ഇത് എങ്ങനെ പ്രവർത്തിക്കാം എന്ന് നോക്കാം.
ട്രാൻസിറ്റ് ഡെപൻഡൻസി ഉദാഹരണം
AUTHORS
| Author_ID | രചയിതാവ് | പുസ്തകം | രചയിതാവ് |
|---|---|---|---|
| Auth_001 | ഓർസൺ സ്കോട്ട് കാർഡ് | എൻഡർ ഗെയിം | അമേരിക്ക |
| Auth_001 | ഓർസൺ സ്കോട്ട് കാർഡ് | എൻഡർ ഗെയിം | അമേരിക്ക |
| Auth_002 | മാർഗരറ്റ് ആറ്റ്വുഡ് | ദ ഹാൻഡ്മീസ്സ് ടെയിൽ | കാനഡ |
മുകളിൽ AUTHORS ഉദാഹരണത്തിൽ:
- പുസ്തകം → രചയിതാവ് : ഇവിടെ, രചയിതാവിന് ആട്രിബ്യൂട്ട് നിർണ്ണയിക്കുന്നു. പുസ്തകത്തിന്റെ പേര് നിങ്ങൾക്കറിയാമെങ്കിൽ, നിങ്ങൾക്ക് ആ എഴുത്തിന്റെ പേര് മനസ്സിലാക്കാം. എന്നിരുന്നാലും, ഗ്രന്ഥകർത്താവ് പുസ്തകത്തെ നിർണ്ണയിക്കുന്നില്ല, കാരണം ഒരു രചയിതാവ്ക്ക് ഒന്നിലധികം പുസ്തകങ്ങൾ എഴുതാനാകും. ഉദാഹരണത്തിന്, ഓസോൺ സ്കോട്ട് കാർഡിന്റെ രചയിതാവായ ഞങ്ങൾക്കറിയാം കാരണം, ഞങ്ങൾ ഇപ്പോഴും ഈ പുസ്തകം അറിയുന്നില്ല.
- രചയിതാവ് → Author_Nationality : അതുപോലെ, ആട്രിബ്യൂട്ട് ആട്രിബ്യൂട്ട് Author_Nationality നിശ്ചയിക്കുന്നു, പക്ഷേ മറ്റൊന്നുമല്ല; ദേശീയതയെക്കുറിച്ച് നമുക്ക് അറിയില്ല എന്നതിനാലാണ് നമുക്ക് സ്രഷ്ടാവിനെ നിർണ്ണയിക്കാൻ കഴിയുന്നത്.
എന്നാൽ ഈ പട്ടിക ട്രാൻസിറ്റീവ് ഡിപൻഡൻസി അവതരിപ്പിക്കുന്നു:
- പുസ്തകം → Author_Nationality: ഞങ്ങൾ പുസ്തകത്തിന്റെ പേര് അറിയാമെങ്കിൽ, നമുക്ക് ആട്രിബ്യൂട്ടിംഗ് കോളിലൂടെ ദേശീയതയെ നിർണ്ണയിക്കാം.
ട്രാൻസിറ്റ് ഡിപൻഡൻസികൾ ഒഴിവാക്കുന്നു
മൂന്നാമത്തെ സാധാരണം ഫോം ഉറപ്പാക്കാൻ, നമുക്ക് ട്രാൻസിറ്റീവ് ഡിഫൻഡൻസി നീക്കം ചെയ്യാം.
ഗ്രന്ഥകർത്താവ് പട്ടികയിൽ നിന്ന് പുസ്തകം നീക്കം ചെയ്തുകൊണ്ട് ഒരു പ്രത്യേക പുസ്തക പട്ടിക സൃഷ്ടിച്ചുകൊണ്ടുകൊണ്ട് നമുക്ക് തുടങ്ങാം.
BOOKS
| Book_ID | പുസ്തകം | Author_ID |
|---|---|---|
| ബുക്ക്_001 | എൻഡർ ഗെയിം | Auth_001 |
| ബുക്ക്_001 | മനസ്സിന്റെ കുട്ടികൾ | Auth_001 |
| പുസ്തകം _002 | ദ ഹാൻഡ്മീസ്സ് ടെയിൽ | Auth_002 |
AUTHORS
| Author_ID | രചയിതാവ് | രചയിതാവ് |
|---|---|---|
| Auth_001 | ഓർസൺ സ്കോട്ട് കാർഡ് | അമേരിക്ക |
| Auth_002 | മാർഗരറ്റ് ആറ്റ്വുഡ് | കാനഡ |
ഇത് ശരിയാക്കിയോ? ഇപ്പോൾ ഞങ്ങളുടെ ആശ്രയത്വങ്ങളെ പരിശോധിക്കാം:
BOOKS പട്ടിക :
- Book_ID → പുസ്തകം: പുസ്തകം Book_ID എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു.
- ഈ പട്ടികയിൽ മറ്റ് ആശ്രയങ്ങളൊന്നും നിലവിലില്ല, അതിനാൽ ഞങ്ങൾക്ക് കുഴപ്പമില്ല. വിദേശ കീ Author_ID ഈ പട്ടികയെ AUTHORS പട്ടികയിലേക്ക് പ്രാഥമിക കീ Author_ID വഴി ബന്ധിപ്പിക്കുന്നു . പരസ്പരബന്ധിതമായ ഡാറ്റാബേസുകളുടെ ഒരു പ്രധാന രൂപകൽപ്പനയായ ട്രാൻസിറ്റീവ് ഡിപൻഡൻസി ഒഴിവാക്കാൻ ഞങ്ങൾ ഒരു ബന്ധം സൃഷ്ടിച്ചു.
AUTHORS പട്ടിക :
- Author_ID → രചയിതാവ്: രചയിതാവ് രചയിത Author_ID ന് ആശ്രയിച്ചിരിക്കുന്നു.
- സ്രഷ്ടാവ് → Author_Nationality: ദേശീയതയെ എഴുത്തുകാരൻ നിർണ്ണയിക്കാൻ കഴിയും.
- Author_ID → Author_Nationality: ആട്രിബ്യൂട്ട് ആട്രിബ്യൂട്ട് വഴി ദേശീയതയെ Author_ID ൽ നിന്നും നിർണ്ണയിക്കാൻ കഴിയും. ഞങ്ങൾക്ക് ഇപ്പോഴും ഒരു സുതാര്യമായ ആശ്രിതത്വം ഉണ്ട്.
ഈ ഡാറ്റ സാധാരണ രീതിയിൽ ക്രമപ്പെടുത്തുന്നതിനായി ഞങ്ങൾ ഒരു മൂന്നാം പട്ടിക ചേർക്കേണ്ടതാണ്:
രാജ്യങ്ങൾ
| Country_ID | രാജ്യം |
|---|---|
| Coun_001 | അമേരിക്ക |
| Coun_002 | കാനഡ |
AUTHORS
| Author_ID | രചയിതാവ് | Country_ID |
|---|---|---|
| Auth_001 | ഓർസൺ സ്കോട്ട് കാർഡ് | Coun_001 |
| Auth_002 | മാർഗരറ്റ് ആറ്റ്വുഡ് | Coun_002 |
ഇപ്പോൾ നമുക്കിത് മൂന്ന് ടേബിളുകളുണ്ട്, അവ പരസ്പരം ബന്ധിപ്പിക്കാൻ വിദേശ കീകൾ ഉപയോഗിക്കുന്നു:
- BOOK പട്ടികയുടെ വിദേശ കീ Author_ID , AUTHORS പട്ടികയിൽ ഒരു ഗ്രന്ഥകർത്താവിനെ ബന്ധിപ്പിക്കുന്നു.
- AUTHORS പട്ടികയുടെ വിദേശ കീ Country_ID COUNTRIES പട്ടികയിലെ ഒരു രാജ്യത്തിന് ഒരു രചയിതാവിനെ ബന്ധിപ്പിക്കുന്നു.
- ഈ ഡിസൈനിൽ മറ്റൊരു പട്ടികയിലേക്ക് ലിങ്കുചെയ്യേണ്ടതില്ലാത്തതിനാൽ COUNTRIES പട്ടികയ്ക്ക് വിദേശ കീ ഒന്നുമില്ല.
എന്തുകൊണ്ട് ട്രാൻസിറ്റീവ് ഡിപൻഡൻസീസ് മോശം ഡാറ്റാബേസ് ഡിസൈൻ ആണ്
3NF ഉറപ്പാക്കാൻ സഹായിക്കുന്ന സംതരണം ആശ്രിതത്വം ഒഴിവാക്കാനുള്ള മൂല്യം എന്താണ്? നമുക്ക് ഒന്നാമത്തെ മേശയെ വീണ്ടും നോക്കാം, അത് സൃഷ്ടിക്കുന്ന പ്രശ്നങ്ങൾ കാണുക:
AUTHORS
| Author_ID | രചയിതാവ് | പുസ്തകം | രചയിതാവ് |
|---|---|---|---|
| Auth_001 | ഓർസൺ സ്കോട്ട് കാർഡ് | എൻഡർ ഗെയിം | അമേരിക്ക |
| Auth_001 | ഓർസൺ സ്കോട്ട് കാർഡ് | മനസ്സിന്റെ കുട്ടികൾ | അമേരിക്ക |
| Auth_002 | മാർഗരറ്റ് ആറ്റ്വുഡ് | ദ ഹാൻഡ്മീസ്സ് ടെയിൽ | കാനഡ |
ഇത്തരത്തിലുള്ള ഡിസൈൻ ഡാറ്റ അസ്വാലിറ്റികൾക്കും പൊരുത്തക്കേടുകൾക്കും കാരണമാകാം, ഉദാഹരണത്തിന്:
- "കുട്ടികളുടെ മനസ്സുകൾ", "ഈണ്ടേഴ്സ് ഗെയിം" എന്നീ രണ്ടു പുസ്തകങ്ങളും നിങ്ങൾ ഇല്ലാതാക്കിയെങ്കിൽ, നിങ്ങൾ "ഓർസൺ സ്കോട്ട് കാർഡ്" എന്ന രചയിതാവും അദ്ദേഹത്തിന്റെ ദേശീയത പൂർണമായും ഡാറ്റാബേസിൽ നിന്ന് ഇല്ലാതാക്കും.
- നിങ്ങൾ ഒരു പുസ്തകം ചേർക്കാതെയും ഡാറ്റാബേസിലേക്ക് ഒരു പുതിയ രചയിതാവിനെ ചേർക്കാൻ കഴിയില്ല; എഴുത്തുകാരൻ ഇതുവരെ പ്രസിദ്ധീകരിച്ചില്ലെങ്കിൽ അല്ലെങ്കിൽ അവൾ എഴുതിയ ഒരു പുസ്തകത്തിന്റെ പേര് നിങ്ങൾക്കറിയില്ലേ?
- "ഓർസൺ സ്കോട്ട് കാർഡ്" പൗരത്വം മാറ്റിയിട്ടുണ്ടെങ്കിൽ, നിങ്ങൾ കാണുന്ന എല്ലാ റെക്കോർഡുകളിലും അത് മാറ്റണം. ഒരേ രചയിതാവിനോടൊപ്പം ഒന്നിലധികം രേഖകൾ ഉണ്ടോ എന്നത് തെറ്റായ വിവരത്തിന് കാരണമാകാം: ഡാറ്റാ എൻട്രിയുടെ വ്യക്തിക്ക് അയാൾക്ക് ഒന്നിലധികം റെക്കോർഡുകൾ ഉണ്ടെന്ന് മനസ്സിലാകാതെ ഒരു റിക്കോർഡിലെ ഡാറ്റ മാറ്റാൻ കഴിയുമോ?
- രചയിതാവിനെ മുഴുവനായും ഇല്ലാതാക്കാതെ തന്നെ "The Handmaid's Tale" എന്ന പുസ്തകം നിങ്ങൾക്ക് ഇല്ലാതാക്കാൻ കഴിയില്ല.
ഇത് ലളിതവത്ക്കരണത്തിനും , സന്തുലിതമായ ഡിപൻഡൻസികൾ ഒഴിവാക്കുന്നതിനും, ഡാറ്റ സംരക്ഷിക്കുന്നതിനും സ്ഥിരത ഉറപ്പുവരുത്തുന്നതിനുമുള്ള ചില കാരണങ്ങളാണ്.