තෙවන සාමාන්ය ආකෘතියක දත්ත ගබඩාව (3NF)

තෙවන සාමාන්ය ආකෘතිය (3NF) යනු පළමු සාමාන්ය ආකෘතිය (1NF) සහ දෙවන සාමාන්ය ආකෘතිය (2NF) මගින් සපයන දත්ත සමුදාය සාමාන්යකරණය කිරීමේ මූලධර්ම මත ගොඩ නැගීමෙන් දත්තවල අඛණ්ඩතාවයට අනුබල දෙන දත්ත පදයකි.

තෙවන සාමාන්ය ආකෘති පත්රය

දත්තගබඩාව තෙවන සාමාන්ය ආකාරයේ විය යුතු මූලික අවශ්යතා දෙකක් තිබේ:

ප්රාථමික ප්රධාන රඳාපවතිය ගැන

සෑම තීරුවක්ම ප්රාථමික යතුර මත රඳා පවතින බව අප අදහස් කරන්නේ කුමක් දැයි අපි තවදුරටත් සලකා බලමු.

තීරුවේ වටිනාකම මූලිකව සහ අනෙක් වගුවේ ඇති තීරු දෙකෙන් ව්යුත්පන්න කළහොත් එය 3NF උල්ලංඝනය කරයි. මෙම තීරු සමග සේවක මේසය සලකා බලන්න.

LastName සහ FirstName යන දෙවර්ගයේම සේවකයින්ගේ වටිනාකම මත රඳා පවතීද? හොඳයි, LastName FirstName මත රඳා පවතීද? නැත, LastName හි අද්විතීය දෙයක් නම් FirstName වල අගයන් යෝජනා කරන බැවිනි. FirstName LastName මත රඳා පවතීද? නැවතත්, එකම සත්යය නිසා: LastName විය හැකි කුමන කුමක් වුවද, FirstName අගය අනුව ඉඟියක් ලබා දිය නොහැකි විය. එබැවින් මෙම වගුව 3NF අනුකූල වේ.

නමුත් වාහන වාහන මේසයක් සලකා බලන්න:

නිෂ්පාදකයා සහ ආදර්ශය VehicleID වලින් ලබාගත හැකි වුවද, නිෂ්පාදකයාගෙන් නිෂ්පාදකයා වෙතින් නිපදවිය හැකිය. වාහන ආකෘතියක් නිෂ්පාදකයා විසින් පමණි. මෙම වගුව 3NF අනුකූල නොවන අතර, එබැවින්, දත්ත විෂමතා හේතු විය හැක. නිදසුනක් ලෙස, ඔබ නිරවද්යතාව යාවත්කාලීන නොකර නිෂ්පාදකයා යාවත්කාලීන කළ හැකිය.

එය අනුකූල වීම සඳහා, අමතර වගු තීරුවක් වෙනත් වගුවක් වෙත ගෙන යාමට අවශ්ය වන අතර එය විදේශීය යතුර භාවිතා කරමින් එය යොමු කිරීම අවශ්ය වේ. මේ සඳහා වගු දෙකක් ඇත:

වාහන මේස

පහත දැක්වෙන වගුවේ ModelsID මොඩියුලමේ වගුවට විදේශීය යතුරක් වේ:

මොඩර් වගුව

මෙම නව වගුව නිෂ්පාදකයන්ට ආකෘති සිතියම් සකස් කරයි. ආකෘතියකට අදාල ඕනෑම වාහක තොරතුරු යාවත්කාලීන කිරීමට ඔබට අවශ්ය නම්, වාහන මේසය තුළ නොව, මෙම වගුවෙන් එය සිදු කරනු ඇත.

3NF ආකෘතියේ ව්යුත්පන්න කරන ලද ක්ෂේත්ර

වගුව ව්යුත්පන්න කළ ක්ෂේත්රයක් අඩංගු විය හැක - වගුවෙහි අනෙක් තීරු මත පදනම්ව ගණනය කරනු ලැබේ. නිදසුනක් ලෙස, විජට් කිරීමේ ඇණවුම් මේ වගුව සලකා බලන්න:

මුලික යතුර මත සම්පූර්ණයෙන්ම රඳා නොසිට, ප්රමාණයෙන් ඒකක මිල ගණනය කිරීමෙන් ව්යුත්පන්න ලැබිය හැකි නිසා 3NF අනුකූලතාවය සම්පූර්ණ විය. තුන්වන සාමාන්ය ආකෘතියට අනුකූලව මේසය වෙතින් එය ඉවත් කළ යුතුය.

ඇත්ත වශයෙන්ම, එය ව්යුත්පන්න කර ඇති බැවින්, දත්ත ගබඩාවේ එය ගබඩා කිරීම වඩා සුදුසු නොවේ.

දත්ත සමුදා විමසුම් සිදුකරන විට එය "පියාසර කිරීම" සිදු කළ හැකිය. උදාහරණයක් ලෙස, අපි කලින් ඇණවුම් අංක සහ මුළු ලකුණු ලබා ගැනීම සඳහා අප විසින් මීට පෙර භාවිතා කර තිබෙන්නට ඇත:

SELECT අනුපිළිවෙලේ අංකය, WidgetOrders වෙතින් සම්පූර්ණ

පහත සඳහන් විමසුම අපට දැන් භාවිතා කළ හැක:

SELECT අනුපිළිවෙලේ අංකය, UnitPrice * ප්රමාණය AS WidgetOrders වෙතින් සම්පූර්ණ

සාමාන්යකරණ නීතිරීති උල්ලංඝනය නොකර එකම ප්රතිඵල ලබා ගැනීම.