กระบวนการปรับบรรทัดฐาน Normalization Process อาจารย์กัญณัฏฐ์ สุริยันต์ สาขาคอมพิวเตอร์ธุรกิจ วิทยาลัยเทคโนโลยีสยาม
กระบวนการปรับบรรทัดฐาน หมายถึง ทฤษฎีที่นำมาใช้ในการแปลงตารางข้อมูลที่มีรูปแบบที่ซับซ้อนให้อยู่ในรูปแบบที่ง่ายต่อการนำไปใช้งานและก่อให้เกิดปัญหาน้อยที่สุด โดยกระบวนการปรับบรรทัดฐาน มีทั้งหมด 5 ระดับ - 1NF 2 NF 3 NF BCNF 4 NF
ลักษณะของตารางข้อมูลที่มีความซับซ้อน เช่น ตารางรายงานการทำงานมีไว้สำหรับบันทึกข้อมูลการทำงานของคนงาน โดยมีกฎว่าคนงานหนึ่งคนจะต้องผลัดเปลี่ยนกันทำงาน ในสถานที่ก่อสร้างได้หลายๆ สถานที่ ตารางรายงานการทำงาน
ตารางรายงานการทำงาน
ทำไมถึงมองว่าตารางเป็นตารางที่ซับซ้อน 1. ตารางมีลักษณะเป็น Multivalued Attribute คือ ในหนึ่งคอลัมน์มีข้อมูลมากกว่า 1 ค่า จากตารางการทำงานข้างต้น แสดงให้เห็นว่า คนงานแต่ละคนจะถูกกำหนดให้ไปทำงานในสถานที่ก่อสร้างได้มากกว่า หนึ่งแห่ง ตารางรายงานการทำงาน
ทำไมถึงมองว่าตารางเป็นตารางที่ซับซ้อน 2. ตารางมีกลุ่มข้อมูลซ้ำ(Repeating Groups) ในคอลัมน์ คือ การเกิดข้อมูลที่ซ้ำกัน ภายในคอลัมน์ ตารางรายงานการทำงาน
สัญลักษณ์ข้อความที่ใช้แทนตารางที่ยังไม่ผ่านกระบวนการปรับบรรทัดฐาน (Unnormalized From) รายงานการทำงาน(รหัสคนงาน, ชื่อ,ประเภทความชำนาญ,อัตราโบนัส,จำนวนช.ม ขั้นต่ำ,รหัสผู้ควบคุม,อัตราค่าแรง/ช.ม ( รหัสสถานที่ก่อนสร้าง, ที่อยู่สถานที่ก่อสร้าง, ประเภทสถานที่ก่อสร้าง, วันที่เริ่มทำงาน,จำนวนช.มที่ทำ) ) ตารางรายงานการทำงาน
รายงานการทำงาน(รหัสคนงาน, ชื่อ,ประเภทความชำนาญ,อัตราโบนัส,จำนวนช รายงานการทำงาน(รหัสคนงาน, ชื่อ,ประเภทความชำนาญ,อัตราโบนัส,จำนวนช.ม ขั้นต่ำ,รหัสผู้ควบคุม,อัตราค่าแรง/ช.ม( รหัสสถานที่ก่อนสร้าง, ที่อยู่สถานที่ก่อสร้าง, ประเภทสถานที่ก่อสร้าง, วันที่เริ่มทำ,จำนวนช.มที่ทำ ) ) อธิบาย 1.แอนทริบิวท์ที่อยู่วงเล็บในสุด คือรหัสสถานที่ก่อนสร้าง, ที่อยู่สถานที่ก่อสร้าง, ประเภทสถานที่ก่อสร้าง, วันที่เริ่มทำ,จำนวนช.ม จะแทนแอนทริบวิท์ที่มีข้อมูลเป็นกลุ่มข้อมูลที่ซ้ำกัน(Repeating Group) และเป็นกลุ่มข้อมูลที่มีหลายค่า (Multivalued Attribute) 2.ดังนั้นตารางใดที่ประกอบไปด้วยกลุ่มข้อมูลลักษณะนี้จะถือว่าผิดคุณสมบัติของตารางที่ดี และเป็นตารางที่มีโครงสร้างที่ซับซ้อนยากแก่การจัดการข้อมูล 3. ฉะนั้นจะต้องนำกลุ่มข้อมูลที่ซ้ำกันและมีหลายค่าต่อไปนี้มาผ่านกระบวนการปรับบรรทัดฐานก่อน เพื่อกำจัดกลุ่มข้อมูลลักษณะนี้ออกไป และสร้างเป็นตารางใหม่ซึ่งจะเป็นการแตกตารางออกเป็นตารางย่อยหลายตาราง
ฟังก์ชันการขึ้นต่อกัน (Functional Dependency) คือการแสดงให้เห็นถึงความสัมพันธ์ระหว่างแอททริบวิท์ต่างๆ ภายในตาราง เช่นตารางหนึ่งตารางประกอบไปด้วย แอททริบิวท์ A,B,C หากทราบค่าแอททริบิวท์ A แล้วสามารถบอกค่าแอททริบิวท์ B,C ได้ แสดงว่า แอททริบิวท์B,C มีฟังก์ชันการขึ้นต่อกันกับ แอททริวบิวต์ A หรือกล่าวง่ายๆว่า B,C ขึ้นกับ A สัญลักษณ์ดังนี้ A B,C
ประเภทของฟังก์ชันการขึ้นต่อกัน มี 3 ประเภท ประเภทของฟังก์ชันการขึ้นต่อกัน มี 3 ประเภท การขึ้นต่อกันอย่างสมบูรณ์(Complete dependencies) การขึ้นต่อกันเพียงบางส่วน(Partial Dependencies) การขึ้นต่อกันแบบทรานซิทีฟ(Transitive Dependencies)
1.การขึ้นต่อกันอย่างสมบูรณ์(Complete dependencies) ทุกแอททริบิวท์ที่ไม่ใช่คีย์ขึ้นกับคีย์หลักทั้งหมด รหัสสินค้า ชื่อสินค้า รหัสสินค้า ราคา รหัสสินค้า ชื่อสินค้า, ราคา รหัสสินค้า ชื่อสินค้า ราคา
ตัวอย่างจากตารางที่กำหนดให้ ตัวอย่าง1 ถ้าตารางคนงาน ประกอบด้วยแอททริบิวท์ต่างๆ ดังแสดงเป็นสัญลักษณ์ข้อความดังนี้ คนงาน(รหัสคนงาน, ชื่อคนงาน, ประเภทความชำนาญ,รหัสควบคุม,อัตราค่าแรง/ช.ม.) ตารางคนงาน จะมี รหัสคนงาน เป็นคีย์หลัก ดังนั้น ถ้าอ้างถึงรหัสคนงานเพียงหนึ่งรหัส จะทำให้ทราบถึงข้อมูลที่อยู่ในแอททริบิวท์อื่นๆ ของคนงานที่มีรหัสนั้น เขียนเป็นสัญลักษณ์การขึ้นต่อกัน รหัสคนงาน ชื่อคนงาน, ประเภทความชำนาญ,รหัสควบคุม,อัตราค่าแรง/ช.ม.
2.การขึ้นต่อกันเพียงบางส่วน(Partial Dependencies) แอททริบิวท์ที่ไม่ใช่คีย์ขึ้นอยู่กับบางส่วนของคีย์หลัก มักเกิดกับตารางที่มีการใช้แอททริบิวท์ร่วมกันสองตัวเป็นคีย์หลัก FD1 : A,B C, D FD2 : B C A B C D
ตัวอย่าง จากสัญลักษณ์ข้อความตาราง ดังต่อไปนี้ การทำงาน (รหัสคนงาน, รหัสถานที่ก่อสร้าง,ชื่อคนงาน, ประเภทสถานที่ก่อสร้าง,ที่ตั้งสถานที่ก่อสร้าง) ตารางการทำงานนี้ จะมี รหัสคนงาน และ รหัสสถานที่ก่อสร้างเป็นคีย์หลักร่วมกัน เขียนเป็นสัญลักษณ์การขึ้นต่อกัน ได้ดังนี้ รหัสคนงาน ชื่อคนงาน ประเภทสถานที่ก่อสร้าง,ที่ตั้งสถานที่ก่อสร้าง รหัสสถานที่ก่อสร้าง
3.การขึ้นต่อกันแบบทรานซิทีฟ(Transitive Dependencies) แอตทริบิวท์ที่ไม่ใช่คีย์หลัก สามารถระบุค่าแอททริบิวต์อื่นภายในตารางได้ FD1 : A B,C,D FD2 : C D A B C D
ตัวอย่าง คนงาน-ชำนาญ(รหัสคนงาน,ชื่อคนงาน, ประเภทความชำนาญ,อัตราโบนัส,จำนวน ช.ม. ที่ต้องทำขั้นต่ำ,รหัสผู้ควบคุม, อัตราค่าแรง/ช.ม) จากตาราง คนงาน-ชำนาญ มี รหัสคนงาน เป็นคีย์หลัก โดย แอททริบวิท์ที่เหลือจะขึ้นกับ รหัสคนงาน ทั้งหมด แต่ มีเพียงบางแอททริบิวท์ เช่น แอททริบิวท์ อัตราโบนัสและจำนวนชั่วโมงที่ต้องทำขั้นต่ำ ที่ขึ้นกับแอททริบวิท์ ประเภทความชำนาญ ซึ่งแอททริบวิท์ทั้ง 3 ไม่ใช่คีย์หลักหรือส่วนหนึ่งของคีย์หลัก จึงเรียกการขึ้นต่อกันระหว่าง แอททริบวิท์ที่ไม่ใช่คีย์หลักว่า การขึ้นต่อกันแบบทรานซิทีฟ เขียนเป็นสัญลักษณ์การขึ้นต่อกัน ได้ดังนี้ ประเภทความชำนาญ อัตราโบนัส,จำนวนชั่วโมงที่ต้องทำขั้นต่ำ
กระบวนการปรับบรรทัดฐาน
1.รูปแบบบรรทัดฐานระดับ1(First Normal Form : 1 NF) 1.รูปแบบบรรทัดฐานระดับ1(First Normal Form : 1 NF) ตารางที่อยู่ในรูปแบบบรรทัดฐานระดับที่ 1 ได้ ตารางนั้นจะต้องมีคุณสมบัติต่อไปนี้ 1. ตารางต้องมีคีย์หลัก 2. ไม่มีกลุ่มข้อมูลซ้ำ(Multivalue Attribute) อยู่ในตาราง 3. แอททริบิวท์ที่ไม่ใช่คีย์หลักจะต้องขึ้นกับแอททริบวิท์ที่เป็นคีย์หลักอย่างสมบูรณ์( Compete dependencies)
ตารางรายงานการทำงาน ตารางยังไม่มีการกำหนดคีย์หลัก ตารางยังมีกลุ่มข้อมูลซ้ำกัน ยังไม่มีแอททริบิวท์ที่ไม่ใช่คีย์หลักจะต้องขึ้นกับแอททริบิวท์ที่เป็นคีย์หลักอย่างสมบูรณ์ ( Compete dependencies)เพราะตารางยังไม่มีคีย์หลัก
ขั้นตอนการปรับบรรทัดฐานระดับ 1 มี 2 ขั้นตอน ตารางการทำงาน ขั้นตอนการปรับบรรทัดฐานระดับ 1 มี 2 ขั้นตอน 1. แยก แอททริบวิท์ ที่ไม่มีกลุ่มข้อมูลซ้ำกัน Repeating Group ออกมาสร้างเป็นตารางใหม่พร้อมตั้งชื่อและกำหนด Primary Keyให้กับตารางด้วย ตารางคนงาน-ชำนาญ
2.แยกแอททริบิวท์ที่มีกลุ่มข้อมูลซ้ำออกมาสร้างเป็นตารางใหม่พร้อมกำหนดprimary key และนำprimary key ของตารางที่ได้จากข้อ1 มาเป็นคีย์ร่วมภายในตารางด้วย พร้อมตั้งชื่อตาราง ตาราง การทำงาน –ก่อสร้าง
สามารถเขียนสัญลักษณ์ข้อความแทนตารางทั้งสองได้ดังนี้ คนงาน-ชำนาญ(รหัสคนงาน, ชื่อคนงาน, ประเภทความชำนาญ, อัตราโบนัส, จำนวนช.ม. ขั้นต่ำ, รหัสผู้ควบคุม,อัตราค่าแรง/ช.ม.) การทำงาน-ก่อสร้าง (รหัสคนงาน, รหัสสถานที่ก่อสร้าง,ที่อยู่สถานที่ก่อสร้าง, ประเภทสถานที่ก่อสร้าง,วันที่เริ่มทำงาน, จำนวนช.ม.ที่ทำ)
สรุปเมื่อผ่าน 1 NF จะได้ทั้งหมด 2 ตารางคือ ตารางคนงาน-ชำนาญ ตาราง การทำงาน –ก่อสร้าง
รูปแบบบรรทัดฐานระดับที่ 2 นิยาม 2 NF ตารางใดที่อยู่ในรูปแบบบรรทัดฐานระดับที่ 2 จะมีคุณสมบัติดังต่อไปนี้ ตารางนั้นต้องอยู่ในรูปแบบ 1 NF ภายในตารางต้องไม่มีการขึ้นต่อกันเพียงบางส่วน (Partial dependencies)
ผ่านบรรทัดฐาน 1 NF มาแล้วแต่ยังไม่มีคุณสมบัติ ตาราง การทำงาน –ก่อสร้าง
จากนิยามของตารางที่มีรูปแบบ 2 NF นั้น พบว่าตาราง การทำงาน-ก่อสร้าง จะไม่อยู่ในรูปแบบ 2 NF เพราะว่า มีแอททริบิวท์ที่ไม่ใช่คีย์หลักบางตัว (ได้แก่ ที่อยู่สถานที่ก่อสร้าง และ ประเภทสถานที่ก่อสร้าง)ขึ้นกับแอททริบวิท์ที่เป็นส่วนหนึ่งของคีย์หลัก(รหัสสถานที่ก่อสร้าง)
ขั้นตอนการปรับบรรทัดฐานระดับ 2 มี 2 ขั้นตอน 1. แยกกลุ่มของ แอททริบิวท์ที่ขึ้นกันบางส่วนของคีย์หลักออกเป็นตารางใหม่พร้อมตั้งชื่อตารางและกำหนดPrimary key ด้วย สถานที่ก่อสร้าง สถานที่ก่อสร้าง (รหัสสถานที่ก่อสร้าง, ที่อยู่สถานที่ก่อสร้าง, ประเภทสถานทีก่อสร้าง)
2.สำหรับAttribute ที่เหลือให้ขึ้นกับ คีย์หลักร่วมเหมือนเดิมพร้อมตั้งชื่อตารางใหม่ การทำงาน การทำงาน(รหัสคนงาน, รหัสสถานที่ก่อสร้าง, วันที่เริ่มทำงาน, จำนวนช.มที่ทำ)
จากขั้นตอนการปรับบรรทัดฐานของตารางรายงานการทำงาน เพื่อทำให้อยู่ในรูปแบบ 1NF และ 2 NF จะทำให้เกิดตารางย่อย ดังต่อไปนี้ ตารางคนงาน-ชำนาญ การทำงาน สถานที่ก่อสร้าง
รูปแบบบรรทัดฐานระดับที่ 3 (Third Normal Form : 3 NF) ตารางที่มีรูปแบบบรรทัดฐานระดับที่ 3 จะต้องมีคุณสมบัติตามนิยามต่อไปนี้ ตารางนั้นอยู่ในรูปแบบบรรทัดฐาน 2 (2NF) ต้องไม่มีการขึ้นต่อกันแบบทรานซิทีฟ (Transitive dependencies) หมายถึง ต้องไม่มีแอททริบิวต์ที่ไม่ใช่คีย์หลัก สามารถระบุค่าแอททริบิวต์อื่นภายในตารางเดียวกันได้
จากตารางทั้ง 3 ที่ผ่านการปรับบรรทัดฐานระดับที่ 2(2NF) แล้ว มี 3 ตาราง คือ ตารางคนงาน-ชำนาญ,ตารางการทำงาน,ตารางสถานที่ก่อสร้าง พบว่ายังมีตารางที่ไม่ผ่านบรรทัดฐานระดับที่ 3 อยู่ 1 ตารางคือ ตารางคนงาน-ชำนาญ เนื่องจาก ยังมีแอทริบิวท์ที่ไม่ใช่คีย์หลักสามารถระบุค่าแอทริบิวท์อื่นๆในตารางได้
ขั้นตอนการปรับบรรทัดฐานระดับ 3 มี 2 ขั้นตอน 1. ทำการแยกแอททริบิวท์ที่มีการขึ้นต่อกันแบทรานซิทีฟ ออกมาสร้างเป็นตารางใหม่อีกหนึ่งตาราง พร้อมกำหนดให้แอททริบวิท์ที่เป็นตัวระบุค่าแอททริบวิต์อื่นเป็นคีย์หลัก พร้อมตั้งชื่อตารางด้วย ตารางความชำนาญ
2. แอททริบิวท์ทีเหลือให้อยู่ที่ตารางเดิม และนำแอททริบิวท์ที่เป็นตัวระบุค่าแอททริบิวท์อื่นจะต้องอยู่ในตารางเดิมด้วย เพื่อทำหน้าที่เป็น คีย์นอก(FK) เชื่อมโยงไปยังคีย์หลักของตารางใหม่อีกที และตั้งชื่อตารางใหม่ด้วย ตารางคนงาน
ลักษณะการเชื่อมโยงของทั้งสองตารางจะเป็นดังนี้ ตารางคนงาน ตารางความชำนาญ
การแยกตารางรายงานการทำงาน ให้อยู่ในรูปแบบ 1NF-3 NF จะมีตารางย่อยเกิดขึ้นดังนี้ ตารางความชำนาญ ประเภทความชำนาญ อัตราโบนัส จำนวน ช.ม. ขั้นต่ำ ตารางคนงาน รหัสคนงาน ชื่อคนงาน ประเภทความชำนาญ รหัสผู้ควบคุม อัตราแรงต่อช.ม. ตารางการทำงาน รหัสคนงาน รหัสสถานที่ก่อสร้าง วันที่เริ่มทำงาน จำนวนช.ม ที่ทำ ตารางสถานที่ก่อสร้าง รหัสสถานที่ก่อสร้าง ที่อยู่สถานที่ก่อสร้าง ประเภทสถานที่ก่อสร้าง
การบ้าน จงปรับตารางรายงานการขายของพนักงานภายในบริษัทแห่งหนึ่ง ต่อไปนี้ให้อยู่ในรูปแบบ 1 NF- 3 NF ตารางรายงานการขาย รหัสพนักงาน ชื่อพนักงาน จังหวัด ภาค รหัสสินค้า ชื่อสินค้า จำนวน ที่ขาย 001 วีระชาติ กรุงเทพฯ กลาง p001 p002 Monitor Mouse 5 10 002 สมชาย เชียงใหม่ เหนือ P003 Keyboard CD-ROM 3 4 1