ഒരു പ്രാഥമിക കീയ്ക്ക് എന്ത് ഗുണങ്ങൾ ഉണ്ടായിരിക്കണം? SQL - പ്രാഥമിക കീ. ഒന്ന് മുതൽ പല വരെ ബന്ധം

ഒരു ഡാറ്റാബേസ് പട്ടികയിലെ ഓരോ വരിയും/രേഖയും അദ്വിതീയമായി തിരിച്ചറിയുന്ന ഒരു പട്ടികയിലെ ഒരു ഫീൽഡാണ് പി റിമറി കീ. പ്രാഥമിക കീകൾഅതുല്യമായ മൂല്യങ്ങൾ അടങ്ങിയിരിക്കണം. പ്രാഥമിക കീ കോളത്തിന് ഒരു മൂല്യം ഉണ്ടായിരിക്കില്ല.

ഒരു ടേബിളിൽ ഒന്നോ അതിലധികമോ ഫീൽഡുകൾ ഉൾക്കൊള്ളുന്ന ഒരു പ്രാഥമിക കീ മാത്രമേ ഉണ്ടാകൂ. ഒന്നിലധികം ഫീൽഡുകൾ ഒരു പ്രാഥമിക കീ ആയി ഉപയോഗിക്കുമ്പോൾ, അവയെ ഒരു കോമ്പോസിറ്റ് കീ എന്ന് വിളിക്കുന്നു.

ഏതെങ്കിലും ഫീൽഡിൽ(കളിൽ) ഒരു ടേബിളിന് ഒരു പ്രാഥമിക കീ നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ, ആ ഫീൽഡിന്(ങ്ങൾക്ക്) ഒരേ മൂല്യമുള്ള രണ്ട് റെക്കോർഡുകൾ നിങ്ങൾക്ക് ഉണ്ടായിരിക്കാൻ കഴിയില്ല.

കുറിപ്പ്- ഡാറ്റാബേസ് പട്ടികകൾ സൃഷ്ടിക്കുമ്പോൾ നിങ്ങൾക്ക് ഈ ആശയങ്ങൾ ഉപയോഗിക്കാം.

ഒരു പ്രാഥമിക കീ സൃഷ്ടിക്കുന്നു

ഉപഭോക്തൃ പട്ടികയിലെ പ്രാഥമിക കീയായി ഐഡി ആട്രിബ്യൂട്ട് നിർവചിക്കുന്നതിനുള്ള വാക്യഘടന ഇതാ.

ടേബിൾ ഉപഭോക്താക്കളെ സൃഷ്‌ടിക്കുക (ഐഡി ശൂന്യമല്ല, പേര് വർചാർ (20) അസാധുവല്ല, വയസ്സ് അസാധുവല്ല, വിലാസം ചാർ (25) , ശമ്പള ദശാംശം (18, 2), പ്രാഥമിക താക്കോൽ (ഐഡി));

ഉപഭോക്തൃ പട്ടിക നിലവിലുണ്ടെങ്കിൽ "ഐഡി" കോളത്തിൽ ഒരു പ്രാഥമിക കീ നിയന്ത്രണം സൃഷ്ടിക്കാൻ, ഇനിപ്പറയുന്നവ ഉപയോഗിക്കുക SQL വാക്യഘടന:

ആൾട്ടർ ടേബിൾ ഉപഭോക്താക്കൾ പ്രൈമറി കീ ചേർക്കുക (ഐഡി);

കുറിപ്പ്

ഒരു പ്രാഥമിക കീ ചേർക്കാൻ നിങ്ങൾ ALTER TABLE പ്രസ്താവന ഉപയോഗിക്കുകയാണെങ്കിൽ, പ്രാഥമിക കീ കോളം(കൾ) NULL മൂല്യങ്ങൾ അടങ്ങിയിട്ടില്ലെന്ന് ഇതിനകം പ്രഖ്യാപിച്ചിരിക്കണം (പട്ടികയാണ് ആദ്യം സൃഷ്ടിച്ചതെങ്കിൽ).

ഒന്നിലധികം നിരകളിൽ ഒരു പ്രാഥമിക കീ നിർവചിക്കുന്നതിന്, താഴെയുള്ള SQL വാക്യഘടന ഉപയോഗിക്കുക:

ടേബിൾ ഉപഭോക്താക്കളെ സൃഷ്‌ടിക്കുക (ഐഡി അസാധുവല്ല, പേര് വർചാർ (20) അസാധുവല്ല, വയസ്സ് അസാധുവല്ല, വിലാസം ചാർ (25) , ശമ്പള ദശാംശം (18, 2), പ്രാഥമിക താക്കോൽ (ഐഡി, പേര്));

ഉപഭോക്തൃ പട്ടിക നിലവിലുണ്ടെങ്കിൽ ഐഡി, NAME നിരകളിൽ ഒരു പ്രാഥമിക കീ നിയന്ത്രണം സൃഷ്ടിക്കുന്നതിന്, ഇനിപ്പറയുന്ന SQL വാക്യഘടന ഉപയോഗിക്കുക.

ആൾട്ടർ ടേബിൾ ഉപഭോക്താക്കൾ PK_CUSTID പ്രൈമറി കീ (ഐഡി, പേര്) കൺസ്ട്രൈൻ്റ് ചേർക്കുക;

ഒരു പ്രാഥമിക കീ ഇല്ലാതാക്കുന്നു

ചുവടെ നൽകിയിരിക്കുന്ന വാക്യഘടന ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു പട്ടികയിൽ നിന്ന് പ്രാഥമിക കീ നിയന്ത്രണങ്ങൾ മായ്‌ക്കാനാകും.

ആൾട്ടർ ടേബിൾ കസ്റ്റമേഴ്‌സ് ഡ്രോപ്പ് പ്രൈമറി കീ;

ഇലക്ട്രോണിക് സംഭരണംഒന്നോ അതിലധികമോ കമ്പ്യൂട്ടറുകളിലൂടെ ആക്സസ് ചെയ്യപ്പെടുന്ന വിവരങ്ങൾ. സാധാരണഗതിയിൽ, ചിലതിനെ കുറിച്ചുള്ള വിവരങ്ങൾ അടങ്ങിയ ഡാറ്റ സംഭരിക്കാനും ആക്സസ് ചെയ്യാനും ഡാറ്റാബേസുകൾ സൃഷ്ടിക്കപ്പെടുന്നു വിഷയ മേഖല, അതായത്, മനുഷ്യ പ്രവർത്തനത്തിൻ്റെ ചില മേഖലകൾ അല്ലെങ്കിൽ യഥാർത്ഥ ലോകത്തിൻ്റെ ഭാഗം.

DBMS ആണ് സോഫ്റ്റ്വെയർഒരു ഡാറ്റാബേസ് സൃഷ്‌ടിക്കാനും ജനകീയമാക്കാനും അപ്‌ഡേറ്റ് ചെയ്യാനും ഇല്ലാതാക്കാനും.

ഡാറ്റാബേസിൽ സംഭരിച്ചിരിക്കുന്ന വിവരങ്ങളുടെ യൂണിറ്റ് ഒരു പട്ടികയാണ്. ഓരോ ടേബിളും വരികളുടെയും നിരകളുടെയും ഒരു ശേഖരമാണ്, അവിടെ വരികൾ ഒരു വസ്തുവിൻ്റെ, ഒരു നിർദ്ദിഷ്ട സംഭവത്തിൻ്റെ അല്ലെങ്കിൽ പ്രതിഭാസവുമായി പൊരുത്തപ്പെടുന്നു, കൂടാതെ നിരകൾ ഒബ്‌ജക്റ്റ്, ഇവൻ്റ് അല്ലെങ്കിൽ പ്രതിഭാസത്തിൻ്റെ ആട്രിബ്യൂട്ടുകളുമായി (സവിശേഷതകൾ, സവിശേഷതകൾ, പാരാമീറ്ററുകൾ) പൊരുത്തപ്പെടുന്നു. ഓരോ വരിയിലും ഒരു പ്രത്യേക സംഭവത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു.

ഡാറ്റാബേസ് പദങ്ങളിൽ, ഒരു പട്ടികയുടെ നിരകളെ ഫീൽഡുകൾ എന്നും അതിൻ്റെ വരികളെ റെക്കോർഡുകൾ എന്നും വിളിക്കുന്നു.

വ്യക്തിഗത ഡാറ്റാബേസ് പട്ടികകൾക്കിടയിൽ ബന്ധങ്ങൾ നിലനിൽക്കാം, അതായത്, മുമ്പത്തെ പട്ടികയിലെ വിവരങ്ങൾ മറ്റൊന്നിലേക്ക് ചേർക്കാം. വ്യക്തിഗത പട്ടികകൾ തമ്മിൽ ബന്ധമുള്ള ഡാറ്റാബേസുകളെ റിലേഷണൽ എന്ന് വിളിക്കുന്നു. ഒരേ ടേബിൾ ഒരു ഡാറ്റാബേസ് ടേബിളുമായി ബന്ധപ്പെട്ട് പ്രധാന പട്ടികയും മറ്റൊന്നുമായി ബന്ധപ്പെട്ട് ഒരു ചൈൽഡ് ടേബിളും ആകാം.

ബന്ധങ്ങളാൽ ബന്ധിപ്പിച്ചിരിക്കുന്ന പട്ടികകൾ മാസ്റ്റർ-സ്ലേവ് തത്വമനുസരിച്ച് സംവദിക്കുന്നു. ഒരേ പട്ടിക ഒരു ഡാറ്റാബേസ് പട്ടികയുടെ പ്രധാന പട്ടികയും മറ്റൊന്നിൻ്റെ കുട്ടിയുമാകാം.

ഒരു വസ്തു - നിലവിലുള്ളതും വേർതിരിക്കാവുന്നതുമായ ഒന്നാണ്, ഒരു കൂട്ടം ഗുണങ്ങളുണ്ട്. ഒരു വസ്തുവും മറ്റൊരു വസ്തുവും തമ്മിലുള്ള വ്യത്യാസം നിർദ്ദിഷ്ട പ്രോപ്പർട്ടി മൂല്യങ്ങളാൽ നിർണ്ണയിക്കപ്പെടുന്നു.

സാരാംശം - ഒരു വ്യക്തിയുടെയോ കമ്പ്യൂട്ടറിൻ്റെയോ മെമ്മറിയിൽ ഒരു വസ്തുവിൻ്റെ പ്രതിഫലനം.

ആട്രിബ്യൂട്ട് - എൻ്റിറ്റിയുടെ ഏതെങ്കിലും വസ്തുവകകളുടെ നിർദ്ദിഷ്ട മൂല്യം.

ഫീൽഡ് ഒരു പ്രത്യേക ആട്രിബ്യൂട്ട് മൂല്യം സംഭരിക്കുന്ന ഒരു റെക്കോർഡിൻ്റെ ഒരൊറ്റ ഘടകമാണ്.

ആശയവിനിമയ മേഖല രണ്ട് പട്ടികകൾ ബന്ധപ്പെട്ടിരിക്കുന്ന മേഖലയാണിത്.

പ്രാഥമിക, ദ്വിതീയ കീകൾ

ഓരോ ഡാറ്റാബേസ് പട്ടികയ്ക്കും ഒരു പ്രാഥമിക കീ ഉണ്ടായിരിക്കാം - ഇത് ഒരു ഫീൽഡ് അല്ലെങ്കിൽ ഒരു റെക്കോർഡ് അദ്വിതീയമായി തിരിച്ചറിയുന്ന ഫീൽഡുകളുടെ ഒരു ശേഖരമാണ്.

ഒരു ഡാറ്റാബേസ് പട്ടികയിലെ പ്രാഥമിക കീ മൂല്യം അദ്വിതീയമായിരിക്കണം, അതായത്, ഒരേ പ്രാഥമിക കീ മൂല്യമുള്ള പട്ടികയിൽ രണ്ടോ അതിലധികമോ റെക്കോർഡുകൾ ഉണ്ടാകരുത്.

പട്ടികകൾക്കിടയിൽ ബന്ധം സ്ഥാപിക്കുന്നത് പ്രാഥമിക കീകൾ എളുപ്പമാക്കുന്നു. പ്രാഥമിക കീ അദ്വിതീയമായിരിക്കണം എന്നതിനാൽ, പട്ടികയിലെ എല്ലാ ഫീൽഡുകളും അതിനായി ഉപയോഗിക്കാൻ കഴിയില്ല.

ടേബിളിൽ അദ്വിതീയ മൂല്യങ്ങളുള്ള ഫീൽഡുകൾ ഇല്ലെങ്കിൽ, ഒരു പ്രാഥമിക കീ സൃഷ്ടിക്കുന്നതിന്, ഒരു അധിക സംഖ്യാ ഫീൽഡ് സാധാരണയായി അതിൽ അവതരിപ്പിക്കുന്നു, ഡിബിഎംഎസിന് അതിൻ്റെ വിവേചനാധികാരത്തിൽ വിനിയോഗിക്കാൻ കഴിയുന്ന മൂല്യങ്ങൾ.

ഡാറ്റ തിരയുമ്പോഴോ അടുക്കുമ്പോഴോ പലപ്പോഴും ഉപയോഗിക്കുന്ന ഫീൽഡുകളാണ് സെക്കൻഡറി കീകൾ സജ്ജീകരിച്ചിരിക്കുന്നത്: ദ്വിതീയ കീകളിൽ നിർമ്മിച്ച സൂചികകൾ അനുബന്ധ ഫീൽഡുകളിൽ സംഭരിച്ചിരിക്കുന്ന ആവശ്യമായ മൂല്യങ്ങൾ വളരെ വേഗത്തിൽ കണ്ടെത്താൻ സിസ്റ്റത്തെ സഹായിക്കും.

പ്രാഥമിക കീകളിൽ നിന്ന് വ്യത്യസ്തമായി, ദ്വിതീയ കീകൾക്കുള്ള ഫീൽഡുകളിൽ അദ്വിതീയമല്ലാത്ത വിവരങ്ങൾ അടങ്ങിയിരിക്കാം.

പട്ടികകൾ തമ്മിലുള്ള ബന്ധ ബന്ധങ്ങൾ

ഒന്ന് മുതൽ ഒന്ന് വരെ. ഒരു പാരൻ്റ് ടേബിളിലെ ഒരു റെക്കോർഡ് ചൈൽഡ് ടേബിളിലെ ഒരു റെക്കോർഡുമായി പൊരുത്തപ്പെടുമ്പോൾ വൺ-ടു-വൺ ബന്ധം സംഭവിക്കുന്നു.

ഈ ബന്ധം ഒന്നിൽ നിന്ന് നിരവധി ബന്ധങ്ങളെ അപേക്ഷിച്ച് വളരെ കുറവാണ്; വൺ-ടു-വൺ ആശയവിനിമയം വായനാക്ഷമതയിൽ കലാശിക്കുന്നു ബന്ധപ്പെട്ട വിവരങ്ങൾനിരവധി പട്ടികകളിൽ, നിങ്ങൾ ഒന്നിലധികം വായന പ്രവർത്തനങ്ങൾ നടത്തേണ്ടതുണ്ട്, ഇത് ആവശ്യമായ വിവരങ്ങൾ ലഭിക്കുന്നത് മന്ദഗതിയിലാക്കുന്നു. കൂടാതെ, വൺ-ടു-വൺ ബന്ധമുള്ള പട്ടികകൾ ഉൾക്കൊള്ളുന്ന ഡാറ്റാബേസുകൾ പൂർണ്ണമായും നോർമലൈസ് ചെയ്തതായി കണക്കാക്കാനാവില്ല.

ഒന്നിൽ നിന്ന് അനേകം ബന്ധം പോലെ, ഒരു വ്യക്തി തമ്മിലുള്ള ബന്ധം കഠിനമോ മൃദുമോ ആകാം.

ഇൻ്റർബേസ് ഉപയോഗിക്കാം ഇനിപ്പറയുന്ന തരങ്ങൾനിയന്ത്രണങ്ങൾ:
  • പ്രൈമറി കീ - പട്ടികയുടെ പ്രാഥമിക കീ.
  • UNIQUE - അതുല്യമായ പട്ടിക കീ.
  • വിദേശ കീ- വിദേശ കീ, മറ്റൊരു ടേബിളിലേക്ക് ഒരു ലിങ്ക് നൽകുകയും മാതാപിതാക്കളും തമ്മിലുള്ള റഫറൻഷ്യൽ സമഗ്രത ഉറപ്പുനൽകുകയും ചെയ്യുന്നു കുട്ടികളുടെ മേശകൾ.

ടെർമിനോളജിയെക്കുറിച്ചുള്ള ഒരു കുറിപ്പ്

നിങ്ങൾ രചയിതാവിനെപ്പോലെയാണെങ്കിൽ ഈ കോഴ്സ്വ്യത്യസ്ത രചയിതാക്കളുടെ വ്യത്യസ്ത കൃതികളിൽ, നിങ്ങൾക്ക് സമഗ്രമായി താൽപ്പര്യമുള്ള ഒരു ചോദ്യത്തിനുള്ള ഉത്തരം തിരയാൻ നിങ്ങൾ ഇഷ്ടപ്പെടുന്നതിനാൽ, നിർവചനങ്ങളിൽ ചില ആശയക്കുഴപ്പങ്ങൾ കാണാതിരിക്കാൻ നിങ്ങൾക്ക് കഴിഞ്ഞില്ല. പ്രധാന (മാസ്റ്റർ) -> കീഴാളൻ (വിശദാംശം)പട്ടികകൾ. പ്രധാന പട്ടികയെ പലപ്പോഴും പേരൻ്റ് ടേബിൾ എന്നും സബോർഡിനേറ്റ് ടേബിളിനെ ചൈൽഡ് ടേബിൾ എന്നും വിളിക്കാറുണ്ടെന്ന് ഓർക്കുക.

ലോക്കൽ, എസ്‌ക്യുഎൽ സെർവർ ഡിബിഎംഎസുകളിൽ ഈ നിർവചനങ്ങൾ എങ്ങനെ വ്യാഖ്യാനിക്കപ്പെടുന്നു എന്നതായിരിക്കാം ഇതിന് കാരണം.

പ്രാദേശിക ഡിബിഎംഎസുകളിൽ, പ്രധാന ടേബിളിൽ പ്രധാന ഡാറ്റ അടങ്ങിയിരിക്കുന്നു, കൂടാതെ സബോർഡിനേറ്റ് ടേബിളിൽ അധിക ഡാറ്റ അടങ്ങിയിരിക്കുന്നു. ഉദാഹരണത്തിന്, മൂന്ന് അനുബന്ധ പട്ടികകൾ എടുക്കാം. ആദ്യത്തേതിൽ വിൽപ്പനയെക്കുറിച്ചുള്ള ഡാറ്റ അടങ്ങിയിരിക്കുന്നു, രണ്ടാമത്തേത് - ഉൽപ്പന്നങ്ങളിൽ, മൂന്നാമത്തേത് - ഉപഭോക്താക്കളിൽ:


അരി.

18.1

ഇവിടെ പ്രധാന വിവരങ്ങൾ സെയിൽസ് ടേബിളിൽ സംഭരിച്ചിരിക്കുന്നു, അതിനാൽ ഇത് പ്രധാന (രക്ഷാകർതൃ) പട്ടികയാണ്. അധിക വിവരങ്ങൾ ഉൽപ്പന്നത്തിലും ഉപഭോക്തൃ പട്ടികകളിലും സംഭരിച്ചിരിക്കുന്നു, അതായത് അവർ കുട്ടികളാണ്. ഇത് മനസ്സിലാക്കാവുന്നതേയുള്ളൂ: ഒരു മകൾക്ക് രണ്ട് ജൈവിക അമ്മമാർ ഉണ്ടാകില്ല, എന്നാൽ ഒരു അമ്മയ്ക്ക് രണ്ട് പെൺമക്കളെ പ്രസവിക്കാൻ കഴിവുണ്ട്. എന്നാൽ SQL ഡാറ്റാബേസ് സെർവറുകളിൽ ബന്ധങ്ങളുടെ മറ്റൊരു നിർവചനം ഉണ്ട്: ഒരു പട്ടികയിലെ ഒരു ഫീൽഡ് മറ്റൊരു പട്ടികയിലെ ഒരു ഫീൽഡിനെ പരാമർശിക്കുമ്പോൾ, അതിനെ വിളിക്കുന്നുവിദേശ കീ . അത് സൂചിപ്പിക്കുന്ന ഫീൽഡിനെ വിളിക്കുന്നു രക്ഷിതാവ് അല്ലെങ്കിൽപ്രാഥമിക കീ . ഒരു വിദേശ കീ (മറ്റൊരു പട്ടികയിലെ ഒരു റെക്കോർഡിലേക്കുള്ള ലിങ്ക്) ഉള്ള ഒരു പട്ടികയെ പലപ്പോഴും ഒരു കുട്ടി എന്നും ഒരു ടേബിൾ എന്നും വിളിക്കുന്നു- മാതാപിതാക്കളുടെ. ബന്ധങ്ങളുടെ നിർവചനത്തിൽ, ഒരു രക്ഷിതാവിന് ഒരു അദ്വിതീയ റെക്കോർഡ് മാത്രമേ ഉണ്ടാകൂ എന്ന് അവർ പറയുന്നു, അത് നിരവധി രേഖകളാൽ പരാമർശിക്കാവുന്നതാണ്. കുട്ടികളുടെ മേശ.

അതിനാൽ മുകളിലുള്ള ഉദാഹരണത്തിൽ, വിൽപ്പന പട്ടികയിൽ രണ്ട് വിദേശ കീകൾ ഉണ്ട്: ഉൽപ്പന്ന ഐഡിയും ഉപഭോക്തൃ ഐഡിയും. ചിത്രത്തിൻ്റെ വലതുവശത്തുള്ള രണ്ട് പട്ടികകളും ഉണ്ട് പാരൻ്റ് കീ"ഐഡൻ്റിഫയർ". ഒരേ ഉപഭോക്താവോ ഉൽപ്പന്നമോ വിൽപ്പന പട്ടികയിൽ ആവർത്തിച്ച് ദൃശ്യമാകുന്നതിനാൽ, ചിത്രത്തിൻ്റെ വലതുവശത്തുള്ള രണ്ട് പട്ടികകളും മാതാപിതാക്കളാണെന്നും ഇടതുവശത്തുള്ള പട്ടിക ഒരു കുട്ടിയാണെന്നും ഇത് മാറുന്നു. കാരണം ഞങ്ങൾ ഇപ്പോൾ പഠിക്കുകയാണ് ഇൻ്റർബേസ് - SQLഡാറ്റാബേസ് സെർവർ, തുടർന്നുള്ള പ്രഭാഷണങ്ങളിൽ ഈ നിർവചനങ്ങളാൽ ഞങ്ങൾ നയിക്കപ്പെടും. ഈ ആശയക്കുഴപ്പത്തിൽ നമ്മുടെ മസ്തിഷ്കത്തെ കൂടുതൽ വഷളാക്കാതിരിക്കാൻ, നമുക്ക് ഉടൻ തന്നെ സമ്മതിക്കാം: കുട്ടികളുടെ മേശമറ്റൊരു പട്ടികയിലേക്ക് ഒരു വിദേശ കീ (വിദേശ കീ) ഉണ്ട്.

പ്രൈമറി കീ

പ്രൈമറി കീ- ഒരു ഡാറ്റാബേസിലെ പ്രധാന തരത്തിലുള്ള നിയന്ത്രണങ്ങളിൽ ഒന്നാണ് പ്രാഥമിക കീ. ഒരു പട്ടികയിലെ ഒരു റെക്കോർഡ് അദ്വിതീയമായി തിരിച്ചറിയുന്നതിനാണ് പ്രാഥമിക കീ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നത്, അത് അദ്വിതീയമായിരിക്കണം. പ്രാഥമിക കീകൾ PRIMARY KEY പട്ടികകളിൽ സ്ഥിതിചെയ്യുന്നു, അവയെ സാധാരണയായി പേരൻ്റ് (പാരൻ്റ്) എന്ന് വിളിക്കുന്നു. പ്രാഥമിക സൂചികകളുമായി പ്രാഥമിക കീ ആശയക്കുഴപ്പത്തിലാക്കരുത് പ്രാദേശിക ഡാറ്റാബേസുകൾഡാറ്റ, പ്രാഥമിക കീ ഒരു സൂചികയല്ല, മറിച്ച് ഒരു പരിമിതിയാണ്. ഒരു പ്രാഥമിക കീ സൃഷ്ടിക്കുമ്പോൾ ഇൻ്റർബേസ്അവനുവേണ്ടി യാന്ത്രികമായി സൃഷ്ടിക്കുന്നു അദ്വിതീയ സൂചിക. എന്നിരുന്നാലും, ഞങ്ങൾ സൃഷ്ടിക്കുകയാണെങ്കിൽ അദ്വിതീയ സൂചിക, ഇത് സൃഷ്ടിക്കില്ല പ്രാഥമിക പ്രധാന നിയന്ത്രണങ്ങൾ. ഒരു പട്ടികയ്ക്ക് ഒരു പ്രാഥമിക കീ മാത്രമേ ഉണ്ടാകൂ, പ്രാഥമിക കീ.

ജീവനക്കാരുടെ ഒരു ലിസ്റ്റ് ഉള്ള ഒരു ടേബിൾ നിങ്ങൾക്കുണ്ടെന്ന് പറയാം. ലാസ്റ്റ് നെയിം ഫീൽഡിൽ അടങ്ങിയിരിക്കാം ഒരേ മൂല്യങ്ങൾ(പേരുകൾ), അതിനാൽ ഇത് ഒരു പ്രാഥമിക കീ ആയി ഉപയോഗിക്കാൻ കഴിയില്ല. ഇത് അപൂർവമാണ്, എന്നാൽ അതേ പേരുകളുള്ള പേരുകൾ ഉണ്ട്. അതിലും അപൂർവ്വമായി, പൂർണ്ണമായ പേരുകൾ ഉണ്ട്, അതിനാൽ "അവസാന നാമം" + "ആദ്യ നാമം" + "പാട്രോണിമിക്" എന്ന മൂന്ന് ഫീൽഡുകൾക്കും റെക്കോർഡിൻ്റെ പ്രത്യേകത ഉറപ്പ് നൽകാൻ കഴിയില്ല, മാത്രമല്ല പ്രാഥമിക കീ ആകാനും കഴിയില്ല. IN ഈ സാഹചര്യത്തിൽപരിഹാരം, മുമ്പത്തെ പോലെ, ഉൾക്കൊള്ളുന്ന ഒരു ഐഡൻ്റിഫയർ ഫീൽഡ് ചേർക്കുക എന്നതാണ് സീരിയൽ നമ്പർ ഈ വ്യക്തിയുടെ. അത്തരം ഫീൽഡുകൾ സാധാരണയായി യാന്ത്രിക-വർദ്ധനവ് ഉണ്ടാക്കുന്നു (അടുത്ത പ്രഭാഷണങ്ങളിൽ ഓട്ടോ-ഇൻക്രിമെൻ്റിംഗ് ഫീൽഡുകൾ സംഘടിപ്പിക്കുന്നതിനെക്കുറിച്ച് ഞങ്ങൾ സംസാരിക്കും). അതിനാൽ,

പ്രാഥമിക കീ ഒരു പട്ടികയിലെ ഒന്നോ അതിലധികമോ ഫീൽഡുകളാണ്, ഇവയുടെ സംയോജനം ഓരോ റെക്കോർഡിനും തനതായതാണ്.

പ്രാഥമിക കീയിൽ ഒരൊറ്റ കോളം അടങ്ങിയിട്ടുണ്ടെങ്കിൽ (മിക്കപ്പോഴും സംഭവിക്കുന്നത് പോലെ), പ്രൈമറി കീ സ്പെസിഫയർ എപ്പോൾ ഉപയോഗിക്കുന്നു നിര നിർവചനം:

ടേബിൾ പ്രിം_1 സൃഷ്‌ടിക്കുക (Stolbec1 INT ശൂന്യമായ പ്രാഥമിക കീ അല്ല, Stolbec2 VARCHAR(50))

പ്രൈമറി കീ നിരവധി നിരകളിലാണ് നിർമ്മിച്ചിരിക്കുന്നതെങ്കിൽ, എല്ലാ ഫീൽഡുകളും നിർവചിച്ചതിന് ശേഷം സ്പെസിഫയർ സ്ഥാപിക്കുന്നു:

ടേബിൾ സൃഷ്‌ടിക്കുക പ്രിം_2(Stolbec1 INT NULL അല്ല, Stolbec2 VARCHAR(50) NULL അല്ല, പ്രാഥമിക താക്കോൽ (Stolbec1, Stolbec2))

ഉദാഹരണങ്ങളിൽ നിന്ന് കാണാൻ കഴിയുന്നതുപോലെ, പ്രാഥമിക കീ NULL NULL നിര(കൾ) പരിമിതി ഉണ്ടായിരിക്കണം.

തനത്

തനത്- അതുല്യമായ കീ. എല്ലാ മൂല്യങ്ങളും UNIQUE സ്പെസിഫയർ സൂചിപ്പിക്കുന്നു ഈ ഫീൽഡിൻ്റെഅദ്വിതീയമായിരിക്കണം, അതിനാൽ അത്തരം ഫീൽഡുകളിലും മൂല്യങ്ങൾ അടങ്ങിയിരിക്കരുത് ശൂന്യം. അദ്വിതീയ കീ UNIQUE ആണെന്ന് നമുക്ക് പറയാം ഇതര ഓപ്ഷൻപ്രാഥമിക കീ, പക്ഷേ വ്യത്യാസങ്ങളുണ്ട്. പ്രധാന വ്യത്യാസം ഒരു പ്രാഥമിക കീ മാത്രമേ ഉണ്ടാകൂ എന്നതാണ്, അതേസമയം നിരവധി അദ്വിതീയ കീകൾ ഉണ്ടാകാം. കൂടാതെ, ഒരു പ്രൈമറി കീ അല്ലെങ്കിൽ മറ്റ് UNIQUE പരിമിതികൾക്കായി ഉപയോഗിച്ച അതേ നിരകളിൽ ഒരു UNIQUE കൺസ്ട്രൈൻ്റ് നിർമ്മിക്കാൻ കഴിയില്ല. പ്രാഥമിക കീകൾ പോലെയുള്ള അദ്വിതീയ കീകൾ മറ്റ് പട്ടികകളുടെ മാതാപിതാക്കളായ പട്ടികകളിൽ കാണപ്പെടുന്നു.

കൂടെ കോളം പ്രഖ്യാപിച്ചു UNIQUE പരിമിതി, ഒരു പ്രാഥമിക കീ പോലെ, മാതാപിതാക്കളും മാതാപിതാക്കളും തമ്മിലുള്ള റഫറൻഷ്യൽ സമഗ്രത ഉറപ്പാക്കാൻ ഉപയോഗിക്കാം കുട്ടികളുടെ മേശകൾ. ഈ സാഹചര്യത്തിൽ, വിദേശ കീ കുട്ടികളുടെ മേശഈ ഫീൽഡ്(കൾ) റഫർ ചെയ്യും. ഒരു പ്രാഥമിക കീ പോലെ, ഒരു അദ്വിതീയ കീ സൃഷ്ടിക്കുമ്പോൾ, a അദ്വിതീയ സൂചിക. പക്ഷേ മറിച്ചല്ല. ഒരു പ്രാഥമികവും രണ്ട് അദ്വിതീയ കീകളും ഉപയോഗിച്ച് ഒരു പട്ടിക സൃഷ്ടിക്കുന്നതിനുള്ള ഒരു ഉദാഹരണം:

ടേബിൾ സൃഷ്ടിക്കുക Prim_3(Stolbec1 Int NULL Primary Key അല്ല, Stolbec2 VARCHAR(50) NULL Unique അല്ല, Stolbec3 FLOAT NULL Unique അല്ല)

വിദേശ കീ

വിദേശ കീ- ബാഹ്യ കീ. ഇത് വളരെ ശക്തമായ ഉപകരണംപട്ടികകൾ തമ്മിലുള്ള റഫറൻഷ്യൽ സമഗ്രത ഉറപ്പാക്കാൻ, ഇത് ലഭ്യത നിരീക്ഷിക്കാൻ മാത്രമല്ല അനുവദിക്കുന്നു ശരിയായ ലിങ്കുകൾ, മാത്രമല്ല അവ സ്വയമേവ കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നു. വിദേശ കീകൾ മറ്റ് പട്ടികകളിലെ കുട്ടികൾ (കുട്ടികൾ) പട്ടികകളിൽ അടങ്ങിയിരിക്കുന്നു. റഫറൻഷ്യൽ സമഗ്രതപ്രൈമറി അല്ലെങ്കിൽ എന്നതിനെ സൂചിപ്പിക്കുന്ന ഒരു വിദേശ കീയാണ് കൃത്യമായി നൽകുന്നത്

അവസാനം അപ്ഡേറ്റ് ചെയ്തത്: 07/02/2017

വിവിധ ലിങ്കുകളാൽ പരസ്പരം ബന്ധിപ്പിച്ചിരിക്കുന്ന പട്ടികകൾ ഡാറ്റാബേസുകളിൽ അടങ്ങിയിരിക്കാം. ഒരു ബന്ധം വ്യത്യസ്ത തരം എൻ്റിറ്റികൾ തമ്മിലുള്ള ബന്ധത്തെ പ്രതിനിധീകരിക്കുന്നു.

ഒരു ബന്ധം തിരഞ്ഞെടുക്കുമ്പോൾ, പ്രധാന അല്ലെങ്കിൽ പേരൻ്റ് ടേബിൾ (പ്രൈമറി കീ ടേബിൾ / മാസ്റ്റർ ടേബിൾ), ആശ്രിത, ചൈൽഡ് ടേബിൾ ( വിദേശ കീടേബിൾ / ചൈൽഡ് ടേബിൾ). ചൈൽഡ് ടേബിൾ പാരൻ്റ് ടേബിളിനെ ആശ്രയിച്ചിരിക്കുന്നു.

ആശയവിനിമയം സംഘടിപ്പിക്കാൻ വിദേശ കീകൾ ഉപയോഗിക്കുന്നു. ഒരു വിദേശ കീ ഒരു ടേബിളിൽ നിന്നുള്ള ഒന്നോ അതിലധികമോ നിരകളെ പ്രതിനിധീകരിക്കുന്നു, അത് മറ്റൊരു ടേബിളിൽ നിന്നുള്ള സാധ്യതയുള്ള കീയുമാണ്. പ്രധാന പട്ടികയിൽ നിന്നുള്ള പ്രാഥമിക കീയുമായി വിദേശ കീ പൊരുത്തപ്പെടേണ്ടതില്ല. എന്നിരുന്നാലും, ഒരു ചട്ടം പോലെ, ഒരു ആശ്രിത പട്ടികയിൽ നിന്നുള്ള ഒരു വിദേശ കീ പ്രധാന പട്ടികയിൽ നിന്നുള്ള ഒരു പ്രാഥമിക കീയിലേക്ക് പോയിൻ്റ് ചെയ്യുന്നു.

പട്ടികകൾ തമ്മിലുള്ള ബന്ധങ്ങൾ ഇനിപ്പറയുന്ന തരത്തിലാണ്:

    ഒന്ന് മുതൽ ഒന്ന് വരെ

    ഒന്നിൽ നിന്ന് പലതും

    പലതും പലതും(പലതും പലതും)

ഒന്നിൽ നിന്ന് ഒരു ആശയവിനിമയം

ഇത്തരത്തിലുള്ള കണക്ഷൻ പലപ്പോഴും കണ്ടെത്തിയില്ല. ഈ സാഹചര്യത്തിൽ, ഒരു എൻ്റിറ്റിയുടെ ഒരു വസ്തുവിനെ മറ്റൊരു വസ്തുവിൻ്റെ ഒരു വസ്തുവുമായി മാത്രമേ ബന്ധപ്പെടുത്താൻ കഴിയൂ. ഉദാഹരണത്തിന്, ചില സൈറ്റുകളിൽ ഒരു ഉപയോക്താവിന് ഒരു ബ്ലോഗ് മാത്രമേ ഉണ്ടാകൂ. അതായത്, ഒരു ബന്ധം ഉടലെടുക്കുന്നു: ഒരു ഉപയോക്താവ് - ഒരു ബ്ലോഗ്.

പലപ്പോഴും ഇത്തരത്തിലുള്ള കണക്ഷനിൽ ഒന്ന് വിഭജിക്കുന്നത് ഉൾപ്പെടുന്നു വലിയ മേശനിരവധി ചെറിയവയ്ക്ക്. ഈ കേസിലെ പ്രാഥമിക രക്ഷാകർതൃ പട്ടികയിൽ പതിവായി ആക്‌സസ് ചെയ്‌ത ഡാറ്റ അടങ്ങിയിരിക്കുന്നത് തുടരുന്നു, അതേസമയം ചൈൽഡ് ഡിപൻഡൻ്റ് ടേബിൾ സാധാരണയായി കുറച്ച് തവണ ആക്‌സസ് ചെയ്യപ്പെടുന്ന ഡാറ്റ സംഭരിക്കുന്നു.

ഇക്കാര്യത്തിൽ, ആശ്രിത പട്ടികയുടെ പ്രാഥമിക കീ അതേ സമയം പ്രധാന പട്ടികയുടെ പ്രാഥമിക കീയെ പരാമർശിക്കുന്ന ഒരു വിദേശ കീയാണ്.

ഉദാഹരണത്തിന്, ഉപയോക്തൃ പട്ടിക ഉപയോക്താക്കളെ പ്രതിനിധീകരിക്കുന്നു കൂടാതെ ഇനിപ്പറയുന്ന നിരകൾ ഉണ്ട്:

    UserId(id, പ്രാഥമിക കീ)

    പേര് (ഉപയോക്തൃനാമം)

ബ്ലോഗ് പട്ടിക ഉപയോക്തൃ ബ്ലോഗുകളെ പ്രതിനിധീകരിക്കുന്നു കൂടാതെ ഇനിപ്പറയുന്ന കോളങ്ങളും ഉണ്ട്:

    BlogId (ഐഡൻ്റിഫയർ, പ്രാഥമിക, വിദേശ കീ)

    പേര് (ബ്ലോഗിൻ്റെ പേര്)

ഈ സാഹചര്യത്തിൽ, BlogId കോളം ഉപയോക്തൃ പട്ടികയിൽ നിന്ന് UserId കോളത്തിൽ നിന്നുള്ള മൂല്യം സംഭരിക്കും. അതായത്, BlogId കോളം പ്രാഥമികമായും വിദേശ കീയായും പ്രവർത്തിക്കും.

ഒന്ന് മുതൽ പല വരെ ബന്ധം

ഇതാണ് ഏറ്റവും സാധാരണമായ കണക്ഷൻ. ഇത്തരത്തിലുള്ള ബന്ധത്തിൽ, ചൈൽഡ് ടേബിളിൽ നിന്നുള്ള ഒന്നിലധികം വരികൾ പാരൻ്റ് ടേബിളിലെ ഒരു വരിയെ ആശ്രയിച്ചിരിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ബ്ലോഗിൽ നിരവധി ലേഖനങ്ങൾ ഉണ്ടാകാം. ഈ സാഹചര്യത്തിൽ, ബ്ലോഗ് പട്ടിക മാതാപിതാക്കളും ലേഖനങ്ങളുടെ പട്ടിക കുട്ടിയുമാണ്. അതായത്, ഒരു ബ്ലോഗ് - നിരവധി ലേഖനങ്ങൾ. അല്ലെങ്കിൽ മറ്റൊരു ഉദാഹരണം, നിരവധി ഫുട്ബോൾ കളിക്കാർക്ക് ഒരു ഫുട്ബോൾ ടീമിൽ കളിക്കാൻ കഴിയും. അതേ സമയം, ഒരു ഫുട്ബോൾ കളിക്കാരന് ഒരു സമയം ഒരു ടീമിൽ മാത്രമേ കളിക്കാൻ കഴിയൂ. അതായത്, ഒരു ടീം - നിരവധി കളിക്കാർ.

ഉദാഹരണത്തിന്, ബ്ലോഗ് ലേഖനങ്ങളെ പ്രതിനിധീകരിക്കുന്നതും ഇനിപ്പറയുന്ന കോളങ്ങളുള്ളതുമായ ലേഖനങ്ങൾ എന്ന ഒരു പട്ടിക ഉണ്ടാക്കാം:

    ArticleId(id, പ്രാഥമിക കീ)

    BlogId (വിദേശ കീ)

    ശീർഷകം (ലേഖനത്തിൻ്റെ ശീർഷകം)

    വാചകം (ലേഖന വാചകം)

ഈ സാഹചര്യത്തിൽ, ലേഖനങ്ങളുടെ പട്ടികയിൽ നിന്നുള്ള BlogId കോളം ബ്ലോഗ് പട്ടികയിൽ നിന്നുള്ള BlogId കോളത്തിൽ നിന്നുള്ള മൂല്യം സംഭരിക്കും.

പലതും പലതുമായ ബന്ധം

ഇത്തരത്തിലുള്ള ബന്ധത്തിൽ, പട്ടിക A-ൽ നിന്നുള്ള ഒരു വരി, പട്ടിക B-യിൽ നിന്നുള്ള നിരവധി വരികളുമായി ബന്ധപ്പെടുത്താം. അതാകട്ടെ, B-ൽ നിന്നുള്ള ഒരു വരി പട്ടിക A-യിൽ നിന്നുള്ള നിരവധി വരികളുമായി ബന്ധപ്പെടുത്താം. സാധാരണ ഉദാഹരണം- വിദ്യാർത്ഥികളും കോഴ്സുകളും: ഒരു വിദ്യാർത്ഥിക്ക് നിരവധി കോഴ്സുകളിൽ പങ്കെടുക്കാം, അതനുസരിച്ച് നിരവധി വിദ്യാർത്ഥികൾക്ക് ഒരു കോഴ്സിൽ ചേരാം.

മറ്റൊരു ഉദാഹരണം ലേഖനങ്ങളും ടാഗുകളും ആണ്: ഒരു ലേഖനത്തിന് നിരവധി ടാഗുകൾ നിർവചിക്കാം, കൂടാതെ നിരവധി ലേഖനങ്ങൾക്ക് ഒരു ടാഗ് നിർവചിക്കാം.

എന്നാൽ അകത്ത് SQL സെർവർഡാറ്റാബേസ് തലത്തിൽ, രണ്ട് ടേബിളുകൾക്കിടയിൽ നേരിട്ട് പലതും പലതും തമ്മിലുള്ള ബന്ധം സ്ഥാപിക്കാൻ ഞങ്ങൾക്ക് കഴിയില്ല. ഒരു ഓക്സിലറി സ്റ്റേജിംഗ് ടേബിളിലൂടെയാണ് ഇത് ചെയ്യുന്നത്. ചിലപ്പോൾ ഈ സ്റ്റേജിംഗ് ടേബിളിൽ നിന്നുള്ള ഡാറ്റ ഒരു പ്രത്യേക എൻ്റിറ്റിയെ പ്രതിനിധീകരിക്കുന്നു.

ഉദാഹരണത്തിന്, ലേഖനങ്ങളുടെയും ടാഗുകളുടെയും കാര്യത്തിൽ, രണ്ട് നിരകളുള്ള ഒരു ടാഗ് പട്ടിക ഉണ്ടായിരിക്കട്ടെ:

    TagId(ഐഡൻ്റിഫയർ, പ്രാഥമിക കീ)

    വാചകം (ടാഗ് ടെക്സ്റ്റ്)

ഇനിപ്പറയുന്ന ഫീൽഡുകളുള്ള ഒരു ഇൻ്റർമീഡിയറ്റ് പട്ടിക ലേഖന ടാഗുകളും ഉണ്ടായിരിക്കട്ടെ:

    TagId (ഐഡൻ്റിഫയർ, പ്രാഥമിക, വിദേശ കീ)

    ArticleIdId (ഐഡൻ്റിഫയർ, പ്രാഥമിക, വിദേശ കീ)

സാങ്കേതികമായി, നമുക്ക് രണ്ട് ഒന്നിൽ നിന്ന് നിരവധി ബന്ധങ്ങൾ ലഭിക്കും. ArticleTags പട്ടികയിൽ നിന്നുള്ള TagId കോളം ടാഗുകൾ പട്ടികയിൽ നിന്നുള്ള TagId കോളത്തെ പരാമർശിക്കും. ArticleTags പട്ടികയിൽ നിന്നുള്ള ArticleId കോളം ലേഖനങ്ങളുടെ പട്ടികയിൽ നിന്നുള്ള ArticleId നിരയെ പരാമർശിക്കും. അതായത്, ArticleTags പട്ടികയിലെ TagId, ArticleId നിരകൾ ഒരു സംയോജിത പ്രാഥമിക കീയെ പ്രതിനിധീകരിക്കുന്നു, കൂടാതെ ലേഖനങ്ങളും ടാഗ് പട്ടികകളുമായുള്ള ബന്ധത്തിനുള്ള വിദേശ കീകളുമാണ്.

റഫറൻഷ്യൽ ഡാറ്റ സമഗ്രത

പ്രൈമറി മാറ്റുമ്പോൾ ഒപ്പം വിദേശ കീകൾഇനിപ്പറയുന്ന വശം നിരീക്ഷിക്കണം: റഫറൻഷ്യൽ ഡാറ്റ സമഗ്രത(റഫറൻഷ്യൽ ഇൻ്റഗ്രിറ്റി). സ്ഥിരത നിലനിർത്താൻ ഒരേ ഡാറ്റ സംഭരിക്കുന്ന ഒരു ഡാറ്റാബേസിലെ രണ്ട് പട്ടികകൾ എന്നതാണ് ഇതിൻ്റെ അടിസ്ഥാന ആശയം. ഡാറ്റാ സമഗ്രത പട്ടികകൾക്കിടയിൽ ശരിയായ ലിങ്കുകളുള്ള ശരിയായി നിർമ്മിച്ച ബന്ധങ്ങളെ പ്രതിനിധീകരിക്കുന്നു. ഏത് സാഹചര്യത്തിലാണ് ഡാറ്റയുടെ സമഗ്രത ലംഘിക്കപ്പെടുക:

    ഇല്ലാതാക്കൽ അപാകത(ഇല്ലാതാക്കൽ അപാകത). പ്രധാന പട്ടികയിൽ നിന്ന് ഒരു വരി ഇല്ലാതാക്കുമ്പോൾ സംഭവിക്കുന്നു. ഈ സാഹചര്യത്തിൽ, ആശ്രിത പട്ടികയിൽ നിന്നുള്ള വിദേശ കീ റഫറൻസ് തുടരുന്നു ഇല്ലാതാക്കിയ വരിപ്രധാന മേശയിൽ നിന്ന്

    ഉൾപ്പെടുത്തൽ അപാകത(ഉൾപ്പെടുത്തൽ അപാകത). ഒരു ആശ്രിത പട്ടികയിൽ ഒരു വരി ചേർക്കുമ്പോൾ സംഭവിക്കുന്നു. ഈ സാഹചര്യത്തിൽ, ആശ്രിത പട്ടികയിൽ നിന്നുള്ള വിദേശ കീ പ്രധാന പട്ടികയിൽ നിന്നുള്ള ഏതെങ്കിലും വരികളുടെ പ്രാഥമിക കീയുമായി പൊരുത്തപ്പെടുന്നില്ല.

    അപാകതകൾ അപ്ഡേറ്റ് ചെയ്യുക(അനമലി അപ്ഡേറ്റ് ചെയ്യുക). അത്തരമൊരു അപാകതയോടെ, ഒരേ പട്ടികയുടെ നിരവധി വരികളിൽ ഒരേ വസ്തുവിൻ്റെ ഡാറ്റ അടങ്ങിയിരിക്കാം. നിങ്ങൾ ഒരു വരിയിലെ ഡാറ്റ മാറ്റുമ്പോൾ, അത് മറ്റൊരു വരിയിലെ ഡാറ്റയുമായി വൈരുദ്ധ്യമുണ്ടാകാം.

ഇല്ലാതാക്കൽ അപാകത

ഒരു ഇല്ലാതാക്കൽ അപാകത പരിഹരിക്കുന്നതിന്, നിങ്ങൾ ഒരു വിദേശ കീയിൽ രണ്ട് നിയന്ത്രണങ്ങളിൽ ഒന്ന് സജ്ജീകരിക്കണം:

    ഒരു ആശ്രിത പട്ടികയിൽ നിന്നുള്ള ഒരു വരിയ്ക്ക് പ്രധാന പട്ടികയിൽ നിന്ന് ഒരു വരി ആവശ്യമാണെങ്കിൽ, വിദേശ കീയ്ക്കായി ഒരു കാസ്കേഡ് ഇല്ലാതാക്കൽ സജ്ജീകരിച്ചിരിക്കുന്നു. അതായത്, പ്രധാന പട്ടികയിൽ നിന്ന് ഒരു വരി ഇല്ലാതാക്കുമ്പോൾ, ഇല്ലാതാക്കൽ സംഭവിക്കുന്നു ബന്ധപ്പെട്ട സ്ട്രിംഗ്(വരികൾ) ആശ്രിത പട്ടികയിൽ നിന്ന്.

    ഒരു ആശ്രിത പട്ടികയിൽ നിന്നുള്ള ഒരു വരി പ്രധാന പട്ടികയിൽ നിന്നുള്ള ഒരു വരിയുമായി യാതൊരു ബന്ധവും അനുവദിക്കുന്നില്ലെങ്കിൽ (അതായത്, അത്തരമൊരു ബന്ധം ഓപ്ഷണൽ ആണ്), പ്രധാന പട്ടികയിൽ നിന്ന് അനുബന്ധ വരി ഇല്ലാതാക്കുമ്പോൾ വിദേശ കീ NULL ആയി സജ്ജീകരിക്കും. വിദേശ കീ കോളം അസാധുവായിരിക്കണം.

ഉൾപ്പെടുത്തൽ അപാകത

ഒരു ആശ്രിത പട്ടികയിലേക്ക് ഡാറ്റ ചേർക്കുമ്പോൾ ഒരു ഇൻസേർട്ട് അപാകത പരിഹരിക്കുന്നതിന്, വിദേശ കീയെ പ്രതിനിധീകരിക്കുന്ന കോളം അസാധുവായിരിക്കണം. അതിനാൽ, ചേർത്ത ഒബ്‌ജക്റ്റിന് പ്രധാന പട്ടികയുമായി ബന്ധമില്ലെങ്കിൽ, വിദേശ കീ കോളത്തിൽ ഒരു NULL മൂല്യം അടങ്ങിയിരിക്കും.

അപാകതകൾ അപ്ഡേറ്റ് ചെയ്യുക

അപ്ഡേറ്റ് അപാകതയുടെ പ്രശ്നം പരിഹരിക്കുന്നതിന്, നോർമലൈസേഷൻ ഉപയോഗിക്കുന്നു, അത് പിന്നീട് ചർച്ചചെയ്യും.

ഒരു ടേബിളിനുള്ളിലെ ഓരോ റെക്കോർഡിനും ഒരു പ്രത്യേക സ്വഭാവമാണ് പ്രാഥമിക കീ. ആക്സസ് രണ്ട് തരത്തിലുള്ള പ്രാഥമിക കീകളെ പിന്തുണയ്ക്കുന്നു: ലളിതവും സംയുക്തവും.

വേഷത്തിൽ ലളിതമായ കീഈ ഫീൽഡിൽ ശൂന്യമോ തനിപ്പകർപ്പോ മൂല്യങ്ങൾ അടങ്ങിയിട്ടില്ലെങ്കിൽ, നിലവിലുള്ള പട്ടിക ഫീൽഡുകളിൽ ഒന്നായിരിക്കാം. അത്തരം ഫീൽഡുകളുടെ ഉദാഹരണങ്ങൾ വാഹന നമ്പറുകൾ, ഇൻവെൻ്ററി നമ്പറുകൾ, തിരിച്ചറിയൽ കോഡുകൾ എന്നിവ ആകാം. രണ്ടോ അതിലധികമോ ഡാറ്റ ഘടകങ്ങളുടെ സംയോജനമായാണ് ഒരു കോമ്പോസിറ്റ് കീ നിർമ്മിച്ചിരിക്കുന്നത്. എംപ്ലോയീസ് ടേബിളിനായി, ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് സൈദ്ധാന്തികമായി രണ്ട് ഫീൽഡുകൾ, ലാസ്റ്റ് നെയിം, ഫസ്റ്റ് നെയിം എന്നിവയുടെ സംയോജനം പ്രാഥമിക കീയായി ഉപയോഗിക്കാം. എന്നിരുന്നാലും, കമ്പനിയിൽ ഇതിനകം ജോലി ചെയ്തിട്ടുള്ള ഒരാളുടെ പേരിൻ്റെ അതേ പേരിലുള്ള മറ്റൊരു ജീവനക്കാരൻ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്.

വ്യക്തമായും, പ്രാഥമിക കീ എന്ന് അവകാശപ്പെടുന്ന ഫീൽഡ്(കൾ) വളരെ കർശനമായ ആവശ്യകതകൾക്ക് വിധേയമാണ്. അതിനാൽ, ഒരു കീയുടെ പ്രവർത്തനങ്ങൾ നിർവഹിക്കുന്ന ഒരു പ്രത്യേക തിരിച്ചറിയൽ ഫീൽഡ് സൃഷ്ടിക്കുന്നത് സാധാരണമാണ് (ഉദാഹരണത്തിന്, കസ്റ്റമർ കോഡ്, ഓർഡർ കോഡ്). ഓരോന്നും കൂട്ടിച്ചേർത്ത് പുതിയ പ്രവേശനംറെക്കോർഡ് അദ്വിതീയമായി തിരിച്ചറിയുന്ന ഒരു പ്രത്യേക മൂല്യം (സാധാരണയായി സംഖ്യാ) പട്ടികയിൽ ഈ ഫീൽഡിൽ നൽകിയിട്ടുണ്ട്. IN ആപ്ലിക്കേഷൻ ആക്സസ് ചെയ്യുകകൗണ്ടർ ഡാറ്റ തരം ഉപയോഗിച്ച് അത്തരം നമ്പറിംഗ് സംഘടിപ്പിക്കാം, അത് ഓരോ പുതിയ റെക്കോർഡിനും അതിൻ്റേതായ നമ്പർ നൽകുന്നു, 1 (അല്ലെങ്കിൽ ക്രമരഹിതമായി) വർദ്ധനവിൽ സംഖ്യകളുടെ ഒരു ശ്രേണി സൃഷ്ടിക്കുന്നു.

ആക്‌സസിലെ കീകൾക്കായി അംഗീകരിച്ച അടിസ്ഥാന നിയമങ്ങളുണ്ട്:

    സൗകര്യാർത്ഥം, പ്രധാന ഫീൽഡ് സാധാരണയായി പട്ടിക ഘടനയിൽ ആദ്യം ലിസ്റ്റ് ചെയ്യും;

    ഒരു പട്ടികയ്ക്ക് ഒരു പ്രാഥമിക കീ ഉണ്ടെങ്കിൽ, ആക്സസ് പ്രോഗ്രാംഈ ഫീൽഡിലെ തനിപ്പകർപ്പ് എൻട്രികൾ യാന്ത്രികമായി തടയുന്നു, അല്ലെങ്കിൽ ശൂന്യമായ മൂല്യങ്ങൾ(ശൂന്യം);

    പ്രാഥമിക കീ ഉപയോഗിച്ച് ടേബിൾ റെക്കോർഡുകളെ ആക്‌സസ് സ്വയമേവ അടുക്കുന്നു;

    റെക്കോർഡുകൾ അടുക്കുന്നതും തിരയുന്നതും വേഗത്തിലാക്കുന്ന ഒരു സൂചികയാണ് പ്രാഥമിക കീ ഫീൽഡ്.

ഒരു പട്ടികയ്‌ക്കായി പ്രാഥമിക കീ സജ്ജീകരിക്കുന്നതിനും ഡിസൈൻ കാഴ്‌ചയിൽ അതിൻ്റെ സൃഷ്‌ടി പൂർത്തിയാക്കുന്നതിനും, ഈ ഘട്ടങ്ങൾ പാലിക്കുക:

    ഡിസൈൻ മോഡിൽ, പ്രാഥമിക കീ ആയി പ്രവർത്തിക്കുന്ന ഫീൽഡ് തിരഞ്ഞെടുക്കുക;

    ടേബിൾ ഡിസൈനർ ടൂൾബാറിലെ കീ ഫീൽഡ് ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക അല്ലെങ്കിൽ പ്രധാന മെനു കമാൻഡ് തിരഞ്ഞെടുക്കുക എഡിറ്റ് - കീ ഫീൽഡ് (തിരഞ്ഞെടുത്ത ഫീൽഡിൻ്റെ പേരിന് അടുത്തായി ഇടതുവശത്ത് ഒരു കീ ചിഹ്നം ദൃശ്യമാകും);

    കീ ഫീൽഡ് വ്യക്തമാക്കിയ ശേഷം, പട്ടിക സംരക്ഷിക്കപ്പെടണം, ഇതിനായി നിങ്ങൾ ടേബിൾ ഡിസൈനർ ടൂൾബാറിലെ സേവ് ബട്ടണിൽ ക്ലിക്കുചെയ്യേണ്ടതുണ്ട്, തുറക്കുന്ന വിൻഡോയിൽ, പട്ടികയുടെ പേര് നൽകി ശരി ബട്ടണിൽ ക്ലിക്കുചെയ്യുക.

ഒരു പ്രാഥമിക കീ നിർവചിച്ചിട്ടില്ലെങ്കിൽ, നിങ്ങൾ ഡിസൈൻ മോഡിൽ നിന്ന് പുറത്തുകടക്കുമ്പോൾ ഒരു മുന്നറിയിപ്പ് ദൃശ്യമാകും, കൂടാതെ പട്ടിക അടയ്ക്കുന്നതിന് മുമ്പ് ഒരു കീ ഫീൽഡ് സൃഷ്ടിക്കാൻ ആക്സസ് നിങ്ങളെ പ്രേരിപ്പിക്കുന്നു.

17. കണക്ഷനുകളുടെ തരങ്ങളും അവ നടപ്പിലാക്കലും. റഫറൻഷ്യൽ സമഗ്രതയും അതിൻ്റെ നിർവ്വഹണവും.

ഒരു റിലേഷണൽ ഡാറ്റാബേസിൽ, ബന്ധങ്ങൾ ഡാറ്റ റിഡൻഡൻസി ഒഴിവാക്കുന്നു. ഉദാഹരണത്തിന്, നിങ്ങൾ പുസ്‌തകങ്ങളെക്കുറിച്ചുള്ള വിവരങ്ങൾ അടങ്ങിയ ഒരു ഡാറ്റാബേസ് സൃഷ്‌ടിക്കുകയാണെങ്കിൽ, ഓരോ പുസ്‌തകത്തിൻ്റെയും ശീർഷകം, പ്രസിദ്ധീകരണ തീയതി, പ്രസാധകൻ എന്നിങ്ങനെയുള്ള പാരാമീറ്ററുകൾ സംഭരിക്കുന്ന "ബുക്കുകൾ" എന്ന പട്ടികയിൽ നിങ്ങൾ അവസാനിക്കും. കൂടാതെ, ഉണ്ട് അധിക വിവരംനിങ്ങൾ സംഭരിക്കാൻ ആഗ്രഹിക്കുന്ന പ്രസാധകനെക്കുറിച്ചുള്ള അവരുടെ ഫോൺ നമ്പർ, വിലാസം, കൂടാതെ പിൻകോഡ്. നിങ്ങൾ അവ പുസ്‌തകങ്ങളുള്ള ഒരു മേശയിൽ സൂക്ഷിക്കുകയാണെങ്കിൽ, പ്രസാധകൻ പ്രസിദ്ധീകരിച്ച ഓരോ പുസ്തകത്തിനും പ്രസാധകൻ്റെ ഫോൺ നമ്പർ ആവർത്തിക്കും.

ഒരു പ്രത്യേക "പ്രസാധകർ" പട്ടികയിൽ പ്രസാധകരെക്കുറിച്ചുള്ള വിവരങ്ങൾ സ്ഥാപിക്കുക എന്നതാണ് കൂടുതൽ ശരിയായ ഓപ്ഷൻ. ഈ സാഹചര്യത്തിൽ, "ബുക്കുകൾ" പട്ടികയിൽ "പ്രസാധകർ" പട്ടികയിലെ റെക്കോർഡുകളിലേക്കുള്ള ലിങ്കുകൾ അടങ്ങിയിരിക്കും.

സമന്വയം നിലനിർത്താൻ, നിങ്ങൾ ബുക്‌സ്, പബ്ലിഷേഴ്‌സ് ടേബിളുകൾക്കിടയിൽ ഡാറ്റ സമഗ്രത ഉറപ്പാക്കണം. ഒരു പട്ടികയിലെ ഡാറ്റ മറ്റൊന്നിലെ ഡാറ്റയുമായി പൊരുത്തപ്പെടുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ ഡാറ്റ ഇൻ്റഗ്രിറ്റി ബന്ധങ്ങൾ നിങ്ങളെ സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ബുക്‌സ് ടേബിളിലെ ഓരോ പുസ്തകവും പ്രസാധകരുടെ പട്ടികയിലെ ഒരു പ്രത്യേക പ്രസാധകനുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. ഡാറ്റാബേസിൽ ഇല്ലാത്ത ഒരു പ്രസാധകൻ്റെ പട്ടികയിൽ ഒരു പുസ്തകം ചേർക്കുന്നത് അസാധ്യമാണ്.

പട്ടികകൾ തമ്മിലുള്ള ബന്ധങ്ങളുടെ തരങ്ങൾ

ഡാറ്റ താരതമ്യം ചെയ്താണ് ആശയവിനിമയം നടത്തുന്നത് പ്രധാന നിരകൾ; സാധാരണയായി ഇവ രണ്ട് പട്ടികകളിലും ഉള്ള നിരകളാണ് ഒരേ പേരുകൾ. മിക്ക കേസുകളിലും, ഓരോ വരിയിലും ഒരു തനതായ ഐഡൻ്റിഫയർ അടങ്ങിയിരിക്കുന്ന ഒരു പട്ടികയുടെ പ്രാഥമിക കീ മറ്റൊരു പട്ടികയുടെ വിദേശ കീയുമായി പൊരുത്തപ്പെടുന്നു. ഉദാഹരണത്തിന്, നിങ്ങൾ വിൽക്കുന്ന ഓരോ ശീർഷകവും ബുക്‌സ് ടേബിളിൽ (പ്രാഥമിക കീ) ഒരു Title_ID കോളവും സെയിൽസ് ടേബിളിൽ (വിദേശ കീ) ഒരു Title_ID കോളവും സൃഷ്‌ടിച്ച് അതിൻ്റെ വിൽപ്പന വോളിയവുമായി ബന്ധപ്പെടുത്താവുന്നതാണ്.

പട്ടികകൾ തമ്മിൽ മൂന്ന് തരത്തിലുള്ള ബന്ധങ്ങളുണ്ട്. ബന്ധപ്പെട്ട നിരകൾ എങ്ങനെ നിർവചിക്കപ്പെടുന്നു എന്നതിനെ ആശ്രയിച്ചാണ് സൃഷ്ടിക്കപ്പെടുന്ന ബന്ധത്തിൻ്റെ തരം.

ഒന്നിൽ നിന്ന് നിരവധി ബന്ധങ്ങൾ

ഒന്നിൽ നിന്ന് നിരവധി ബന്ധങ്ങളാണ് ഏറ്റവും സാധാരണമായ ബന്ധങ്ങൾ. അത്തരമൊരു ബന്ധം ഉപയോഗിച്ച്, പട്ടിക A യുടെ ഓരോ വരിയും പട്ടിക B യുടെ നിരവധി വരികളുമായി പൊരുത്തപ്പെടാം, എന്നാൽ B യുടെ ഓരോ വരിയും പട്ടിക A യുടെ ഒരു വരിയുമായി മാത്രമേ പൊരുത്തപ്പെടൂ. ഉദാഹരണത്തിന്, പട്ടികകൾക്കിടയിൽ ഒന്നിൽ നിന്ന് നിരവധി ബന്ധം സ്ഥാപിക്കപ്പെടുന്നു. "പ്രസാധകർ", "പുസ്തകങ്ങൾ": ഓരോ പ്രസാധകർക്കും നിരവധി പുസ്തകങ്ങൾ പ്രസിദ്ധീകരിക്കാൻ കഴിയും, എന്നാൽ ഓരോ പുസ്തകവും ഒരു പ്രസാധകൻ മാത്രമാണ് പ്രസിദ്ധീകരിക്കുന്നത്.

ലിങ്ക് ചെയ്‌തിരിക്കുന്ന നിരകളിൽ ഒന്നിന് മാത്രം അദ്വിതീയമായ പരിമിതി ഉള്ളപ്പോൾ അല്ലെങ്കിൽ ഒരു പ്രാഥമിക കീ ആയിരിക്കുമ്പോൾ ഒന്നിൽ നിന്ന് നിരവധി ബന്ധം സൃഷ്ടിക്കപ്പെടുന്നു.

മൈക്രോസോഫ്റ്റ് ആക്‌സസിൽ, ഒരു പ്രാഥമിക കീ യോജിക്കുന്ന ഒന്നിൽ നിന്ന് നിരവധി ബന്ധത്തിൻ്റെ വശം ഒരു കീ ചിഹ്നത്താൽ പ്രതിനിധീകരിക്കുന്നു. വിദേശ കീ യോജിക്കുന്ന ബന്ധത്തിൻ്റെ വശം ഒരു അനന്ത ചിഹ്നത്താൽ സൂചിപ്പിച്ചിരിക്കുന്നു.

പല പല ബന്ധങ്ങൾ

പലതും പലതും തമ്മിലുള്ള ബന്ധം സ്ഥാപിക്കുമ്പോൾ, പട്ടിക എയിലെ ഓരോ വരിയും പട്ടിക ബിയിലെ നിരവധി വരികളുമായി പൊരുത്തപ്പെടും, തിരിച്ചും. ജംഗ്ഷൻ ടേബിൾ എന്ന് വിളിക്കുന്ന മൂന്നാമത്തെ പട്ടിക ഉപയോഗിച്ചാണ് ഇത്തരമൊരു ബന്ധം സൃഷ്ടിക്കുന്നത്, അതിൻ്റെ പ്രാഥമിക കീയിൽ എ, ബി ടേബിളുകളുമായി ബന്ധപ്പെട്ട വിദേശ കീകൾ അടങ്ങിയിരിക്കുന്നു. ഉദാഹരണത്തിന്, "രചയിതാക്കൾ", "ബുക്കുകൾ" എന്നീ ടേബിളുകൾക്കിടയിൽ നിരവധി-പല ബന്ധം സ്ഥാപിക്കപ്പെടുന്നു. ”, ഈ ഓരോ ടേബിളിനും "പുസ്തകങ്ങളുടെ രചയിതാക്കൾ" പട്ടികയ്ക്കും ഇടയിൽ "ഒന്ന് മുതൽ പലത്" എന്ന് ടൈപ്പ് ചെയ്യുന്ന ബന്ധങ്ങൾ ഉപയോഗിച്ച് നിർവ്വചിച്ചിരിക്കുന്നു. BookAuthors പട്ടികയുടെ പ്രാഥമിക കീ "Author_ID" (എഴുത്തുകാരുടെ പട്ടികയുടെ പ്രാഥമിക കീ), "Book_ID" (ശീർഷക പട്ടികയുടെ പ്രാഥമിക കീ) എന്നീ നിരകളുടെ സംയോജനമാണ്.

വൺ-ടു-വൺ കണക്ഷനുകൾ

വൺ-ടു-വൺ ബന്ധം സ്ഥാപിക്കുമ്പോൾ, പട്ടിക എയുടെ ഓരോ വരിയും പട്ടിക ബിയുടെ ഒരു വരിയുമായി മാത്രമേ പൊരുത്തപ്പെടൂ, തിരിച്ചും. രണ്ട് അനുബന്ധ കോളങ്ങളും പ്രാഥമിക കീകളായിരിക്കുമ്പോഴോ അതുല്യമായ നിയന്ത്രണങ്ങൾ ഉള്ളപ്പോഴോ ഒരു വൺ-ടു-വൺ ബന്ധം സൃഷ്ടിക്കപ്പെടുന്നു.

ഇത്തരത്തിലുള്ള ബന്ധം വളരെ അപൂർവമായി മാത്രമേ ഉപയോഗിക്കാറുള്ളൂ, കാരണം ഈ സാഹചര്യത്തിൽ ലിങ്കുചെയ്തിരിക്കുന്ന ഡാറ്റ സാധാരണയായി ഒരൊറ്റ പട്ടികയിൽ സൂക്ഷിക്കാൻ കഴിയും. ഇനിപ്പറയുന്ന സന്ദർഭങ്ങളിൽ നിങ്ങൾക്ക് വൺ-ടു-വൺ ബന്ധം ഉപയോഗിക്കാം:

വളരെയധികം കോളങ്ങൾ അടങ്ങിയ ഒരു പട്ടിക വിഭജിക്കാൻ.

സുരക്ഷാ കാരണങ്ങളാൽ പട്ടികയുടെ ഒരു ഭാഗം ഒറ്റപ്പെടുത്താൻ.

പട്ടിക മായ്‌ക്കുന്നതിലൂടെ ഏറ്റവും എളുപ്പത്തിൽ ഇല്ലാതാക്കാൻ കഴിയുന്ന ഹ്രസ്വകാല ഉപയോഗ ഡാറ്റ സംഭരിക്കുന്നതിന്.

പ്രധാന പട്ടികയുടെ ഒരു ഉപവിഭാഗത്തിന് മാത്രം പ്രസക്തമായ ഡാറ്റ സംഭരിക്കുന്നതിന്.

മൈക്രോസോഫ്റ്റ് ആക്‌സസിൽ, ഒരു പ്രാഥമിക കീയുമായി പൊരുത്തപ്പെടുന്ന വൺ-ടു-വൺ ബന്ധത്തിൻ്റെ വശം ഒരു കീ ചിഹ്നത്താൽ പ്രതിനിധീകരിക്കുന്നു. വിദേശ കീ യോജിക്കുന്ന കക്ഷിയും ഒരു പ്രധാന ചിഹ്നത്താൽ സൂചിപ്പിച്ചിരിക്കുന്നു.

പട്ടികകൾ തമ്മിലുള്ള ബന്ധം സൃഷ്ടിക്കുന്നു

പട്ടികകൾക്കിടയിൽ ഒരു ബന്ധം സ്ഥാപിക്കുമ്പോൾ, ബന്ധപ്പെട്ട ഫീൽഡുകൾക്ക് ഒരേ പേരുകൾ ഉണ്ടാകണമെന്നില്ല. എന്നിരുന്നാലും, പ്രൈമറി കീ ആയ ഫീൽഡ് കൗണ്ടർ തരത്തിലല്ലെങ്കിൽ, അവയ്ക്ക് ഒരേ ഡാറ്റ തരം ഉണ്ടായിരിക്കണം. ഓരോന്നിൻ്റെയും ഫീൽഡ് സൈസ് പ്രോപ്പർട്ടി ഒരേ മൂല്യത്തിൽ സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ മാത്രമേ ഒരു കൗണ്ട് ഫീൽഡ് ഒരു ന്യൂമെറിക് ഫീൽഡുമായി ബന്ധപ്പെടുത്താൻ കഴിയൂ. ഉദാഹരണത്തിന്, ഓരോന്നിൻ്റെയും ഫീൽഡ് സൈസ് പ്രോപ്പർട്ടി ലോംഗ് ഇൻ്റിജറായി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, നിങ്ങൾക്ക് കൗണ്ടറിൻ്റെയും സംഖ്യാ തരങ്ങളുടെയും നിരകൾ ലിങ്ക് ചെയ്യാൻ കഴിയും. ലിങ്ക് ചെയ്‌തിരിക്കുന്ന രണ്ട് കോളങ്ങളും സംഖ്യാ തരം ആണെങ്കിലും, രണ്ട് ഫീൽഡുകൾക്കുമുള്ള ഫീൽഡ് സൈസ് പ്രോപ്പർട്ടി മൂല്യം ഒന്നായിരിക്കണം.