21. การทาตารางเป็น 1NF
Serv Server Board Charac Character Character Info
ID
ID Name Name ter ID Name LV Class Name Job Name
0 Mochi 1 Adolescence 34 Archer
thep44 Nopakun~* Fighter
1 Adolescence 41 Scout
Takoyaki
thanyapol thanyapol 15 NeoS Backpacker Mechanic
1 99
78 parazettamon Bard
Takoyaki kunemata kunemata Spell User
150 Sufflez 76 Sage
0 Mochi 104 Harasama 64 Dark Stalker
Fighter
olfactory harasama 119 Reizinixc 99 Bounty Hunter
1 Takoyaki
183 ReizinixcII 36 Backpacker Tatarabe
22. การทาตารางเป็น 1NF
• Attribute ใดที่ซ้อนกับ Attribute ให้เอา Attribute นั้นออก
Serv Server Board Charac Character Character Info
ID
ID Name Name ter ID Name LV Class Name Job Name
Serv Server Board Charac Character
ID LV Class Name Job Name
ID Name Name ter ID Name
23. การทาตารางเป็น 1NF
• ข้อมูลแบบ Multivalue ต้องแยกเป็นแต่ละแถว
Serv Server Board Charac Character
ID LV Class Name Job Name
ID Name Name ter ID Name
0 Mochi thep44 Nopakun~* 1 Adolescence 34 Fighter Archer
1 Takoyaki thep44 Nopakun~* 1 Adolescence 41 Fighter Scout
1 Takoyaki thanyapol thanyapol 15 NeoS 99 Backpacker Mechanic
1 Takoyaki kunemata kunemata 78 parazettamon 99 Spell User Bard
1 Takoyaki kunemata kunemata 150 Sufflez 76 Spell User Sage
0 Mochi olfactory harasama 104 Harasama 64 Fighter Dark Stalker
1 Takoyaki olfactory harasama 119 Reizinixc 99 Fighter Bounty Hunter
1 Takoyaki olfactory harasama 183 ReizinixcII 36 Backpacker Tatarabe
24. การทาตารางเป็น 1NF
• ทุก Attribute ต้องขึ้นกับ Primary Key
Serv Server Board Charac Character
ID LV Class Name Job Name
ID Name Name ter ID Name
0 Mochi thep44 Nopakun~* 1 Adolescence 34 Fighter Archer
1 Takoyaki thep44 Nopakun~* 1 Adolescence 41 Fighter Scout
1 Takoyaki thanyapol thanyapol 15 NeoS 99 Backpacker Mechanic
1 Takoyaki kunemata kunemata 78 parazettamon 99 Spell User Bard
1 Takoyaki kunemata kunemata 150 Sufflez 76 Spell User Sage
0 Mochi olfactory harasama 104 Harasama 64 Fighter Dark Stalker
1 Takoyaki olfactory harasama 119 Reizinixc 99 Fighter Bounty Hunter
1 Takoyaki olfactory harasama 183 ReizinixcII 36 Backpacker Tatarabe
25. รูปแบบบรรทัดฐานที่ 2
• รูปแบบบรรทัดฐานที่ 2 = Second Normal Form (2NF)
• มีหลายเหตุผลที่ต้องทาตารางให้เป็น 2NF
– ปัญหาความซ้าซ้อนของข้อมูล
• ตาราง 2NF ต้องผ่านคุณสมบัติทั้งหมดของ 1NF มาก่อน
• 2NF จะไม่มี Dependent Set ใด ๆ ขึ้นกับบางส่วนของ Primary Key
– ไม่มี Partial Dependency
26. การทาตารางเป็น 2NF
• พิจารณา Partial Dependency ของตาราง
Serv Server Board Charac Character
ID LV Class Name Job Name
ID Name Name ter ID Name
{Serv ID, Character ID} {Server Name, ID, Board Name, Character
Name, LV, Class Name, Job Name}
{Serv ID} {Server Name}
27. การทาตารางเป็น 2NF
• แยกตาราง โดยย้าย Dependent Set ให้ไปอยู่ที่ตารางใหม่ และให้
ตารางใหม่มี PK คือ Determinant Set
• ตั้งชื่อ Schema ใหม่ที่แยกออกมา
Serv Server
ตารางรายชื่อเซิร์ฟเวอร์ ID Name
ตารางลักษณะตัวละคร
Serv Board Character Character
ID LV Class Name Job Name
ID Name ID Name
29. การทาตารางเป็น 3NF
• พิจารณา Transitive Dependency ของตาราง
• อย่าลืมพิจารณาตารางที่ถูกแยกจาก 2NF ด้วย
Serv Server
ตารางรายชื่อเซิร์ฟเวอร์ ID Name
ตารางลักษณะตัวละคร
Serv Board Character Character
ID LV Class Name Job Name
ID Name ID Name
{ID} {Board Name}
{Job Name} {Class Name}
30. ECO Job System[2]
1st Class 2nd Class 3rd Class 1st Class 2nd Class 3rd Class 1st Class 2nd Class 3rd Class
Blademaster Sorcerer Blacksmith
Swordman Gladiator Wizard Force Master Tatarabe Maestro
Bounty Hunter Sage Machinery
Knight Elementer Alchemist
Fencer Guardian Shaman Astralist Farmer Harvest
Dark Stalker Enchanter Marionette
Assasin Druid Explorer
Scout Eraser Vates Cardinal Ranger Strider
Commando Bard Treasure Hunter
Striker Cabalist Trader
Archer Hawker Warlock Soultaker Merchant Royal Dealer
Gunner Warlock Gambler
Fighter Class Spell User Class Backpacker Class
31. การทาตารางเป็น 3NF
• แยกตาราง โดยย้าย Dependent Set ให้ไปอยู่ที่ตารางใหม่ และให้
ตารางใหม่มี PK คือ Determinant Set
• ตั้งชื่อ Schema ใหม่ที่แยกออกมา
ตารางลักษณะตัวละคร
Serv Character Character
ID LV Job Name
ID ID Name
ตารางรายชื่อเซิร์ฟเวอร์ ตารางชื่อในเว็บบอร์ด ตารางคลาสอาชีพ
Serv ID Server Name ID Board Name Job Name Class Name
35. การทาตารางเป็น BCNF
• การเปลี่ยนให้เป็น BCNF ทาได้โดยเปลี่ยน Determinant Set ที่ไม่ใช่
PK มาเป็น PK แทน ส่วน Dependent Set นั้นเปลี่ยนเป็น Attribute
ธรรมดา
Teacher Name Semester Year Course ID sec Capacity
Teacher Name Semester Year Course ID sec Capacity
36. การทาตารางเป็น BCNF
• ในกรณีที่ Determinant Set เป็น Attribute ที่ไม่ได้อยู่ใน PK ทั้งหมด
การเปลี่ยนเป็น BCNF อาจทาให้เกิด Partial Dependency ได้
A B C D E
C B D A E
B C A
B C D E