1. ENUM දත්ත වර්ගය පිළිබඳ සමාලෝචනය
ENUM දත්ත වර්ගය යනු කුමක්ද?
MySQL ENUM (enumeration) දත්ත වර්ගය පෙරනිමි ලැයිස්තුවකින් නියමිත එකම අගයක් ගබඩා කරයි. ලැයිස්තුවේ නියමිත විශේෂිත අක්ෂර මාලා පමණක් තීරුවේ සුරැකිය හැකි බැවින්, එය දත්ත සමගත්යතාව රැක ගැනීමට සහ අවලංගු දත්ත ඇතුළත් කිරීම වැළැක්වීමට උපකාරී වේ.
උදාහරණයක් ලෙස, පරිශීලකයන් ලිංගය හෝ නිෂ්පාදන වර්ගය වැනි සීමිත කට්ටලයකින් එකක් තෝරාගත යුතු වන විට, ENUM භාවිතා කිරීම අතිරේක වලංගුකරණ පරීක්ෂණ අවශ්යතාවය ඉවත් කරයි. පහත දැක්වෙන්නේ ENUM තීරුවක් ඇතුළත් වගුවක් නිර්මාණය කිරීමේ උදාහරණයකි:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
category ENUM('Food', 'Clothing', 'Electronics', 'Furniture') NOT NULL
);
මෙම උදාහරණයේ, “category” තීරුව පහත සඳහන් නාලිකා අගයන්ගෙන් එකක් පමණක් ගබඩා කළ හැක: “Food”, “Clothing”, “Electronics”, හෝ “Furniture”. මෙය දත්ත කළමනාකරණය සරල කරයි සහ වැරදි ඇතුළත් කිරීමේ අවදානම අඩු කරයි.
ENUM හි ප්රධාන භාවිතා අවස්ථා
ENUM දත්ත වර්ගය ප්රධාන වශයෙන් පහත සඳහන් අවස්ථා වල භාවිතා වේ:
- තත්ත්ව කළමනාකරණය : “Not Started”, “In Progress”, “Completed” වැනි ව්යාපෘති ප්රගති තත්ත්වයන් ගණනය කිරීම.
- වර්ගීකරණය : නිෂ්පාදන, පරිශීලක වර්ග, හෝ රැකියා භූමිකා වැනි පෙරනිමි වර්ග විකල්ප කළමනාකරණය.
- ශ්රේණිගත කිරීම : ක්රීඩා කෂ්ටතා මට්ටම් (“Beginner”, “Intermediate”, “Advanced”) හෝ නිෂ්පාදන ශ්රේණිගත කිරීම (“Good”, “Average”, “Poor”).
2. ENUM හි වාසි සහ අවාසි
වාසි
- දත්ත සමගත්යතාවය වැඩිදියුණු කිරීම ENUM සමඟ, පෙරනිමි ලැයිස්තුවේ ඇතුළත් අගයන් පමණක් ගබඩා කළ හැකි බැවින්, දත්ත සමගත්යතාවය සහතික කරයි සහ කළමනාකරණය පහසු කරයි. උදාහරණයක් ලෙස, ලිංගය කළමනාකරණය කරන විට, “Male” හෝ “Female” වැනි විශේෂිත අගයන් පමණක් ඉඩ දෙන අතර, වැරදි ඇතුළත් කිරීම වැළැක්වේ.
- ගබඩා කාර්යක්ෂමතාව එක් එක් ENUM අගයක් අභ්යන්තරයෙන් පූර්ණ සංඛ්යාත අංකයක් ලබා දේ, එනම් අගයන් පූර්ණ සංඛ්යාත ලෙස ගබඩා වේ. VARCHAR සමඟ සැසඳූ විට, මෙය ගබඩා භාවිතය අඩු කරයි. උදාහරණයක් ලෙස, ‘small’ හෝ ‘large’ වැනි ප්රමාණ තොරතුරු VARCHAR භාවිතයෙන් ගබඩා කිරීම වැඩි ගබඩා අවශ්ය කරයි, එත් ENUM සමඟ නිර්වචනය කිරීම කාර්යක්ෂම ගබඩා කිරීමක් සලසයි.
අවාසි
- විකල්පතා අඩුවීම ENUM පෙරනිමි අගයන් පමණක් ඉඩ දෙන බැවින්, නව අගයන් එකතු කිරීම සඳහා වගුවේ ව්යුහය වෙනස් කිරීම අවශ්ය වේ. එබැවින්, විකල්පයන් නිතර ගතිකව වෙනස් වන අවස්ථා සඳහා එය සුදුසු නොවේ.
- සංකීර්ණ දෝෂ හසුරුවීම අවලංගු අගයක් ඇතුළත් කළහොත්, දෝෂයක් සිදුවිය හැකිය හෝ හිස් අක්ෂර මාලාවක් ගබඩා විය හැකිය. මෙම හැසිරීම සංවර්ධකයන් සඳහා දෝෂ නිරාකරණය සංකීර්ණ කරයි.
3. ENUM හි වින්යාසය සහ භාවිතා උදාහරණ
මූලික සැකසීම සහ දෝෂ හසුරුවීම
ENUM දත්ත වර්ගයක් සැකසීම සරලව ඉඩ දෙන අක්ෂර මාලා ලැයිස්තුව නියම කිරීමෙන් සිදු වේ. පහත දැක්වෙන්නේ වගුවක ENUM තීරුවක් නිර්වචනය කිරීමේ උදාහරණයකි:
CREATE TABLE shirts (
id INT AUTO_INCREMENT PRIMARY KEY,
size ENUM('XS', 'S', 'M', 'L', 'XL') NOT NULL
);
මෙම අවස්ථාවේ, “size” තීරුව පහත සඳහන් පස් අගයන්ගෙන් එකක් පමණක් ගබඩා කළ හැක: “XS”, “S”, “M”, “L”, හෝ “XL”. ලැයිස්තුවේ නොමැති අගයක් (උදාහරණයක් ලෙස, ‘XXL’) ඇතුළත් කිරීමට උත්සාහ කළහොත්, Data truncated දෝෂයක් සිදුවේ. මෙය පෙරනිමි ලැයිස්තුවෙන් පිටත අගයන් ගබඩා වීම වැළැක්වයි සහ දත්ත සමගත්යතාවය රැක ගැනීමට උපකාරී වේ.
ප්රායෝගික උදාහරණ
ඊළඟට, පරිශීලක භූමිකා (“Administrator”, “Regular User”, “Guest”) කළමනාකරණය සඳහා ENUM භාවිතා කිරීමේ උදාහරණයක් මෙහි ඇත:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
role ENUM('Administrator', 'Regular User', 'Guest') NOT NULL
);
භූමිකා අනුව විවිධ අවසර ලබා දීමේදී, ENUM තීරුවක් භාවිතා කිරීම දත්ත සමගත්යතාවය රැක ගැනීමට පහසු කරයි. 
4. ENUM දර්ශක සහ NULL හසුරුවීම
දර්ශක අගයන් භාවිතා කිරීම
එක් එක් ENUM අගයක් ලැයිස්තුවේ ස්ථානය අනුව 1 සිට ආරම්භ වන සංඛ්යාත දර්ශකයක් ලබා දේ. උදාහරණයක් ලෙස, ප්රමාණ තොරතුරු ගබඩා කරන පහත දැක්වෙන ENUM තීරුව සලකා බලන්න:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
size ENUM('S', 'M', 'L', 'XL')
);
“S” වෙත සුචකය 1 ප්රමාණවත් කරනු ලැබේ, “M” සුචකය 2, ආදිය. මෙම සුචක වලංගු WHERE තත්ත්වවලදී කාර්යක්ෂම දත්ත මෙහෙයුම් සඳහා භාවිතා කළ හැක.
SELECT * FROM products WHERE size = 2;
මෙම විමසුම් “M” ප්රමාණය ඇති වාර්තා ලබා ගනී.
NULL සහ හිස් විලාසයන් කළමනාකරණය
එක්කෙනුත් ENUM තීරුවක NULL ඉඩහැරීම ඇති නම්, නිර්මාණාත්මක ලැයිස්තුවේ කොටසක් නොවන NULL වලංගු සංරක්ෂණය කළ හැක. තවද, අනීතික දත්ත ඇතුළු කරන විට හිස් විලාසයක් බවට පරිවර්තනය වන අතර, එය සුචකය 0 සමඟ සංරක්ෂණය වේ. මෙම හැසිරීම වැරදි ආදාන හඳුනා ගැනීමට හැකි කරයි.
5. ENUM හි අක්ෂර සමූහ සහ සංසන්දන
අක්ෂර සමූහ සහ සංසන්දන සකස් කරන්නේ කෙසේද
CHAR සහ VARCHAR මෙන්, ENUM දත්ත වර්ගයට අක්ෂර සමූහයක් සහ සංසන්දනයක් විශේෂණය කිරීමට ඉඩ ලැබේ. මෙය බහු භාෂා පද්ධති ගොඩනැගීමේදී හෝ සංසන්දන නීති මත රඳා පවතින සෙවීම් සිදු කිරීමේදී විශේෂයෙන් වැදගත් වේ. පහත දැක්වෙන්නේ උදාහරණයකි:
CREATE TABLE documents (
id INT AUTO_INCREMENT PRIMARY KEY,
language ENUM('Japanese', 'English', 'Chinese') CHARACTER SET utf8 COLLATE utf8_general_ci
);
මෙම උදාහරණයේදී, UTF-8 අක්ෂර සමූහය සහ සාමාන්ය සංසන්දනයක් විශේෂණය කර ඇත.
6. ENUM හි ව්යාප්තිය සහ විකල්ප
ENUM ව්යාප්ත කිරීමේ උපාය මාර්ග
ENUM අනිශ්චිත වලංගු සංරක්ෂණය සඳහා නම්යශීලත්වයක් නොමැති නිසා, එය ගතිකව වෙනස් වන දත්ත සඳහා සුදුසු නොවේ. එක් ප්රවේශයක් වන්නේ “වෙනත්” විකල්පයක් එකතු කිරීම සහ වෙනම නිදහස් පාඨ විලාසයක් සැපයීමයි:
ALTER TABLE products
MODIFY COLUMN category ENUM('Food', 'Clothing', 'Electronics', 'Furniture', 'Other') NOT NULL,
ADD COLUMN category_other VARCHAR(255) DEFAULT NULL;
මෙලෙස, ENUM ලැයිස්තුවේ ඇතුළත් නොවන වලංගු වෙනම VARCHAR විලාසයක සංරක්ෂණය කළ හැකි අතර, අවශ්ය විට ගතිකව කළමනාකරණය කිරීමට ඉඩ ලැබේ.
විකල්ප ලෙස SET හෝ VARCHAR භාවිතය
ENUM වෙනුවට, ඔබේ යෙදුම් අවශ්යතා මත රඳා පවතින SET දත්ත වර්ගය (බහු තේරීම් ඉඩදීම) හෝ වඩා නම්යශී VARCHAR දත්ත වර්ගය සලකා බැලිය හැක.


