තෙවන සාමාන්ය ආකෘතිය (3NF) යනු පළමු සාමාන්ය ආකෘතිය (1NF) සහ දෙවන සාමාන්ය ආකෘතිය (2NF) මගින් සපයන දත්ත සමුදාය සාමාන්යකරණය කිරීමේ මූලධර්ම මත ගොඩ නැගීමෙන් දත්තවල අඛණ්ඩතාවයට අනුබල දෙන දත්ත පදයකි.
තෙවන සාමාන්ය ආකෘති පත්රය
දත්තගබඩාව තෙවන සාමාන්ය ආකාරයේ විය යුතු මූලික අවශ්යතා දෙකක් තිබේ:
- දත්ත සමුදාය 1NF සහ 2NF යන දෙඅංශයෙන්ම අවශ්යතා සපුරාලිය යුතුය.
- සියළුම දත්ත සමුදා තීරු මූලික යතුර මත රඳා පවතී, එනම් ඕනෑම තීරු වල වටිනාකම ප්රාථමික යතුරෙන් පමණි.
ප්රාථමික ප්රධාන රඳාපවතිය ගැන
සෑම තීරුවක්ම ප්රාථමික යතුර මත රඳා පවතින බව අප අදහස් කරන්නේ කුමක් දැයි අපි තවදුරටත් සලකා බලමු.
තීරුවේ වටිනාකම මූලිකව සහ අනෙක් වගුවේ ඇති තීරු දෙකෙන් ව්යුත්පන්න කළහොත් එය 3NF උල්ලංඝනය කරයි. මෙම තීරු සමග සේවක මේසය සලකා බලන්න.
- සේවක හැදුනුම්පත
- මුල් නම
- අවසන් නම
LastName සහ FirstName යන දෙවර්ගයේම සේවකයින්ගේ වටිනාකම මත රඳා පවතීද? හොඳයි, LastName FirstName මත රඳා පවතීද? නැත, LastName හි අද්විතීය දෙයක් නම් FirstName වල අගයන් යෝජනා කරන බැවිනි. FirstName LastName මත රඳා පවතීද? නැවතත්, එකම සත්යය නිසා: LastName විය හැකි කුමන කුමක් වුවද, FirstName අගය අනුව ඉඟියක් ලබා දිය නොහැකි විය. එබැවින් මෙම වගුව 3NF අනුකූල වේ.
නමුත් වාහන වාහන මේසයක් සලකා බලන්න:
- VehicleID
- නිෂ්පාදක
- ආකෘතිය
නිෂ්පාදකයා සහ ආදර්ශය VehicleID වලින් ලබාගත හැකි වුවද, නිෂ්පාදකයාගෙන් නිෂ්පාදකයා වෙතින් නිපදවිය හැකිය. වාහන ආකෘතියක් නිෂ්පාදකයා විසින් පමණි. මෙම වගුව 3NF අනුකූල නොවන අතර, එබැවින්, දත්ත විෂමතා හේතු විය හැක. නිදසුනක් ලෙස, ඔබ නිරවද්යතාව යාවත්කාලීන නොකර නිෂ්පාදකයා යාවත්කාලීන කළ හැකිය.
එය අනුකූල වීම සඳහා, අමතර වගු තීරුවක් වෙනත් වගුවක් වෙත ගෙන යාමට අවශ්ය වන අතර එය විදේශීය යතුර භාවිතා කරමින් එය යොමු කිරීම අවශ්ය වේ. මේ සඳහා වගු දෙකක් ඇත:
වාහන මේස
පහත දැක්වෙන වගුවේ ModelsID මොඩියුලමේ වගුවට විදේශීය යතුරක් වේ:
- VehicleID
- නිෂ්පාදක
- ModelID
මොඩර් වගුව
මෙම නව වගුව නිෂ්පාදකයන්ට ආකෘති සිතියම් සකස් කරයි. ආකෘතියකට අදාල ඕනෑම වාහක තොරතුරු යාවත්කාලීන කිරීමට ඔබට අවශ්ය නම්, වාහන මේසය තුළ නොව, මෙම වගුවෙන් එය සිදු කරනු ඇත.
- ModelID
- නිෂ්පාදක
- ආකෘතිය
3NF ආකෘතියේ ව්යුත්පන්න කරන ලද ක්ෂේත්ර
වගුව ව්යුත්පන්න කළ ක්ෂේත්රයක් අඩංගු විය හැක - වගුවෙහි අනෙක් තීරු මත පදනම්ව ගණනය කරනු ලැබේ. නිදසුනක් ලෙස, විජට් කිරීමේ ඇණවුම් මේ වගුව සලකා බලන්න:
- ඇනවුම් අංකය
- පාරිභෝගික අංකය
- ඒකක මිල
- ප්රමාණය
- මුළු
මුලික යතුර මත සම්පූර්ණයෙන්ම රඳා නොසිට, ප්රමාණයෙන් ඒකක මිල ගණනය කිරීමෙන් ව්යුත්පන්න ලැබිය හැකි නිසා 3NF අනුකූලතාවය සම්පූර්ණ විය. තුන්වන සාමාන්ය ආකෘතියට අනුකූලව මේසය වෙතින් එය ඉවත් කළ යුතුය.
ඇත්ත වශයෙන්ම, එය ව්යුත්පන්න කර ඇති බැවින්, දත්ත ගබඩාවේ එය ගබඩා කිරීම වඩා සුදුසු නොවේ.
දත්ත සමුදා විමසුම් සිදුකරන විට එය "පියාසර කිරීම" සිදු කළ හැකිය. උදාහරණයක් ලෙස, අපි කලින් ඇණවුම් අංක සහ මුළු ලකුණු ලබා ගැනීම සඳහා අප විසින් මීට පෙර භාවිතා කර තිබෙන්නට ඇත:
SELECT අනුපිළිවෙලේ අංකය, WidgetOrders වෙතින් සම්පූර්ණපහත සඳහන් විමසුම අපට දැන් භාවිතා කළ හැක:
SELECT අනුපිළිවෙලේ අංකය, UnitPrice * ප්රමාණය AS WidgetOrders වෙතින් සම්පූර්ණසාමාන්යකරණ නීතිරීති උල්ලංඝනය නොකර එකම ප්රතිඵල ලබා ගැනීම.