ഡാറ്റ സമഗ്രത എന്ന പദം എന്താണ് സൂചിപ്പിക്കുന്നത്? ഡാറ്റാബേസ് സമഗ്രത. സെമാന്റിക് ഡാറ്റ സമഗ്രത

ഡാറ്റ സമഗ്രതയും സംഭരിച്ച നടപടിക്രമങ്ങളും

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

IN SQL പട്ടികകൾഡാറ്റ സമഗ്രത ഉറപ്പാക്കാൻ സെർവറിനെ വ്യത്യസ്ത തരത്തിലുള്ള നിരവധി പ്രോപ്പർട്ടികൾ ഉപയോഗിച്ച് നിർവചിക്കാം. ഡാറ്റ തരങ്ങൾ, നിർവചനങ്ങൾ എന്നിവ ഇതിൽ ഉൾപ്പെടുന്നു NULL അല്ലഒപ്പം ഡിഫോൾട്ട്, പ്രോപ്പർട്ടികൾ ഐഡന്റിറ്റി, നിയന്ത്രണങ്ങൾ, നിയമങ്ങൾ, ട്രിഗറുകൾ, സൂചികകൾ.

ഈ വിഭാഗത്തിൽ, ഈ എല്ലാ ഡാറ്റാ ഇന്റഗ്രിറ്റി രീതികളെക്കുറിച്ചും SQL സെർവർ പിന്തുണയ്ക്കുന്ന ഡാറ്റാ ഇന്റഗ്രിറ്റി തരങ്ങളെക്കുറിച്ചും ഞങ്ങൾ പഠിക്കും. ഞങ്ങളും കുറച്ച് സമയം നീക്കിവെക്കും വിവിധ തരംഎന്റിറ്റി, ഡൊമെയ്ൻ, റഫറൻഷ്യൽ, ഉപയോക്തൃ നിർവചിച്ച സമഗ്രത എന്നിവ ഉൾപ്പെടെയുള്ള ഡാറ്റാ സമഗ്രത.

ഡാറ്റയുടെ സമഗ്രത ഉറപ്പാക്കുന്നത് ഡാറ്റയുടെ ഗുണനിലവാരം ഉറപ്പാക്കുന്നു. ഡാറ്റാബേസിൽ ഞങ്ങൾ ഒരു ടേബിൾ ഉണ്ടാക്കി എന്ന് കരുതുക വ്യക്തികൾ. നിരയുടെ മൂല്യം പേഴ്സൺഐഡിപട്ടികയിൽ വിവരങ്ങൾ നൽകിയിട്ടുള്ള ഓരോ വ്യക്തിയെയും അദ്വിതീയമായി തിരിച്ചറിയണം. അങ്ങനെ, മൂല്യമാണെങ്കിൽ പേഴ്സൺഐഡിഒരു നിശ്ചിത വ്യക്തിക്ക് 834 ആണ്, പിന്നെ മറ്റൊരു വ്യക്തിക്കും ഈ മൂല്യം സമാനമാകില്ല. അടുത്തതായി, ഒരു കോളം ഉണ്ടെന്ന് കരുതുക വ്യക്തി റേറ്റിംഗ്, വ്യക്തികളുടെ റേറ്റിംഗ് നിർണ്ണയിക്കുന്നത് - 1 മുതൽ 10 വരെയുള്ള ശ്രേണിയിൽ. ഈ സാഹചര്യത്തിൽ, കോളം വ്യക്തി റേറ്റിംഗ്നമ്പർ 11 അല്ലെങ്കിൽ 1 മുതൽ 10 വരെയുള്ള സംഖ്യകൾ ഒഴികെയുള്ള മറ്റേതെങ്കിലും മൂല്യം സ്വീകരിക്കരുത്. രണ്ട് സാഹചര്യങ്ങളിലും, ഡാറ്റ സമഗ്രത ഉറപ്പാക്കാൻ SQL സെർവർ പിന്തുണയ്ക്കുന്ന രീതികളിൽ ഒന്ന് നിങ്ങൾ ഉപയോഗിക്കണം.

ഡാറ്റ സമഗ്രത ഉറപ്പാക്കാൻ രൂപകൽപ്പന ചെയ്ത SQL സെർവർ രീതികളിൽ നിർവചനങ്ങളും ഉൾപ്പെടുന്നു NULL അല്ലഒപ്പം ഡിഫോൾട്ട്, പ്രോപ്പർട്ടികൾ ഐഡന്റിറ്റി, നിയന്ത്രണങ്ങൾ, നിയമങ്ങൾ, ട്രിഗറുകൾ, സൂചികകൾ. അവയിൽ ചിലത് ഇതിനകം സൂചിപ്പിച്ചിട്ടുണ്ട്, അവ ഇവിടെ നൽകിയിരിക്കുന്നു ഹൃസ്വ വിവരണം. നിർവചനങ്ങൾ പോലുള്ള ചില പട്ടിക പ്രോപ്പർട്ടികൾ NULL അല്ലഒപ്പം ഡിഫോൾട്ട്, ചിലപ്പോൾ ഒരു പ്രത്യേക തരം പരിമിതിയായി കണക്കാക്കപ്പെടുന്നു. എന്നിരുന്നാലും, ഞങ്ങളുടെ കോഴ്‌സിന്റെ ലക്ഷ്യങ്ങൾക്ക് അനുസൃതമായി, അവ നിയന്ത്രണങ്ങളിൽ നിന്ന് പ്രത്യേകമായി പരിഗണിക്കപ്പെടുന്നു.

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



ഉദാഹരണത്തിന്, ഒരു ഡാറ്റ തരം നിർവചിച്ചിരിക്കുന്ന ഒരു കോളത്തിൽ നിങ്ങൾക്ക് അവസാന നാമം സംഭരിക്കാൻ കഴിയില്ല തീയതി സമയം, കാരണം ഈ ഡാറ്റ തരം ഉള്ള ഒരു കോളം തീയതികൾ മാത്രമേ സ്വീകരിക്കുകയുള്ളൂ.

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

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

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

SQL സെർവർ എങ്ങനെയാണ് ഡാറ്റാ സമഗ്രത സ്വയമേവ നടപ്പിലാക്കുന്നത് എന്ന് നിർവ്വചിക്കാൻ നിയന്ത്രണങ്ങൾ നിങ്ങളെ അനുവദിക്കുന്നു. സാധുവായ നിര മൂല്യങ്ങൾ പരിശോധിക്കുന്ന നിയമങ്ങളെ നിയന്ത്രണങ്ങൾ നിർവചിക്കുന്നു, അവ സ്റ്റാൻഡേർഡ് ഇന്റഗ്രിറ്റി മെക്കാനിസങ്ങളാണ്. ട്രിഗറുകൾ, നിയമങ്ങൾ അല്ലെങ്കിൽ ഡിഫോൾട്ടുകൾ എന്നിവയെക്കാളും നിയന്ത്രണങ്ങളാണ് അഭികാമ്യം. ഉയർന്ന പ്രവർത്തനക്ഷമതയുള്ള അന്വേഷണ പ്ലാനുകൾ സൃഷ്ടിക്കാൻ ക്വറി ഒപ്റ്റിമൈസർ അവയും ഉപയോഗിക്കുന്നു.

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

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

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

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

ഡാറ്റ ഇന്റഗ്രിറ്റി തരങ്ങൾ

എസ്‌ക്യുഎൽ സെർവർ നാല് തരം ഡാറ്റ ഇന്റഗ്രിറ്റിയെ പിന്തുണയ്ക്കുന്നു: എന്റിറ്റി, ഡൊമെയ്ൻ, റഫറൻഷ്യൽ, യൂസർ-ഡിഫൈൻഡ് ഇന്റഗ്രിറ്റി.

ചില സ്രോതസ്സുകൾ കൂടുതൽ (അല്ലെങ്കിൽ കുറവ്) നാല് തരം ഡാറ്റാ സമഗ്രതയെ നിർവചിക്കുന്നു. എന്നിരുന്നാലും, ലിസ്റ്റുചെയ്തിരിക്കുന്ന നാല് തരങ്ങൾ സാധാരണയായി ഡാറ്റാ സമഗ്രതയുടെ പ്രധാന തരങ്ങളായി കണക്കാക്കപ്പെടുന്നു.

അത്യാവശ്യമായ സമഗ്രത

ഈ സമഗ്രത തരം ഒരു പട്ടിക വരിയെ ചില എന്റിറ്റിയുടെ തനതായ ഉദാഹരണമായി നിർവചിക്കുന്നു. എന്റിറ്റി ഇന്റഗ്രിറ്റി ഒരു പട്ടികയുടെ ഐഡന്റിഫയർ കോളത്തിന്റെയോ പ്രാഥമിക കീയുടെയോ സമഗ്രത ഉറപ്പാക്കുന്നു (ഇൻഡക്സുകൾ, നിയന്ത്രണങ്ങൾ എന്നിവയിലൂടെ തനത്, പ്രൈമറി കീഅല്ലെങ്കിൽ പ്രോപ്പർട്ടികൾ ഐഡന്റിറ്റി).

ഡൊമെയ്ൻ സമഗ്രത

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

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

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

റഫറൻഷ്യൽ സമഗ്രത ഉറപ്പാക്കുമ്പോൾ, ഇനിപ്പറയുന്നവ ചെയ്യുന്നതിൽ നിന്ന് SQL സെർവർ ഉപയോക്താക്കളെ തടയുന്നു:

ആവശ്യമായ റെക്കോർഡ് പ്രധാന പട്ടികയിൽ ഇല്ലെങ്കിൽ അനുബന്ധ പട്ടികയിലേക്ക് റെക്കോർഡുകൾ ചേർക്കുന്നു;

പ്രധാന പട്ടികയിലെ മൂല്യങ്ങൾ മാറ്റുന്നു, ഇത് ബന്ധപ്പെട്ട പട്ടികയിൽ "കുടുങ്ങിയ" റെക്കോർഡുകൾക്ക് കാരണമാകും;

ബാഹ്യ പട്ടികയിൽ അനുബന്ധ റെക്കോർഡുകൾ ഉണ്ടെങ്കിൽ പ്രധാന പട്ടികയിൽ നിന്ന് റെക്കോർഡുകൾ ഇല്ലാതാക്കുന്നു.

നിർമ്മാണത്തിൽ നിന്ന്

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

ഡിസൈൻ നിന്ന്പട്ടിക, കാണുക, പേരുകൾ നിർമ്മിക്കുക എന്നിവയുടെ ഒരു ലിസ്റ്റ് ആണ് ചേരുക, കോമകളാൽ വേർതിരിച്ചിരിക്കുന്നു. ഇനിപ്പറയുന്ന ഉദാഹരണത്തിൽ, പ്രസ്താവനയിൽ തിരഞ്ഞെടുക്കുകഡിസൈൻ നിന്ന്ഒരു പട്ടിക നിർവചിക്കുന്നു വ്യക്തികൾ:

വ്യക്തികളിൽ നിന്ന് * തിരഞ്ഞെടുക്കുക

ഡിസൈൻ നിന്ന്രണ്ട് പട്ടികകൾ അല്ലെങ്കിൽ കാഴ്ചകൾക്കിടയിലുള്ള ചേരലുകൾ നിർവചിക്കാനും ഉപയോഗിക്കുന്നു. അടുത്ത വിഭാഗത്തിൽ കണക്ഷനുകൾ കൂടുതൽ വിശദമായി ചർച്ച ചെയ്യും.

എവിടെ, ഗ്രൂപ്പ് ബൈ, കൂടാതെ ക്ലോസുകൾ ഉണ്ട്

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

വ്യക്തി ഐഡി, അവസാന നാമം, ആദ്യനാമം എന്നിവ തിരഞ്ഞെടുക്കുക

ജന്മസ്ഥലം = "ക്രാസ്നോയാർസ്ക്"

ഡിസൈൻ ഉള്ളത്, സാധാരണയായി (എന്നാൽ നിർബന്ധമില്ല) നിർമ്മാണത്തോടൊപ്പം ഉപയോഗിക്കുന്നു ഗ്രൂപ്പ് പ്രകാരം. ഡിസൈൻ ഉള്ളത്നിർമ്മാണം നിർവചിച്ച ഫിൽട്ടറിംഗ് പൂർത്തിയാക്കിയ ശേഷം പ്രയോഗിക്കുന്ന അധിക ഫിൽട്ടറുകൾ വ്യക്തമാക്കുന്നു എവിടെ. പ്രസ്താവനയിൽ ഇനിപ്പറയുന്ന സ്ക്രിപ്റ്റിൽ തിരഞ്ഞെടുക്കുകഉപയോഗിച്ച ഡിസൈനുകൾ എവിടെ, ഗ്രൂപ്പ് പ്രകാരംഒപ്പം ഉള്ളത്:

OrdD1OrderId, OrderId ആയി തിരഞ്ഞെടുക്കുക,

SUM(OrdD1.Quantity) AS "യൂണിറ്റുകൾ വിറ്റു",

SUM(OrdD1.UnitPrice * OrdD1.Quantity) AS വരുമാനം

OrdD1 എന്നതിൽ നിന്ന്

OrdD1OrderId എവിടെയാണ് (ഡിസ്റ്റിംഗ് OrdD2.OrderId തിരഞ്ഞെടുക്കുക

OrdD2 എന്നതിൽ നിന്ന്

എവിടെ OrdD2.UnitPrice > $1000)

OrdD1.OrderId പ്രകാരം ഗ്രൂപ്പ്

തുക (OrdD1. ക്വാണ്ടിറ്റി) > 50 ഉണ്ട്

ഡിസൈൻ ഇതാ എവിടെ$1000-ൽ കൂടുതൽ വിലയുള്ള ഓർഡറുകൾ തിരികെ നൽകുന്നു, തുടർന്ന് ഡിസൈൻ ഉള്ളത് 50 യൂണിറ്റിലധികം സാധനങ്ങൾക്കുള്ള ഓർഡറുകൾ തിരഞ്ഞെടുത്ത് ഫലം പരിമിതപ്പെടുത്തുന്നു. ഡിസൈൻ ഗ്രൂപ്പ് പ്രകാരംഓരോ നിർദ്ദിഷ്ട ഫീൽഡ് മൂല്യത്തിനും വരികൾ പരിമിതപ്പെടുത്തുന്നു ഓർഡർ ഐഡി.

ക്ലോസ് പ്രകാരം ഗ്രൂപ്പ്

ഡിസൈൻ ഗ്രൂപ്പ് പ്രകാരംഫല സെറ്റിന്റെ ഓരോ വരിയിലും മൊത്തം മൂല്യങ്ങൾ ലഭിക്കാൻ ഉപയോഗിക്കുന്നു. ഓപ്പറേറ്റർ ഉപയോഗിക്കുമ്പോൾ തിരഞ്ഞെടുക്കുകഡിസൈൻ ഇല്ലാതെ ഗ്രൂപ്പ് പ്രകാരം മൊത്തത്തിലുള്ള പ്രവർത്തനങ്ങൾഒരു അന്തിമ മൂല്യം മാത്രം തിരികെ നൽകുക.

കീവേഡുകൾക്ക് ശേഷം ഗ്രൂപ്പ് പ്രകാരംനിരകളുടെ ഒരു ലിസ്റ്റ് പിന്തുടരുന്നു, അവയെ ഗ്രൂപ്പിംഗ് കോളങ്ങൾ എന്ന് വിളിക്കുന്നു. ഡിസൈൻ ഗ്രൂപ്പ് പ്രകാരംഫല സെറ്റിന്റെ വരികൾ പരിമിതപ്പെടുത്തുന്നു. ഗ്രൂപ്പിംഗ് കോളത്തിന്റെയോ നിരകളുടെയോ ഓരോ നിർദ്ദിഷ്ട മൂല്യത്തിനും ഒരു വരി മാത്രമേ സാധ്യമാകൂ. ഒരു ഫല സെറ്റിന്റെ ഓരോ വരിയിലും അതിന്റെ ഗ്രൂപ്പിംഗ് കോളങ്ങളിലെ ചില മൂല്യങ്ങളുമായി ബന്ധപ്പെട്ട മൊത്തങ്ങൾ അടങ്ങിയിരിക്കുന്നു.

ഓപ്പറേറ്ററിലാണെങ്കിൽ തിരഞ്ഞെടുക്കുകഒരു ഡിസൈൻ ഉണ്ട് ഗ്രൂപ്പ് പ്രകാരംതിരഞ്ഞെടുത്ത ലിസ്റ്റ് ഇനങ്ങളിൽ SQL സെർവർ നിയന്ത്രണങ്ങൾ ഏർപ്പെടുത്തുന്നു. സെലക്ട് ലിസ്റ്റിൽ, ഗ്രൂപ്പിംഗ് കോളങ്ങളുടെ ഓരോ മൂല്യത്തിനും ഒരു മൂല്യം മാത്രം നൽകുന്ന ഗ്രൂപ്പിംഗ് കോളങ്ങളും എക്‌സ്‌പ്രഷനുകളും മാത്രമേ ഉൾക്കൊള്ളാൻ കഴിയൂ, അതായത്, കോളത്തിന്റെ പേര് അവയുടെ പാരാമീറ്ററുകളിലൊന്നായ അഗ്രഗേറ്റ് ഫംഗ്‌ഷനുകൾ (വെക്‌റ്റർ അഗ്രഗേറ്റുകൾ).

സാധാരണയായി, ഡിസൈൻ ഉള്ളത്ഡിസൈനിനൊപ്പം ഉപയോഗിച്ചു ഗ്രൂപ്പ് പ്രകാരം, ഇത് പ്രത്യേകം ഉപയോഗിക്കാമെങ്കിലും. മൊത്തത്തിലുള്ള ഫംഗ്‌ഷനുകൾ അടങ്ങിയിട്ടില്ലാത്തിടത്തോളം ഏത് പദപ്രയോഗവും ഒരു ഗ്രൂപ്പിംഗ് എക്‌സ്‌പ്രഷനായി മാറും.

രൂപകൽപ്പനയിൽ ഗ്രൂപ്പ് പ്രകാരംനിങ്ങൾ പട്ടിക വ്യക്തമാക്കണം അല്ലെങ്കിൽ നിരയുടെ പേര് കാണണം, കൺസ്ട്രക്‌റ്റ് ഉപയോഗിച്ച് അസൈൻ ചെയ്‌ത ഫല സെറ്റ് കോളത്തിന്റെ പേരല്ല എ.എസ്.

രൂപകൽപ്പനയിൽ ഗ്രൂപ്പ് പ്രകാരംനെസ്റ്റഡ് ഗ്രൂപ്പുകളായി നിരവധി നിരകൾ വ്യക്തമാക്കുന്നത് അനുവദനീയമാണ്, അതായത്, നിരകളുടെ ഏതെങ്കിലും കോമ്പിനേഷൻ ഉപയോഗിച്ച് പട്ടിക ഗ്രൂപ്പുചെയ്യുക.

നിർമ്മാണങ്ങൾ പ്രയോഗിക്കുന്ന ശരിയായ ക്രമം മനസ്സിലാക്കുന്നു എവിടെ, ഗ്രൂപ്പ് പ്രകാരംഒപ്പം ഉള്ളത്, സാമാന്യം കാര്യക്ഷമമായ ചോദ്യങ്ങൾ സൃഷ്ടിക്കാൻ സഹായിക്കുന്നു:

ഡിസൈൻ എവിടെ FROM ക്ലോസിൽ വ്യക്തമാക്കിയ പ്രവർത്തനങ്ങളുടെ ഫലമായ വരികൾ ഫിൽട്ടർ ചെയ്യുന്നു;

ഡിസൈൻ ഔട്ട്പുട്ട് വിവരങ്ങൾ എവിടെഡിസൈൻ പ്രകാരം ഗ്രൂപ്പുചെയ്‌തു ഗ്രൂപ്പ് BY;

ഗ്രൂപ്പുചെയ്‌ത ഫലത്തിന്റെ വരികൾ നിർമ്മാണം വഴി ഫിൽട്ടർ ചെയ്യുന്നു ഉള്ളത്.

ഗ്രൂപ്പിംഗ് പ്രവർത്തനത്തിന് മുമ്പും ശേഷവും ഉപയോഗിക്കാൻ അനുവദിക്കുന്ന ഏതെങ്കിലും തിരയൽ വ്യവസ്ഥകൾ നിർമ്മാണത്തിൽ വ്യക്തമാക്കണം എവിടെ. ഇതുവഴി നിങ്ങൾക്ക് ഗ്രൂപ്പുചെയ്യേണ്ട വരികളുടെ എണ്ണം കുറയ്ക്കാൻ കഴിയും. രൂപകൽപ്പനയിൽ ഉള്ളത്ഗ്രൂപ്പിംഗ് പ്രവർത്തനം പൂർത്തിയായ ശേഷം പ്രയോഗിക്കേണ്ട തിരയൽ പദങ്ങൾ മാത്രമേ നിങ്ങൾ വ്യക്തമാക്കാവൂ.

ക്ലോസ് പ്രകാരം ഓർഡർ ചെയ്യുക

ഡിസൈൻ ഓർഡർ പ്രകാരംഒന്നോ അതിലധികമോ ഫീൽഡുകൾ പ്രകാരം അന്വേഷണ ഫലം അടുക്കുന്നു. അടുക്കുന്നത് ഒന്നുകിൽ ആരോഹണമാകാം ( എ.എസ്.സി.), ഒപ്പം അവരോഹണ ക്രമത്തിൽ ( DESC). അടുക്കൽ തരമൊന്നും വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, സ്ഥിരസ്ഥിതിയാണ് എ.എസ്.സി.. ഡിസൈനിലാണെങ്കിൽ ഓർഡർ പ്രകാരംനിരവധി നിരകൾക്ക് പേരിടുകയും ഒരു നെസ്റ്റഡ് തരം നടത്തുകയും ചെയ്യുന്നു.

ഇനിപ്പറയുന്ന പ്രസ്താവന പട്ടിക വരികൾ അടുക്കുന്നു വ്യക്തികൾആദ്യം അവസാന നാമം (അവരോഹണം), തുടർന്ന് ആദ്യ നാമം (ആരോഹണം, ഓരോ വ്യക്തിക്കും) ഒടുവിൽ പ്രായം (ആരോഹണം, പാരാമീറ്റർ വ്യക്തമാക്കിയിട്ടില്ലാത്തതിനാൽ DESC).

വ്യക്തി, അവസാന നാമം, ആദ്യനാമം, പ്രായം എന്നിവ തിരഞ്ഞെടുക്കുക

അവസാനനാമം DESC, ആദ്യനാമം, പ്രായം എന്നിവ പ്രകാരം ഓർഡർ ചെയ്യുക

പാക്കേജുകൾ, സംഭരിച്ച നടപടിക്രമങ്ങൾ, ട്രിഗറുകൾ

പ്ലാസ്റ്റിക് സഞ്ചിഒന്നോ അതിലധികമോ ട്രാൻസാക്റ്റ്-എസ്‌ക്യുഎൽ സ്റ്റേറ്റ്‌മെന്റുകളുടെ ഒരു ഗ്രൂപ്പാണ്, അത് എക്‌സിക്യൂഷനുവേണ്ടി ഒരു ആപ്ലിക്കേഷൻ ഒരേസമയം SQL സെർവറിലേക്ക് അയയ്ക്കുന്നു. SQL സെർവർ ബാച്ച് പ്രസ്താവനകൾ ഒരു എക്സിക്യൂട്ടബിൾ യൂണിറ്റിലേക്ക് സമാഹരിക്കുന്നു ( നിർവ്വഹണ പദ്ധതിനിർവ്വഹണ പദ്ധതി). ഇതിനുശേഷം, ഈ പ്ലാനിന്റെ ഓപ്പറേറ്റർമാർ ക്രമത്തിൽ നടപ്പിലാക്കുന്നു.

വാക്യഘടന പിശക് പോലെയുള്ള ഒരു കംപൈലേഷൻ പിശക്, എക്സിക്യൂഷൻ പ്ലാൻ കംപൈലേഷൻ പ്രക്രിയ നിർത്തുന്നു. ഈ സാഹചര്യത്തിൽ, പാക്കേജ് പ്രസ്താവനകളൊന്നും നടപ്പിലാക്കില്ല.

ഒരു ഗണിത ഓവർഫ്ലോ അല്ലെങ്കിൽ നിയന്ത്രണ ലംഘനം പോലെയുള്ള ഒരു റൺടൈം പിശകിന് ഇനിപ്പറയുന്ന പരിണതഫലങ്ങളിലൊന്ന് ഉണ്ടാകാം:

മിക്ക റൺടൈം പിശകുകളും ബാച്ചിലെ നിലവിലുള്ളതും തുടർന്നുള്ളതുമായ പ്രസ്താവനകളുടെ നിർവ്വഹണം നിർത്തുന്നു;

നിയന്ത്രണ ലംഘനങ്ങൾ പോലുള്ള ചില റൺടൈം പിശകുകൾ, നിലവിലെ പ്രസ്താവനയുടെ നിർവ്വഹണം നിർത്തുന്നു. ഈ സാഹചര്യത്തിൽ, പാക്കേജിന്റെ മറ്റെല്ലാ പ്രസ്താവനകളും നടപ്പിലാക്കും.

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

ഉദാഹരണത്തിന്, ഒരു പാക്കേജിൽ 3 പ്രസ്താവനകൾ അടങ്ങിയിരിക്കുന്നു. രണ്ടാമത്തെ പ്രസ്താവനയിൽ അത് അനുവദനീയമാണെങ്കിൽ വാക്യഘടന പിശക്, ബാച്ച് പ്രസ്താവനകളൊന്നും നടപ്പിലാക്കില്ല. പാക്കേജ് ഇതിനകം കംപൈൽ ചെയ്യുകയും രണ്ടാമത്തെ പ്രസ്താവനയുടെ നിർവ്വഹണം പരാജയപ്പെടുകയും ചെയ്താൽ, ആദ്യ പ്രസ്താവനയുടെ ഫലം മാറ്റമില്ലാതെ തുടരും (അത് ഇതിനകം ലഭിച്ചതിനാൽ).

പാക്കറ്റുകൾ പ്രോസസ്സ് ചെയ്യുമ്പോൾ ഇനിപ്പറയുന്ന നിയമങ്ങൾ ബാധകമാണ്:

ഓപ്പറേറ്റർമാർ ഡിഫോൾട്ട് സൃഷ്‌ടിക്കുക, നടപടിക്രമം സൃഷ്ടിക്കുക, റൂൾ സൃഷ്ടിക്കുക, ട്രിഗർ സൃഷ്‌ടിക്കുകഒപ്പം കാഴ്ച സൃഷ്ടിക്കുകമറ്റ് ഓപ്പറേറ്റർമാരുമായി പാക്കേജുകളിൽ ഒരുമിച്ച് നിലനിൽക്കാൻ കഴിയില്ല. പാക്കറ്റ് പ്രസ്താവനയിൽ തുടങ്ങണം സൃഷ്ടിക്കാൻ. ആദ്യ പ്രസ്താവന സൃഷ്ടിച്ച നിർവചനത്തിന്റെ ഭാഗമായി തുടർന്നുള്ള എല്ലാ പ്രസ്താവനകളും വ്യാഖ്യാനിക്കപ്പെടും സൃഷ്ടിക്കാൻ;

അതേ പാക്കേജിനുള്ളിൽ, നിങ്ങൾക്ക് ഒരു പട്ടിക പരിഷ്കരിക്കാനും പുതിയ നിരകൾ ആക്സസ് ചെയ്യാനും കഴിയില്ല;

ഓപ്പറേറ്റർ ആണെങ്കിൽ നിർവ്വഹിക്കുക- പാക്കേജിന്റെ ആദ്യ പ്രസ്താവന, EXECUTE കീവേഡ് ആവശ്യമില്ല. എന്നാൽ ഓപ്പറേറ്റർ ആയിരിക്കുമ്പോൾ അത് ആവശ്യമാണ് നിർവ്വഹിക്കുകപാക്കേജിന്റെ ആദ്യ പ്രസ്താവനയല്ല.

അതിനാൽ, ക്ലയന്റ് അയയ്ക്കുന്ന ഒന്നോ അതിലധികമോ പ്രസ്താവനകളുടെ ഒരു ശേഖരമാണ് പാക്കറ്റ് ഒറ്റ ഗ്രൂപ്പ്. ഓരോ പാക്കേജും കംപൈൽ ചെയ്യുമ്പോൾ, ഒരു എക്സിക്യൂഷൻ പ്ലാൻ ലഭിക്കും. ഒരു പാക്കേജിൽ നിരവധി SQL സ്റ്റേറ്റ്‌മെന്റുകൾ അടങ്ങിയിട്ടുണ്ടെങ്കിൽ, ഓരോ പ്രസ്താവനയും നടപ്പിലാക്കാൻ ആവശ്യമായ ഒപ്റ്റിമൈസ് ചെയ്ത എല്ലാ ഘട്ടങ്ങളിൽ നിന്നും ഒരൊറ്റ എക്‌സിക്യൂഷൻ പ്ലാൻ രൂപീകരിക്കുന്നു.

ഒരു പാക്കേജ് വ്യക്തമാക്കുന്നതിന് നിരവധി മാർഗങ്ങളുണ്ട്.

ഒരു ആപ്ലിക്കേഷൻ സെർവറിലേക്ക് അയയ്‌ക്കുന്ന എല്ലാ SQL പ്രസ്താവനകളും എക്‌സിക്യൂഷൻ യൂണിറ്റായി രൂപപ്പെടുന്നു ഒറ്റ പാക്കേജ്കൂടാതെ ഒരു എക്സിക്യൂഷൻ പ്ലാൻ സൃഷ്ടിക്കുക.

സംഭരിച്ച നടപടിക്രമത്തിലോ ട്രിഗറിലോ ഉള്ള എല്ലാ പ്രസ്താവനകളും ഒരൊറ്റ പാക്കേജായി മാറുന്നു. ഏതെങ്കിലും സംഭരിച്ച നടപടിക്രമമോ ട്രിഗറോ കംപൈൽ ചെയ്യുമ്പോൾ, അത് ഒരൊറ്റ എക്സിക്യൂഷൻ പ്ലാൻ നിർമ്മിക്കുന്നു.

സ്ട്രിംഗ് ഓപ്പറേറ്റർ പ്രോസസ്സ് ചെയ്തു നിർവ്വഹിക്കുക, കംപൈൽ ചെയ്യുമ്പോൾ, ഒരൊറ്റ എക്സിക്യൂഷൻ പ്ലാൻ നിർമ്മിക്കുന്ന ഒരു പാക്കേജായി വ്യാഖ്യാനിക്കപ്പെടുന്നു.

സിസ്റ്റം സംഭരിച്ച നടപടിക്രമം വഴി നടപ്പിലാക്കിയ സ്ട്രിംഗ് sp_executesql, കംപൈൽ ചെയ്യുമ്പോൾ, ഒരൊറ്റ എക്സിക്യൂഷൻ പ്ലാൻ നിർമ്മിക്കുന്ന ഒരു പാക്കേജാണ്.

ഒരു ആപ്ലിക്കേഷൻ പ്രസ്താവന അടങ്ങുന്ന ഒരു പാക്കറ്റ് അയയ്ക്കുകയാണെങ്കിൽ നിർവ്വഹിക്കുക, സ്ട്രിംഗിന്റെ എക്സിക്യൂഷൻ പ്ലാൻ അല്ലെങ്കിൽ പ്രോസസ്സ് ചെയ്യുന്ന സംഭരിച്ച നടപടിക്രമം സ്റ്റേറ്റ്മെന്റ് എക്സിക്യൂഷൻ പ്ലാനിൽ നിന്ന് പ്രത്യേകം എക്സിക്യൂട്ട് ചെയ്യുന്നു. നിർവ്വഹിക്കുക. സംഭരിച്ച നടപടിക്രമം നടപ്പിലാക്കുന്ന ലൈനിനായി എക്സിക്യൂഷൻ പ്ലാൻ സൃഷ്ടിച്ചു sp_executesql, പ്രൊസീജർ കോൾ ഉള്ള ബാക്കി പാക്കേജിന്റെ എക്സിക്യൂഷൻ പ്ലാനിൽ നിന്നും വേർതിരിക്കും sp_executesql.

ഒരു പാക്കേജ് സ്റ്റേറ്റ്‌മെന്റ് ഒരു ട്രിഗറിനെ വിളിക്കുകയാണെങ്കിൽ, ട്രിഗറിന്റെ എക്‌സിക്യൂഷൻ പ്ലാൻ യഥാർത്ഥ പാക്കേജിന്റെ എക്‌സിക്യൂഷൻ പ്ലാനിൽ നിന്ന് പ്രത്യേകം എക്‌സിക്യൂട്ട് ചെയ്യപ്പെടും.

ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന നാല് പ്രസ്താവനകൾ ഉൾക്കൊള്ളുന്ന ഒരു പാക്കേജ് അഞ്ച് എക്സിക്യൂഷൻ പ്ലാനുകൾ സൃഷ്ടിക്കുന്നു:

ഓപ്പറേറ്റർ നിർവ്വഹിക്കുകസംഭരിച്ച നടപടിക്രമം നടപ്പിലാക്കുന്നു;

ഒരു നടപടിക്രമം വിളിക്കുന്നു sp_executesqlഒരു സ്ട്രിംഗ് പ്രോസസ്സ് ചെയ്യാൻ;

ഓപ്പറേറ്റർ നിർവ്വഹിക്കുക, സ്ട്രിംഗ് പ്രോസസ്സ് ചെയ്യുന്നു;

ഓപ്പറേറ്റർ അപ്ഡേറ്റ് ചെയ്യുക, ഇത് ഒരു അപ്‌ഡേറ്റ് ട്രിഗർ ഉള്ള ഒരു പട്ടികയെ സൂചിപ്പിക്കുന്നു.

EXEC ആദ്യ നടപടിക്രമം

EXEC sp_executesql N"SELECT * AdventureWorks.HumanResources.Employee ൽ നിന്ന്

WHERE ManagerID = @level",

N"@ലെവൽ tinyint",

സെറ്റ് വ്യക്തിയുടെ പേര് = "കുക്കു"

സംഭരിച്ച നടപടിക്രമംട്രാൻസാക്റ്റ്-എസ്‌ക്യുഎൽ സ്റ്റേറ്റ്‌മെന്റുകളുടെ ഒരു കൂട്ടമാണ്, അത് ഒരിക്കൽ കംപൈൽ ചെയ്യുകയും പിന്നീട് പലതവണ എക്‌സിക്യൂട്ട് ചെയ്യുകയും ചെയ്യാം. ഈ പ്രവർത്തനം പ്രകടനം മെച്ചപ്പെടുത്തുന്നു, കാരണം ഇത് ട്രാൻസാക്റ്റ്-എസ്‌ക്യുഎൽ സ്റ്റേറ്റ്‌മെന്റുകൾ വീണ്ടും കംപൈൽ ചെയ്യേണ്ടതിന്റെ ആവശ്യകത ഇല്ലാതാക്കുന്നു.

ട്രിഗർഉപയോക്താവ് നേരിട്ട് വിളിക്കാത്ത ഒരു പ്രത്യേക തരം സംഭരിച്ച നടപടിക്രമമാണ്. ഒരു ട്രിഗർ സൃഷ്ടിക്കുമ്പോൾ, അതിന്റെ നിർവ്വഹണത്തിനുള്ള വ്യവസ്ഥകൾ നിർണ്ണയിക്കപ്പെടുന്നു: തന്നിരിക്കുന്ന പട്ടികയിലോ നിരയിലോ ഉള്ള ഡാറ്റയുടെ ഒരു നിശ്ചിത പരിഷ്ക്കരണത്തിന് ശേഷം ട്രിഗർ എക്സിക്യൂട്ട് ചെയ്യണം.

ഓപ്പറേറ്റർമാർ നടപടിക്രമം സൃഷ്ടിക്കുകഒപ്പം ട്രിഗർ സൃഷ്‌ടിക്കുകഒന്നിലധികം പാക്കേജുകളിൽ കണ്ടെത്താൻ കഴിയില്ല. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ഒരു സംഭരിച്ച നടപടിക്രമം അല്ലെങ്കിൽ ട്രിഗർ എല്ലായ്പ്പോഴും ഒരു പാക്കേജിൽ സൃഷ്ടിക്കുകയും ഒരു എക്സിക്യൂഷൻ പ്ലാനിലേക്ക് കംപൈൽ ചെയ്യുകയും ചെയ്യുന്നു.

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

IN മുൻ പതിപ്പുകൾ SQL സെർവറിന്, സംഭരിച്ച നടപടിക്രമങ്ങൾ ഉപയോഗിക്കുമ്പോൾ പ്രകടന നേട്ടങ്ങൾ പ്രത്യേകിച്ചും ശ്രദ്ധേയമാണ്. കൂടുതൽ ആദ്യകാല പതിപ്പുകൾസംഭരിച്ചിരിക്കുന്ന നടപടിക്രമങ്ങളോ ട്രിഗറുകളോ അല്ലാത്ത പാക്കേജുകൾക്കായി എക്സിക്യൂഷൻ പ്ലാനുകൾ വീണ്ടും ഉപയോഗിക്കാൻ SQL സെർവർ ശ്രമിച്ചില്ല. ഒരേ ഒരു വഴി പുനരുപയോഗംഎക്സിക്യൂഷൻ പ്ലാനുകളിൽ SQL പ്രസ്താവനകൾ സംഭരിച്ച നടപടിക്രമങ്ങളായി പ്രോഗ്രാമിംഗ് ഉൾപ്പെടുന്നു.

സംഭരിച്ച നടപടിക്രമങ്ങളുടെയും ട്രിഗറുകളുടെയും എക്സിക്യൂഷൻ പ്ലാൻ, സംഭരിച്ച നടപടിക്രമം അല്ലെങ്കിൽ ട്രിഗർ എന്ന് വിളിക്കുന്ന പാക്കേജിന്റെ എക്സിക്യൂഷൻ പ്ലാനിൽ നിന്ന് പ്രത്യേകം എക്സിക്യൂട്ട് ചെയ്യുന്നു. സംഭരിച്ച നടപടിക്രമങ്ങൾക്കും ട്രിഗറുകൾക്കുമായി എക്‌സിക്യൂഷൻ പ്ലാനുകൾ പതിവായി വീണ്ടും ഉപയോഗിക്കാൻ ഈ സവിശേഷത നിങ്ങളെ അനുവദിക്കുന്നു.

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

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

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

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

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

ഡാറ്റാബേസ് സമഗ്രത എന്നത് ഡാറ്റാബേസിലെ വിവരങ്ങളുടെ ആന്തരിക ലോജിക്, ഘടന, വ്യക്തമായി വ്യക്തമാക്കിയ എല്ലാ നിയമങ്ങളും പാലിക്കുന്നതാണ്. ചില നിയന്ത്രണങ്ങൾ ഏർപ്പെടുത്തുന്ന എല്ലാ നിയമങ്ങളും സാധ്യമായ അവസ്ഥഡാറ്റാബേസിനെ സമഗ്രത പരിമിതി എന്ന് വിളിക്കുന്നു.

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

അതിലൊന്ന് ഏറ്റവും പ്രധാനപ്പെട്ട ജോലികൾഡാറ്റാബേസിൽ സംഭരിച്ചിരിക്കുന്ന ഡാറ്റയുടെ പരസ്പര സ്ഥിരതയും കൃത്യതയും കൃത്യതയും എപ്പോൾ വേണമെങ്കിലും നിലനിർത്തുക എന്നതാണ് DBMS പരിഹരിക്കുന്ന പ്രശ്നം. ഈ പ്രക്രിയയെ ഡാറ്റാബേസ് ഇന്റഗ്രിറ്റി അഷ്വറൻസ് എന്ന് വിളിക്കുന്നു.

ഡാറ്റാബേസ് സമഗ്രത ഉറപ്പാക്കുന്നതിനും അനധികൃത ആക്‌സസ്സിൽ നിന്ന് ഡാറ്റാബേസ് പരിരക്ഷിക്കുന്നതിനുമുള്ള പ്രശ്നങ്ങൾ തമ്മിൽ വേർതിരിച്ചറിയേണ്ടത് ആവശ്യമാണ്. . ഡാറ്റാബേസ് സമഗ്രത നിലനിർത്തുന്നത് ഡാറ്റ പരിരക്ഷിക്കുന്നതായി വ്യാഖ്യാനിക്കാം തെറ്റായ പ്രവർത്തനങ്ങൾഉപയോക്താക്കൾ അല്ലെങ്കിൽ ചില ക്രമരഹിതമായ ബാഹ്യ സ്വാധീനങ്ങൾ. രണ്ട് സാഹചര്യങ്ങളിലും, ഡാറ്റാബേസ് സമഗ്രതയുടെ ലംഘനങ്ങൾ മനഃപൂർവമല്ല.

ഹാർഡ്‌വെയർ പരാജയത്തിന്റെ ഫലമായി ഡാറ്റാബേസിന്റെ സമഗ്രത അപഹരിക്കപ്പെട്ടേക്കാം; സോഫ്റ്റ്വെയർ പിശക് DBMS-ൽ, ഓപ്പറേറ്റിംഗ് സിസ്റ്റംഅഥവാ ആപ്ലിക്കേഷൻ പ്രോഗ്രാം; തെറ്റായ ഉപയോക്തൃ പ്രവർത്തനങ്ങൾ. നിയന്ത്രണ സംവിധാനങ്ങൾ നിലവിലുണ്ടെങ്കിലും, നന്നായി പരീക്ഷിച്ചതും നന്നായി പ്രവർത്തിക്കുന്നതുമായ സിസ്റ്റങ്ങളിൽ പോലും ഈ സാഹചര്യങ്ങൾ ഉണ്ടാകാം. അതിനാൽ, അത്തരം സാഹചര്യങ്ങൾ കണ്ടെത്തുന്നതിനും ഡാറ്റാബേസിന്റെ ശരിയായ അവസ്ഥ പുനഃസ്ഥാപിക്കുന്നതിനുമുള്ള ഒരു മാർഗം DBMS-ന് ഉണ്ടായിരിക്കണം.

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

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

പട്ടികകൾ ആസൂത്രണം ചെയ്യുമ്പോൾ രണ്ടെണ്ണം ഉണ്ട് പ്രധാനപ്പെട്ട ഘട്ടങ്ങൾ: ഒരു കോളത്തിനുള്ള സാധുവായ മൂല്യങ്ങൾ നിർണ്ണയിക്കുകയും ആ കോളത്തിലെ ഡാറ്റയുടെ സമഗ്രത എങ്ങനെ ഉറപ്പാക്കണമെന്ന് തീരുമാനിക്കുകയും ചെയ്യുക. ഡാറ്റ സമഗ്രത ഇനിപ്പറയുന്ന വിഭാഗങ്ങളായി തിരിച്ചിരിക്കുന്നു:

  • 1. എന്റിറ്റി ഇന്റഗ്രിറ്റി -- ഒരു പ്രത്യേക പട്ടികയിലെ തനതായ എന്റിറ്റിയായി ഒരു വരിയെ നിർവചിക്കുന്നു. സൂചികകൾ ഉപയോഗിച്ച് ഒരു പട്ടികയുടെ ഐഡന്റിറ്റി നിരകളുടെയോ പ്രാഥമിക കീയുടെയോ സമഗ്രത ഇത് ഉറപ്പാക്കുന്നു UNIQUE നിയന്ത്രണങ്ങൾഅല്ലെങ്കിൽ പ്രൈമറി കീ.
  • 2. ഒരു പ്രത്യേക നിരയിലെ രേഖകളുടെ വിശ്വാസ്യതയാണ് ഡൊമെയ്ൻ സമഗ്രത. ഡാറ്റാ തരം നിയന്ത്രണങ്ങൾ, ചെക്ക് നിയന്ത്രണങ്ങളും നിയമങ്ങളും ഉപയോഗിച്ചുള്ള ഫോർമാറ്റ് നിയന്ത്രണങ്ങൾ, ഫോറിൻ കീ, ചെക്ക്, ഡിഫോൾട്ട് കൺസ്ട്രെയ്‌ന്റുകൾ, NULL നിർവചനങ്ങൾ, നിയമങ്ങൾ എന്നിവ ഉപയോഗിച്ച് സാധ്യമായ മൂല്യങ്ങളുടെ പരിധിയിലുള്ള നിയന്ത്രണങ്ങൾ എന്നിവ ഇതിൽ ഉൾപ്പെടുന്നു.
  • 3. റഫറൻഷ്യൽ ഇന്റഗ്രിറ്റി -- വരികൾ ചേർക്കുമ്പോഴോ ഇല്ലാതാക്കുമ്പോഴോ പട്ടികകൾ തമ്മിലുള്ള ചില ബന്ധങ്ങൾ സംരക്ഷിക്കുന്നു.

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

റഫറൻഷ്യൽ സമഗ്രത ഉറപ്പാക്കുമ്പോൾ, SQL സെർവർ അനുവദിക്കുന്നില്ല അടുത്ത ഘട്ടങ്ങൾഉപയോക്താക്കൾ:

  • - പ്രൈമറി ടേബിളിൽ അനുബന്ധ വരികൾ ഇല്ലെങ്കിൽ, അനുബന്ധ പട്ടികയിൽ വരികൾ കൂട്ടിച്ചേർക്കുകയോ മാറ്റുകയോ ചെയ്യുക;
  • - പ്രാഥമിക പട്ടികയിലെ മൂല്യങ്ങളിലെ മാറ്റങ്ങൾ, ഇത് അനുബന്ധ പട്ടികയിലെ അനാഥമായ വരികളിലേക്ക് നയിക്കുന്നു;
  • - അനുബന്ധ പട്ടികകളിൽ അനുബന്ധ വരികൾ ഉണ്ടെങ്കിൽ പ്രാഥമിക പട്ടികയിൽ നിന്ന് വരികൾ ഇല്ലാതാക്കുന്നു.
  • 4. കസ്റ്റം ഇന്റഗ്രിറ്റി - ഇന്റഗ്രിറ്റി വിഭാഗങ്ങളിലൊന്നും ഉൾപ്പെടാത്ത ബിസിനസ്സ് നിയമങ്ങൾ നിർവ്വചിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. മറ്റെല്ലാ സമഗ്രത വിഭാഗങ്ങളും ഇഷ്‌ടാനുസൃത സമഗ്രതയെ പിന്തുണയ്‌ക്കുന്നു: സൃഷ്‌ടിക്കുക പട്ടിക പ്രസ്താവനയിലെ ഏത് തരത്തിലുള്ള കോളം-ലെവൽ, ടേബിൾ-ലെവൽ നിയന്ത്രണങ്ങൾ, സംഭരിച്ച നടപടിക്രമങ്ങൾ, ട്രിഗറുകൾ.

സെമാന്റിക് റഫറൻഷ്യൽ സമഗ്രത നിയന്ത്രണം

ശകലത്തിന്റെ വികസന സമയത്ത് വിവര സംവിധാനംവി MySQL DBMSഡാറ്റയുടെ സമഗ്രത ഉറപ്പാക്കുന്നതിൽ പ്രശ്നം ഉയർന്നുവരുന്നു. സമഗ്രത എന്ന ആശയം തന്നെ നമുക്ക് പരിഗണിക്കാം.

ക്രമരഹിതമായ സ്വാധീനങ്ങളുടെ സാഹചര്യങ്ങളിൽ വിവര ഉള്ളടക്കവും വ്യക്തമായ വ്യാഖ്യാനവും നിലനിർത്തുമ്പോൾ ഡാറ്റയുടെ അവസ്ഥയാണ് സമഗ്രത.

ഡാറ്റയുടെ സമഗ്രത വിവരിക്കുന്ന വാക്യങ്ങളെ വിളിക്കുന്നു സമഗ്രത നിയന്ത്രണങ്ങൾ.

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

സെമാന്റിക് ഡാറ്റ സമഗ്രത

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

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

നമുക്ക് ഒരു ഉദാഹരണം നൽകാം: "ക്ലയന്റ്" ടേബിളിലെ "സലൂൺ" ഡാറ്റാബേസിൽ ഒരു "ക്ലയന്റ്" ഒബ്ജക്റ്റ് ഉണ്ടായിരിക്കട്ടെ, അതിനെ ആശ്രയിച്ച് ഒരു പ്രത്യേക സെറ്റ് പ്രോപ്പർട്ടികൾ ഉണ്ട് വിവര ചുമതലകൾ. ഒരു പ്രാഥമിക കീ എന്ന നിലയിൽ, നിങ്ങൾക്ക് "സീരീസും പാസ്‌പോർട്ട് നമ്പറും" അല്ലെങ്കിൽ "ക്ലയന്റ് ഐഡി" പോലുള്ള ഒരു പ്രോപ്പർട്ടി തിരഞ്ഞെടുക്കാം. വി ഈ സാഹചര്യത്തിൽഒരു പ്രത്യേക സീരീസോ പാസ്‌പോർട്ട് നമ്പറോ അദ്വിതീയ മൂല്യങ്ങളല്ലാത്തതിനാൽ പ്രാഥമിക കീ സംയോജിതമാണ്, കൂടാതെ “ക്ലയന്റ് ഐഡി” കീ സംയോജിതമോ ലളിതമോ ആകാം.

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

ഡാറ്റാബേസിൽ അടങ്ങിയിരിക്കുന്ന യഥാർത്ഥ മൂല്യങ്ങളുടെ പരിമിതിയാണ് മറ്റൊരു തരത്തിലുള്ള സമഗ്രത പരിമിതി. ഈ നിയന്ത്രണത്തിന് നിരവധി ഉപവിഭാഗങ്ങളുണ്ട്:

1) സാധുവായ മൂല്യങ്ങൾഎന്നിവിടങ്ങളിൽ സ്ഥിതി ചെയ്യുന്നു നൽകിയ ഇടവേള. വസ്തുവിന്റെ മൂല്യം ഉള്ളതായി ഈ നിയന്ത്രണം അനുമാനിക്കുന്നു ഒരു നിശ്ചിത പരിധിമൂല്യങ്ങൾ. ഒരു ബ്യൂട്ടി സലൂണിൽ തൊഴിലാളികൾക്ക് പ്രായപരിധി ഉണ്ടെന്ന് നമുക്ക് പറയാം: യജമാനന് 20 വയസ്സിന് താഴെയോ 50 വയസ്സിന് മുകളിലോ ആയിരിക്കരുത്. അതിനാൽ, സമഗ്രത പരിമിതി ഇതുപോലെ കാണപ്പെടുന്നു: ""മാസ്റ്റർ" ക്ലാസിലെ ഓരോ ഒബ്ജക്റ്റിനും, "പ്രായം" ആട്രിബ്യൂട്ടിന്റെ മൂല്യം 20-50 വർഷത്തെ പരിധിയിലാണ്.

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

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

4) ഫോർമാറ്റ് നിയന്ത്രണങ്ങൾ: ഡാറ്റ കർശനമായി നിർവചിച്ചിരിക്കുന്നു രൂപം. ആട്രിബ്യൂട്ടിൽ അടങ്ങിയിരിക്കുന്ന ഡാറ്റയുടെ തരവുമായി ഇത് പ്രാഥമികമായി ബന്ധപ്പെട്ടിരിക്കുന്നതിനാൽ ഈ പരിമിതി മറ്റുള്ളവരേക്കാൾ കൂടുതൽ തവണ ഉപയോഗിക്കുന്നു. നിരവധി തരത്തിലുള്ള ഫോർമാറ്റ് ഇന്റഗ്രിറ്റി നിയന്ത്രണങ്ങളുടെ ഒരു ഉദാഹരണം ഇതാ:

"അവസാന നാമം", "ആദ്യ നാമം", "രക്ഷാകർതൃ നാമം" എന്നീ ഗുണങ്ങളുടെ മൂല്യങ്ങൾക്ക് ഇനിപ്പറയുന്ന രൂപമുണ്ട്: ആദ്യ പ്രതീകം - വലിയക്ഷരംസിറിലിക്, തുടർന്നുള്ളവ - ചെറിയക്ഷരം. നമ്പറുകൾ നൽകുന്നത് അനുവദനീയമല്ല.

ക്ലയന്റുകളുടെയും മാസ്റ്റേഴ്സിന്റെയും ജനനത്തീയതി, സലൂൺ സന്ദർശിച്ച തീയതികൾ, അതുപോലെ തന്നെ മാസ്റ്റേഴ്സിന് നൽകുന്ന അവധി അല്ലെങ്കിൽ അസുഖ അവധി എന്നിവയുടെ ഫോർമാറ്റ് DD/MM/YY ആണ്.

5) NULL-ന് വിലക്ക് - ആട്രിബ്യൂട്ട് മൂല്യം. ഇത്തരത്തിലുള്ള നിയന്ത്രണം പ്രാഥമികമായി ഒബ്ജക്റ്റ് ഐഡന്റിഫയറിന് ബാധകമാണ്, അത് പ്രാഥമിക കീയായും ആ പ്രോപ്പർട്ടികൾക്കും ശൂന്യമായ മൂല്യംഅസ്വീകാര്യമായത്.

ഉദാഹരണത്തിന്, ഐഡന്റിഫയറിന് പുറമേ, ക്ലയന്റ് അല്ലെങ്കിൽ മാസ്റ്ററുടെ മുഴുവൻ പേര് പോലെയുള്ള ഫീൽഡുകൾക്കുള്ള ശൂന്യമായ മൂല്യങ്ങൾ, അല്ലെങ്കിൽ ക്ലയന്റ് നൽകിയ മൊത്തം ചെലവ് സൂചിപ്പിക്കുമ്പോൾ ക്ലയന്റിന് നൽകിയ സേവനങ്ങളെക്കുറിച്ചുള്ള വിവരങ്ങളുടെ അഭാവം എന്നിവ അസ്വീകാര്യമാണ്. .

6) അർത്ഥപരമായി ബന്ധപ്പെട്ട ഫീൽഡുകളുടെ മൂല്യങ്ങളിൽ നിയന്ത്രണം. ഈ സാഹചര്യത്തിൽ, അവർക്ക് ചില വ്യവസ്ഥകൾ ചുമത്തുന്നു അല്ലെങ്കിൽ പ്രവർത്തനപരമായ ആശ്രിതത്വങ്ങൾ. അതിനാൽ, ഞങ്ങളുടെ ഡാറ്റാബേസിൽ, “അവധി ആരംഭിക്കുന്ന തീയതി”, “അവധിക്കാല അവസാന തീയതി” എന്നീ ഫീൽഡുകളുടെ മൂല്യങ്ങൾ അർത്ഥപരമായി ബന്ധപ്പെട്ടിരിക്കുന്നു: ആദ്യ തീയതി രണ്ടാമത്തേതിനേക്കാൾ കുറവാണ്. ഈ സാഹചര്യത്തിൽ, സമഗ്രത പരിമിതി രൂപപ്പെടുത്തണം ഇനിപ്പറയുന്ന ഫോം: : “ഒരു തന്നിരിക്കുന്ന ക്ലാസിലെ ഓരോ ഒബ്‌ജക്റ്റിനും, C1, C2 പ്രോപ്പർട്ടികളുടെ മൂല്യങ്ങൾക്കിടയിൽ ഇനിപ്പറയുന്ന വ്യവസ്ഥ എല്ലായ്പ്പോഴും പാലിക്കണം: C1<С2».

സെമാന്റിക് ഇന്റഗ്രിറ്റി നിയന്ത്രണങ്ങൾ നടപ്പിലാക്കുന്നതിന്റെ ഒരു പ്രധാന വശം, ഒരു വസ്തുവിന്റെ മൂല്യത്തിൽ ഒരേസമയം നിരവധി തരത്തിലുള്ള നിയന്ത്രണങ്ങൾ അടിച്ചേൽപ്പിക്കാൻ കഴിയും എന്നതാണ്. ഉദാഹരണത്തിന്, "മാസ്റ്റർ" പട്ടികയിലെ "പ്രായം" പ്രോപ്പർട്ടി മൂല്യത്തിന് ഇടവേളയിൽ (20-50 വർഷം) ഒരു നിയന്ത്രണമുണ്ട്, ഫോർമാറ്റിൽ, ഇടവേള പട്ടികയിൽ നിന്ന് ഒരു മൂല്യം തിരഞ്ഞെടുക്കാനും കഴിയും.

ഡാറ്റ സമഗ്രത അർത്ഥമാക്കുന്നത് ഡാറ്റ കൃത്യവും സ്ഥിരതയുള്ളതുമാണ് എന്നാണ്. സാധാരണയായി ഇതിൽ ബന്ധങ്ങളുടെ സമഗ്രതയും ഉൾപ്പെടുന്നു, ഇത് പ്രാഥമികവും ദ്വിതീയവുമായ കീ തമ്മിലുള്ള ബന്ധങ്ങളിലെ പിശകുകൾ തടയുന്നു. ഡാറ്റ സമഗ്രത ലംഘനങ്ങളുടെ ഉദാഹരണങ്ങൾ:

  • അനാഥ രേഖകളുടെ അസ്തിത്വം (മാതൃ രേഖകളുമായി യാതൊരു ബന്ധവുമില്ലാത്ത കുട്ടികളുടെ രേഖകൾ);
  • സമാനമായ പ്രാഥമിക കീകളുടെ അസ്തിത്വം.

MD5 പോലെയുള്ള ഡാറ്റയുടെ സമഗ്രത പരിശോധിക്കാൻ ക്രിപ്റ്റോഗ്രഫി ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നു. ഒരു ഹാഷ് ഫംഗ്‌ഷൻ ഒരു അനിയന്ത്രിതമായ വലുപ്പത്തിലുള്ള ബൈറ്റുകളുടെ ഒരു ശ്രേണിയെ ഒരു നിശ്ചിത വലുപ്പത്തിലുള്ള (ഒരു നമ്പർ) ബൈറ്റുകളുടെ ഒരു ശ്രേണിയിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു. ഡാറ്റ മാറുകയാണെങ്കിൽ, ഹാഷ് ഫംഗ്ഷൻ സൃഷ്ടിക്കുന്ന നമ്പറും മാറും.

മുൻകൂട്ടി നിശ്ചയിച്ച രൂപവും ഗുണനിലവാരവും നിലനിർത്തുന്ന ഒരു വസ്തുവാണ് ഡാറ്റാ സമഗ്രത.

മാനദണ്ഡങ്ങളിൽ നിന്നുള്ള നിർവചനങ്ങൾ

ആശയം " വസ്തുവിന്റെ സമഗ്രത"(ഇംഗ്ലീഷ് സമഗ്രത) വിവര സുരക്ഷാ സിദ്ധാന്തത്തിൽ (IS) ഒരു പദമായി ഉപയോഗിക്കുന്നു. ഒരു ഒബ്ജക്റ്റ് ഒരു ഓട്ടോമേറ്റഡ് സിസ്റ്റത്തിന്റെ വിവരങ്ങൾ, പ്രത്യേക ഡാറ്റ അല്ലെങ്കിൽ ഉറവിടങ്ങൾ ആയി മനസ്സിലാക്കുന്നു. വിവരങ്ങളുടെ സമഗ്രത (ഒരു ഓട്ടോമേറ്റഡ് സിസ്റ്റത്തിന്റെ ഉറവിടം എന്ന നിലയിൽ) ഒരു വിവര സുരക്ഷാ വസ്തുവിന്റെ മൂന്ന് പ്രധാന ഗുണങ്ങളിൽ ഒന്നാണ്. വിവര സുരക്ഷാ ഒബ്ജക്റ്റ് പ്രോപ്പർട്ടികൾ:

  • ലഭ്യത (eng. ലഭ്യത);
  • സമഗ്രത (eng. സമഗ്രത);
  • രഹസ്യാത്മകത (eng. രഹസ്യാത്മകത).

ചിലപ്പോൾ അവർ ഈ പട്ടികയിൽ ചേർക്കുന്നു:

  • നിരസിക്കൽ (ഇംഗ്ലീഷ്: നോൺ-റിപുഡിയേഷൻ);
  • ഉത്തരവാദിത്തം (ഇംഗ്ലീഷ്. ഉത്തരവാദിത്തം);
  • ആധികാരികത അല്ലെങ്കിൽ ആധികാരികത (eng. ആധികാരികത);
  • വിശ്വാസ്യത (ഇംഗ്ലീഷ്. വിശ്വാസ്യത).

സമഗ്രത ഉറപ്പാക്കാനുള്ള വഴികൾ

പദത്തിന്റെ നിർവചനങ്ങളിൽ പറഞ്ഞിരിക്കുന്ന ആവശ്യകതകൾ നടപ്പിലാക്കുന്നതിനുള്ള രീതികളും രീതികളും ഒരു വസ്തുവിന്റെ വിവര സുരക്ഷ (വിവര സംരക്ഷണം) ഉറപ്പാക്കുന്നതിനുള്ള ഒരു ഏകീകൃത പദ്ധതിയുടെ ചട്ടക്കൂടിനുള്ളിൽ വിശദമായി വിവരിച്ചിരിക്കുന്നു.

ഓട്ടോമേറ്റഡ് സിസ്റ്റങ്ങളിൽ സൂക്ഷിക്കുമ്പോൾ വിവരങ്ങളുടെ (ഡാറ്റ) സമഗ്രത ഉറപ്പാക്കുന്നതിനുള്ള പ്രധാന രീതികൾ ഇവയാണ്:

  • തെറ്റ് സഹിഷ്ണുത ഉറപ്പാക്കുന്നു(റിസർവേഷൻ, ഡ്യൂപ്ലിക്കേഷൻ, ഉപകരണങ്ങളുടെയും ഡാറ്റയുടെയും മിററിംഗ്, ഉദാഹരണത്തിന് റെയ്ഡ് അറേകളുടെ ഉപയോഗത്തിലൂടെ);
  • സുരക്ഷിതമായ വീണ്ടെടുക്കൽ ഉറപ്പാക്കുന്നു(വിവരങ്ങളുടെ ബാക്കപ്പും ഇലക്ട്രോണിക് ആർക്കൈവിംഗും).

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

ബിസിനസ്സ് സംരക്ഷണത്തിനായുള്ള ഒരു സംയോജിത സമീപനത്തിലൂടെ, വിവരങ്ങളുടെ സമഗ്രതയും ലഭ്യതയും (ബിസിനസ് പ്രോസസ് റിസോഴ്സുകൾ) ഉറപ്പാക്കുന്നതിനുള്ള ദിശ ലക്ഷ്യമിടുന്ന പ്രവർത്തനങ്ങളുടെ ഒരു പദ്ധതിയായി വികസിക്കുന്നു. ബിസിനസ്സ് തുടർച്ച ഉറപ്പാക്കുന്നു .

ക്രിപ്‌റ്റോഗ്രഫിയിലെ ഡാറ്റ സമഗ്രത

ഡാറ്റയുടെ സമഗ്രതയിൽ വിട്ടുവീഴ്ച ചെയ്യില്ലെന്ന് ഡാറ്റ എൻക്രിപ്ഷൻ ഉറപ്പുനൽകുന്നില്ല. അതിനാൽ, ക്രിപ്‌റ്റോഗ്രഫിയിൽ ഡാറ്റയുടെ സമഗ്രത പരിശോധിക്കാൻ അധിക രീതികൾ ഉപയോഗിക്കുന്നു. ഡാറ്റ സമഗ്രതയുടെ ലംഘനങ്ങൾ ഇനിപ്പറയുന്നവ അർത്ഥമാക്കുന്നു:

  • ബിറ്റ് വിപരീതം;
  • ഒരു മൂന്നാം കക്ഷി പുതിയ ബിറ്റുകൾ (പ്രത്യേകിച്ച് പൂർണ്ണമായും പുതിയ ഡാറ്റ) കൂട്ടിച്ചേർക്കൽ;
  • ഏതെങ്കിലും ഡാറ്റ ബിറ്റുകൾ നീക്കം ചെയ്യുക;
  • ബിറ്റുകളുടെ അല്ലെങ്കിൽ ബിറ്റുകളുടെ ഗ്രൂപ്പുകളുടെ ക്രമം മാറ്റുന്നു.

ക്രിപ്‌റ്റോഗ്രഫിയിൽ, വിവരങ്ങളുടെ സമഗ്രതയുടെ പ്രശ്നം പരിഹരിക്കുന്നതിൽ, വിവരങ്ങളുടെ ക്രമരഹിതമായ വികലങ്ങൾ കണ്ടെത്തുന്നത് സാധ്യമാക്കുന്ന നടപടികളുടെ ഉപയോഗം ഉൾപ്പെടുന്നു, കാരണം പിശക് കണ്ടെത്തലും തിരുത്തലും ഉള്ള സിദ്ധാന്തം കോഡിംഗ് രീതികൾ ഈ ആവശ്യത്തിന് തികച്ചും അനുയോജ്യമാണ്, മറിച്ച് ടാർഗെറ്റുചെയ്‌തതാണ്. ഒരു സജീവ ക്രിപ്‌റ്റനലിസ്റ്റിന്റെ വിവരങ്ങൾ മാറ്റുന്നു.

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

സന്ദേശത്തിൽ ഉൾപ്പെടുത്തിയിട്ടുള്ള അധിക അനാവശ്യ വിവരങ്ങളെ അനുകരണ ഉൾപ്പെടുത്തൽ എന്ന് വിളിക്കുന്നു. സന്ദേശ എൻക്രിപ്‌ഷന് മുമ്പോ സമയത്തോ ആൾമാറാട്ട നിരക്ക് കണക്കാക്കാം.

അനുകരണ ഉൾപ്പെടുത്തലുകൾ

സിമുലേഷൻ ഇൻസേർട്ടിലെ ബൈനറി അക്കങ്ങളുടെ എണ്ണം (ബിറ്റുകളുടെ എണ്ണം) സാധാരണയായി ക്രിപ്റ്റോഗ്രാഫിക് ആവശ്യകതകളാൽ നിർണ്ണയിക്കപ്പെടുന്നു, തെറ്റായ ഡാറ്റ അടിച്ചേൽപ്പിക്കാനുള്ള സാധ്യത 1/2 p ന് തുല്യമാണ് എന്ന വസ്തുത കണക്കിലെടുക്കുന്നു, ഇവിടെ p എന്നത് ബൈനറി അക്കങ്ങളുടെ എണ്ണമാണ് ( ബിറ്റുകളുടെ എണ്ണം) സിമുലേഷൻ ഇൻസേർട്ടിൽ.

സന്ദേശത്തിന്റെ ഉള്ളടക്കത്തെ അടിസ്ഥാനമാക്കി കണക്കാക്കിയ ഒരു സംഖ്യയാണ് ഇമിറ്റേഷൻ ഇൻസേർട്ട്. അതായത്, സന്ദേശത്തിന്റെ ഒരു ഫംഗ്‌ഷനാണ് അനുകരണീയ ഉൾപ്പെടുത്തൽ:

എം = എഫ്(x) ,

  • എം - അനുകരണ ഉൾപ്പെടുത്തൽ;
  • f എന്നത് അനുകരണീയമായ ഉൾപ്പെടുത്തൽ കണക്കാക്കുന്ന ഒരു ഫംഗ്‌ഷനാണ്;
  • x - സന്ദേശം.

ഒരു സന്ദേശത്തിന്റെ ആധികാരികത പരിശോധിക്കാനും അതിന്റെ സമഗ്രത പരിശോധിക്കാനും അനുകരണം ഉപയോഗിക്കാം. സിമുലേഷൻ ഉൾപ്പെടുത്തലിന്റെ ഉദ്ദേശ്യത്തെ ആശ്രയിച്ച്, പ്രവർത്തന ഫംഗ്ഷനുകൾക്കുള്ള അൽഗോരിതങ്ങൾ (കോഡുകൾ) രണ്ട് ക്ലാസുകളായി തിരിച്ചിരിക്കുന്നു:

  • സന്ദേശ സമഗ്രത പരിശോധന കോഡുകൾ (MDC, ഇംഗ്ലീഷ് മോഡിഫിക്കേഷൻ ഡിറ്റക്ഷൻ കോഡ്). സന്ദേശം ഹാഷ് ചെയ്യുന്നതിലൂടെ ഡാറ്റയുടെ സമഗ്രത (എന്നാൽ ആധികാരികതയല്ല) പരിശോധിക്കുന്നതിന് അനുയോജ്യമായ ഒരു മോക്ക് ഇൻസേർട്ട് അൽഗോരിതങ്ങൾ കണക്കാക്കുന്നു;
  • സന്ദേശ പ്രാമാണീകരണ കോഡുകൾ (MAC, ഇംഗ്ലീഷ് സന്ദേശ പ്രാമാണീകരണ കോഡ്). ഒരു രഹസ്യ കീ ഉപയോഗിച്ച് സന്ദേശം ഹാഷ് ചെയ്യുന്നതിലൂടെ, കൃത്രിമത്വത്തിൽ നിന്ന് ഡാറ്റ പരിരക്ഷിക്കുന്നതിന് അനുയോജ്യമായ ഒരു വ്യാജ ഇൻസേർട്ട് അൽഗോരിതങ്ങൾ കണക്കാക്കുന്നു.

എം.ഡി.സി

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

  • അപ്രസക്തത (ഇംഗ്ലീഷ്. പ്രീമേജ് പ്രതിരോധം);
  • ആദ്യ തരത്തിലുള്ള കൂട്ടിയിടികളോടുള്ള പ്രതിരോധം (ദുർബലമായ കൂട്ടിയിടി പ്രതിരോധം);
  • രണ്ടാമത്തെ തരത്തിലുള്ള കൂട്ടിയിടികളോടുള്ള പ്രതിരോധം (ഇംഗ്ലീഷ്: ശക്തമായ കൂട്ടിയിടി പ്രതിരോധം).

MDC ഹാഷ് ഫംഗ്‌ഷനുകൾ തൃപ്തിപ്പെടുത്തുന്ന ഈ പ്രോപ്പർട്ടികൾ അനുസരിച്ച്, രണ്ട് ഉപവിഭാഗങ്ങളെ വേർതിരിച്ചറിയാൻ കഴിയും:

  • വൺ-വേ ഹാഷ് ഫംഗ്‌ഷനുകൾ (ഇംഗ്ലീഷ് വൺ-വേ ഹാഷ് ഫംഗ്‌ഷനിൽ നിന്നുള്ള OWHF), അത് മാറ്റാനാകാത്ത സ്വഭാവത്തെ തൃപ്തിപ്പെടുത്തുകയും ആദ്യ തരത്തിലുള്ള കൂട്ടിയിടികൾക്ക് പ്രതിരോധിക്കുകയും ചെയ്യുന്നു;
  • കൂട്ടിയിടി പ്രതിരോധമുള്ള ഹാഷ് ഫംഗ്ഷനുകൾ (CRHF, ഇംഗ്ലീഷിൽ നിന്ന്. കൂട്ടിയിടി പ്രതിരോധം ഹാഷ് ഫംഗ്ഷൻ), ഒന്നും രണ്ടും തരത്തിലുള്ള കൂട്ടിയിടികൾക്ക് പ്രതിരോധശേഷിയുള്ളവ (സാധാരണയായി പറഞ്ഞാൽ, പ്രായോഗികമായി CRHF ഹാഷ് ഫംഗ്ഷനുകളും മാറ്റാനാകാത്ത സ്വഭാവത്തെ തൃപ്തിപ്പെടുത്തുന്നു).

MDC ഹാഷ് ഫംഗ്ഷൻ അൽഗോരിതങ്ങൾ നിർമ്മിക്കുന്ന രീതിയെ അടിസ്ഥാനമാക്കി മൂന്ന് പ്രധാന തരങ്ങളുണ്ട്:

  • ബ്ലോക്ക് സൈഫറുകളിൽ; ഉദാഹരണത്തിന്: അൽഗോരിതം മത്യാസ്-മേയർ-ഒസിയാസ്, അൽഗോരിതം ഡേവീസ്-മേയർ, അൽഗോരിതം മിയാഗുച്ചി-പ്രനീൽ, MDC-2, MDC-4;
  • സ്‌പെഷ്യൽ (ഇംഗ്ലീഷ്. ഇഷ്‌ടാനുസൃതമാക്കിയ) ഹാഷിംഗ് അൽഗോരിതങ്ങൾ, വേഗതയ്ക്ക് ഊന്നൽ നൽകുന്നതും സിസ്റ്റത്തിന്റെ മറ്റ് ഘടകങ്ങളിൽ നിന്ന് സ്വതന്ത്രമായതും (ബ്ലോക്ക് സൈഫറുകൾ അല്ലെങ്കിൽ മോഡുലാർ മൾട്ടിപ്ലിക്കേഷൻ ഘടകങ്ങൾ ഉൾപ്പെടെ, മറ്റ് ആവശ്യങ്ങൾക്ക് ഇതിനകം ഉപയോഗിച്ചേക്കാം). ഉദാഹരണത്തിന്: MD4, MD5, SHA-1, SHA-2, RIPEMD-128, RIPEMD-160;
  • മോഡുലാർ ഗണിതത്തിൽ; ഉദാഹരണത്തിന്: MASH-1, MASH-2.

മാക്

പ്രധാന ഹാഷ് ഫംഗ്‌ഷനുകളുടെ ഒരു ഉപകുടുംബമായ സന്ദേശ പ്രാമാണീകരണ കോഡുകൾ കണക്കാക്കുന്നതിനുള്ള MAC ഹാഷ് ഫംഗ്‌ഷനുകളിൽ ഇനിപ്പറയുന്ന ഗുണങ്ങളെ തൃപ്തിപ്പെടുത്തുന്ന ഫംഗ്‌ഷനുകളുടെ ഒരു കുടുംബം ഉൾപ്പെടുന്നു:

  • ഒരു സന്ദേശത്തിൽ നിന്ന് ഡൈജസ്റ്റ് കണക്കാക്കുന്നതിനുള്ള എളുപ്പം;
  • ഡാറ്റ കംപ്രഷൻ - അനിയന്ത്രിതമായ ബിറ്റ് ദൈർഘ്യമുള്ള ഒരു ഇൻപുട്ട് സന്ദേശം ഒരു നിശ്ചിത ദൈർഘ്യത്തിന്റെ ഡൈജസ്റ്റായി പരിവർത്തനം ചെയ്യപ്പെടുന്നു;
  • ഹാക്കിംഗിനെതിരായ പ്രതിരോധം - ഒന്നോ അതിലധികമോ സന്ദേശ-ഡൈജസ്റ്റ് ജോഡികൾ ഉള്ളത്, (x[i], h(x[i])), ഒരു പുതിയ മെസേജ്-ഡൈജസ്റ്റ് ജോഡി (x, h(x)) ലഭിക്കുന്നത് ഗണിതപരമായി അസാധ്യമാണ്. ഏതെങ്കിലും പുതിയ സന്ദേശങ്ങൾ x.

അവസാനത്തെ പ്രോപ്പർട്ടി തൃപ്തികരമല്ലെങ്കിൽ, MAC കബളിപ്പിക്കപ്പെട്ടേക്കാം. കൂടാതെ, അവസാനത്തെ പ്രോപ്പർട്ടി സൂചിപ്പിക്കുന്നത്, കീ കണക്കാക്കാൻ കഴിയില്ല, അതായത്, കീ കെയ്‌ക്കൊപ്പം ഒന്നോ അതിലധികമോ ജോഡികൾ (x[i], h(x[i])) ഉള്ളതിനാൽ, ഈ കീ നേടുന്നത് കണക്കുകൂട്ടൽപരമായി അസാധ്യമാണ്.

ഒരു സന്ദേശ പ്രാമാണീകരണ കോഡ് നേടുന്നതിനുള്ള അൽഗോരിതങ്ങളെ അവയുടെ തരം അനുസരിച്ച് ഇനിപ്പറയുന്ന ഗ്രൂപ്പുകളായി തിരിക്കാം:

  • ബ്ലോക്ക് സൈഫറുകളിൽ. ഉദാഹരണത്തിന്, CBC-MAC, RIPE-MAC1, RIPE-MAC3;
  • MDC-യിൽ നിന്ന് MAC നേടുന്നു;
  • പ്രത്യേക (ഇംഗ്ലീഷ്. കസ്റ്റമൈസ്ഡ്) അൽഗോരിതങ്ങൾ. ഉദാഹരണത്തിന്, MAA, MD5-MAC;
  • സ്ട്രീം സൈഫറുകളിൽ. ഉദാഹരണത്തിന്, CRC അടിസ്ഥാനമാക്കിയുള്ള MAC.

MDC അടിസ്ഥാനമാക്കി MAC സ്വീകരിക്കുന്നു

MDC അൽഗോരിതത്തിന്റെ ഇൻപുട്ട് ഡാറ്റയിൽ ഒരു രഹസ്യ കീ ഉൾപ്പെടുത്തി MDC-യിൽ നിന്ന് സന്ദേശ പ്രാമാണീകരണ കോഡുകൾ നേടുന്നതിനുള്ള രീതികളുണ്ട്. ഈ സമീപനത്തിന്റെ പോരായ്മ, വാസ്തവത്തിൽ, മിക്ക MDC അൽഗോരിതങ്ങളും OWHF അല്ലെങ്കിൽ CRHF ആയി രൂപകൽപ്പന ചെയ്തിട്ടുള്ളതാണ്, അവയ്ക്ക് MAC അൽഗോരിതങ്ങളേക്കാൾ വ്യത്യസ്ത ആവശ്യകതകളുണ്ട്.

  1. രഹസ്യ പ്രിഫിക്സ് രീതി : ഡാറ്റ ബ്ലോക്കുകളുടെ ഒരു ശ്രേണിയിലേക്ക് x (\ഡിസ്പ്ലേസ്റ്റൈൽ x)=x 1 x 2 x 3 ..x n രഹസ്യ കീ തുടക്കത്തിലേക്ക് ചേർത്തു കെ: കെ||x. തന്നിരിക്കുന്ന ഒരു ഡാറ്റാ ശ്രേണിക്ക്, ഒരു MDC ഒരു ആവർത്തന ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ച് കണക്കാക്കുന്നു, ഉദാഹരണത്തിന്, H 0 =IV (ഇംഗ്ലീഷ് പ്രാരംഭ മൂല്യത്തിൽ നിന്ന്), H i = എഫ്(H i-1, x i) എച്ച്(x) = H n. അതിനാൽ MAC എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)=എച്ച്(കെ||x). ഈ സമീപനത്തിന്റെ പോരായ്മ, ബ്ലോക്കുകളുടെ ക്രമത്തിന്റെ അവസാനം ഒരു മൂന്നാം കക്ഷിക്ക് അധിക ഡാറ്റ ചേർക്കാൻ കഴിയും എന്നതാണ്. വൈ: കെ||x||വൈ. കീ അറിയാതെ പുതിയ MAC കണക്കാക്കാം കെ: എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം) 1 = എഫ്(എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം),വൈ).
  2. രഹസ്യ സഫിക്സ് രീതി : ഡാറ്റാ ശ്രേണിയുടെ അവസാനം രഹസ്യ കീ ചേർത്തിരിക്കുന്നു: x||കെ. ഈ സാഹചര്യത്തിൽ MAC എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)=എച്ച്(x||കെ). ഈ സാഹചര്യത്തിൽ, ജന്മദിന ആക്രമണം ഉപയോഗിക്കാം. ഒരു ഡൈജസ്റ്റ് ദൈർഘ്യത്തോടെ എൻബിറ്റ്. മൂന്നാം കക്ഷിക്ക് ഓർഡർ ആവശ്യമാണ് 2 ഒരു സന്ദേശത്തിനായുള്ള n/2 പ്രവർത്തനങ്ങൾ xസന്ദേശം കണ്ടെത്തുക x'അത്തരം എച്ച്(x)= എച്ച്(x'). അതേ സമയം, കീയെക്കുറിച്ചുള്ള അറിവ് കെആവശ്യമില്ല. MAC മൂല്യം കണ്ടെത്തുന്നു എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)സന്ദേശത്തിനായി x, ഒരു മൂന്നാം കക്ഷിക്ക് ശരിയായ ജോഡി സൃഷ്ടിക്കാൻ കഴിയും ( x',എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)).
  3. പാഡിംഗ് ഉള്ള എൻവലപ്പ് രീതി : താക്കോലിന് കെകൂടാതെ എം.ഡി.സി. എച്ച് എച്ച്കെ ( x)=(കെ||പി||x||കെ), എവിടെ പി- കീയെ പൂരകമാക്കുന്ന ഒരു സ്ട്രിംഗ് കെകുറഞ്ഞത് 2 ആവർത്തനങ്ങളെങ്കിലും നടക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ, ഡാറ്റ ബ്ലോക്കിന്റെ ദൈർഘ്യം വരെ. ഉദാഹരണത്തിന്, MD5 ന് കെ- 128 ബിറ്റുകൾ, ഒപ്പം പി- 384 ബിറ്റുകൾ.
  4. എച്ച്എംഎസി : താക്കോലിന് കെകൂടാതെ എം.ഡി.സി. എച്ച്സന്ദേശത്തിൽ നിന്ന് MAC കണക്കാക്കുന്നു എച്ച്കെ ( x)=(കെ||പി 1 ||എച്ച്(കെ||പി 2 ||x)), എവിടെ പി 1 ,പി 2 - പൂരകമാകുന്ന വ്യത്യസ്ത വരികൾ കെഡാറ്റ ബ്ലോക്കിന്റെ ദൈർഘ്യം വരെ. ഇരട്ട ഉപയോഗം ഉണ്ടായിരുന്നിട്ടും ഈ ഡിസൈൻ വളരെ ഫലപ്രദമാണ്. എച്ച്.

ഉപയോഗ രീതികൾ

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

എൻക്രിപ്ഷനും എംഡിസിയും ഉപയോഗിച്ച് ഡാറ്റ സമഗ്രത ഉറപ്പാക്കുന്നു

യഥാർത്ഥ സന്ദേശത്തിൽ നിന്നാണ് MDC കണക്കാക്കുന്നത്. എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)=എച്ച്(x). ഈ