ร ู ปแบบบรรทด ั ฐานของรีเลชัน สาระการเร ี ยนร ้ ู 1. การท ารีเลชันให ้ อย ู่ในรูปแบบทเ ี่ป็ นบรรทดัฐาน 2. ภาษาทใี่ช ้ในการออกแบบฐานข ้ อมูล
การท ารีเลช ั นให ้ อย ่ ู ในร ู ปแบบที่ เป็ นบรรทัดฐาน การท ารีเลชันให ้ อย ู่ในรูปแบบทเ ี่ป็ นบรรทดัฐาน แนวคิดในการท ารีเลชนั ให ้ อยู่ในรูปแบบท ี่เป็ นบรรทดัฐาน (Normalization) ไดถ ู้กคิดข ้ึ นโดย E.F.Codd ในปี พ.ศ. 2515 หลงัจากน ้ นั Boyce และ Codd ได้คิด รูปแบบการทา ให ้ รัดกุมข ้ึ น จ ึ งต ้ งัช ื่อรูปแบบรีเลชันที่เป็ นบรรทดัฐานน ้ ีใหม่ว่า Boyce Codd Normal Form หรือ BCNF นบัเป็ นข ้ นัตอนการนา เคา ้ ร่างของรีเลชัน มาทา ใหอ ้ ยใู่นรูปแบบท ี่เป็ นบรรทดัฐาน (Normal Form) โดยรูปแบบบรรทัดฐาน แบบต่างๆ ม ี ดงัน ้ ี รูปแบบบรรทดัฐานระดบัท ี่1 (First Normal Form : 1 NF) ตวัอยา่งรีเลชนัท ี่ไม่อยใู่นรูปแบบบรรทดัฐาน เป็ นร ีเลชันของการสั่งสินคา ้ ซ่ึ งแต่ละคร ้ังของการสงั่สินคา ้ ลูกคา ้ จะสามารถสงั่สินคา ้ไดม ้ ากกวา่ 1 ชนิด 01
รูปแบบบรรทัดฐานระดบัท ี่2 (Second Normal Form : 2NF) รีเลชนั ใดๆ จะอยใู่นรูปแบบบรรทดัฐานระดบัที่2 เมื่อรีเลชนัน้นัอยใู่นรูปแบบบรรทดัฐานระดับที่ 1 และทุก แอททริบิวต์ที่ไม่ไดเ ้ป็ นคียห ์ ลกัจะตอ ้ งข้ึ นกบัแอททริบิวต์ที่เป็ นคีย์หลัก หรือแอททริบิวต์ท้งัหมดที่ประกอบ เป็ นคียห ์ ลกัหร ื อกล่าวอีกนยัหน่ึ งค ื อ ตอ ้ งไม่มีความสมัพนัธ ์ ระหวา่งค่าของแอททริบิวต์แบบบางส่วนเกิดข้ึ น 02 2.1 ความผิดพลาดท ี่เกดิจากการเพมิ่ข ้ อมูล(Insert Anomaly) หากบริษทัน้ีตอ ้งการน า สินคา ้ ชนิดใหม่มาขาย เช่น "โทรศัพท์" โดยกา หนดรหสัสินคา ้ เป็ นA185 หมายความว่าการเพิ่ม ข้อมูลสินค้า "โทรศัพท์" เข้าไปในรีเลชนัการสงั่จะกระทา ไดต ้่อเม ื่อตอ ้ งมีรหสัการสงั่ดว ้ ย 2.2 ความผดิพลาดท ี่เกดิจากการลบข ้ อมูล(Delete Anomaly) หากลูกค้าขอยกเสิกการสั่ง จากรหสัการสงั่ 304 กจ ็ ะทา ใหต ้ อ ้ งลบขอ ้ มูลในทูเฟิ ลสุดท้ายออกไปเป็ นผลให้รายการสินค้ารหัส 2181 เคร ื่องชกัผา ้ ท้งัที่ไม่ไดม ้ีการเลิกขายเคร ื่องชกัผา ้ 2.3 ความผดิพลาดท ี่เกดิจากการปรับปรุงข ้ อมูล(Update Anomaly) หากตอ ้ งการแกไข้ ข้อมูล T104 ตูเ ้ ยน ็ จะทา ให ้ เกิดความยุ่งยากและเสียเวลา เช่น ถา ้ ตอ ้ งการแกช ้ื่อสินค้า "ตู้เย็น" เป็ น "ตู้ไอศกรีม" การแกไ้ ขขอ ้ มูลดงักล่าวจะตอ ้ งคนัหาขอ ้ มูลรหัสสินคา ้ จากทุกทูเฟิ ลที่เป็ น รหัส 1104 มาแก ้ไขซ่ึ งทา ให ้ เสียเวลา และหากแก ้ไขไม่ครบทุกทูเพิลก ็ จะเกิดปัญหาข้อมูล ขดัแยง ้ กนัตามมา
รูปแบบบรรทัดฐานระดบัท ี่3 (Third Normal Form : 3NF) รีเลชนั ใดๆ จะอยใู่นรูปแบบบรรทดัฐานระดบัที่3 เมื่อรีเลชนัน้นัอยใู่นรูปแบบบรรทดฐานระดับที่ ั 2 และ แอททริบิวต์ที่ไม่ไดเ ้ป็ นคียห ์ ลกัตอ ้ งข้ึ นกบัแอททริบิวต์ที่เป็ นคียห ์ ลกัเท่าน้นัหร ื อกล่าวอีกอยา่งหน่ึ งค ื อตอ ้ ง ไม่มีความสมัพนัธ ์ ระหวา่งค่าของแอททริบิวต์แบบทรานซิทีฟเกิดข้ึ น 3.1 ความผิดพลาดท ี่เกิดจากการเพิ่มข ้ อมูล (Insert Anomaly) หากบริษทัน้ีมีพนักงานขาย เพิ่มข้ึ น ค ื อรหัสพนกังาน 75 ช ื่อ มารุต จะไม่สามารถเพิ่มขอ ้ มูลมารุตเขา ้ไปในรีเลชนัลูกคา ้ ตงักล่าว ได ้ ถา ้ มารุตยงัไม่มีลูกคา ้ ของตนเอง 03 3.2 ความผดิพลาดท ี่เกดิจากการลบข ้ อมูล(Delete Anomaly) หากมีการลบข้อมูลลูกค้าที่อยู่ ในความดูแลของพนักงานชายรหัส 13 ที่ชื่อ มาลี ออกจากรีเลชนัจะกระทา ไม่ได ้ เพราะจะท าให้ ข้อมูลพนักงานขาย รหัสพนักงาน 13 ถูกลบออกจากรีเลชนั ไปดว ้ ย ท้งัที่พนกังานขายที่ชื่อสมควร ยงัคงทา งานอยู่ 3.3 ความผิดพลาดท ี่เกิดจากการปรับปรุงข ้ อมูล (Update Anomaly) หากพนักงานรหัส 13 ชื่อ สมควร เปลี่ยนช ื่อเป็ น สมศกัด์ิการแกไ้ ขจะยงุ่ยากและเสียเวลา เพราะตอ ้ งแกไ้ ขช ื่อพนักงานขาย ตงักล่าวใหค ้ รบทุกทุเพิล หากแกไ้ ขไม่ครบทุกทูเพิลกจ ็ ะทา ใหเ ้ กิดปัญหาขอ ้ มูลชัดแย้งตามมา
รูปแบบบรรขัดฐานของบอยซ์และคอดด์(Boyce/Codd Normal Form : BCNF) รีเลชนั ใดๆ จะอยใู่นรูปแบบบรรทดัฐานของบอยซ์และคอดค์เมื่อรีเลชันน้ันอย ู่ใน รูปแบบบรรทัดฐานระดับท ี่3 และไม่มีแอททริบิวต์ที่ไมใช่ดีย์หลัก แต ่ สามารถไประบุ ค่าแอททริบิวต์ที่เป็ นคีย์หลัก หรือส่วนหนึ่งส่วนใดของคีย์หลักในกรณีที่ดีย์หลักเป็ นคีย์ ผสม รีเลชนัท ี่อยใู่นรูปแบบ BCNF จะอยใู่นรูปแบบบรรทดัฐานระดบัท ี่3 แต่รีเลชันที่ อยู่ในรูปแบบบรรทดัฐานระดบัท ี่3 ไม่จา เป็ นจะตอ ้ งอยู่ในรูปแบบ BCNF ดงัน ้ นั รีเล ชนัท ี่ควรตอ ้ งผา่นการทา ใหอ ้ ยใู่นรูปแบบ BCNF จะม ี ลกัษณะดงัน ้ ี “ รีเลชน ั น ้ น ั ม ี ค ื อค ู ่ แช ่ งหลายตว ั โดยค ี ยค ์ ู ่ แข ่ งเหล ่ าน ้ น ั เป็ นค ี ยผ ์ สม และม ี ความซ ้ า ชอ ้ นกน ั ”! 04
รูปแบบบรรทัดฐานระดบัท ี่4 (Fourth Normal Form : 4 NF) รีเลชนั ใดๆ จะอยู่ในรูปแบบบรรทดัฐานระดบัที่4 เมื่อรีเลชันนั้นอยู่ในรูปแบบ BCNF ม ี การข ึ น้ต่อกันเชิงกลุ่ม หร ื อกล่าวอ ี กอย่างหน ึ่งค ื อ ต ้ องไม่มีความสัมพันธ์ ระหว่างค่าของแอททริบิวต์แบบหลายค่าเกิดขึ้น ลองพิจารณารีเลชนัต่อไปน้ีซ่ึ งเป็ น รีเลซันที่อยู่ในรูปแบบบรรทดัฐานระดบัที่3 แล้ว โดยรีเลชันที่ต้องผ่านการทา ให ้ อยู่ ในรูปแบบบรรทัดฐานระดับที่ 4 จะต้องมีแอททริบิวต์อยา่งนอ ้ ย3 แอททริบิวต์ไดแ ้ ก่ 05 พนักงานขาย (รหัสพนักงานขาย, รหัสลูกค้า, เขตการดูแล)
5.1 ความผดิพลาดท ี่เกดิจากการเพมิ่ข ้ อมูล(Insert Anomaly) ถา ้ มีพนกังานขายคนใหม่เขา ้ มา โดยให ้ รหัสพนกังานขาย เป็ น 55 ถ ้ าพนักงานขายคนน้ียงัไม่มีลูกค ้ าที่ต ้ องดูแลจะมี ปัญหาที่ไม่สามารถเพิ่มขอ ้ มูลลงในตารางได ้ เน ื่องจากคีย์หลัก จะเป็ นค่าวา่งไม่ได ้ 5.2 ความผิดพลาดท ี่เกิดจากการลบข ้ อมูล (Delete Anomaly) กรณีลูกค้ารหัส 700 เลิกซ้ื อขายสินคา ้ กบั บริษัท จะต้องลบข้อมูลรหัสลูกค้า 700ออกไป ก ็ จะทา ให ้ ขอ ้ มูลรหัสพนักงานขาย 40 ถูกลบ ออกไปด้วย 5.3 ความผิดพลาดท ี่เกิดจากการปรับปรุงข ้ อมูล (Update Anomaly) ถ้ารหัสพนักงานขาย 13 เปลี่ยนเขตการดูแลจากจังหวัด ชลบุรีเป็ นจงัหวดัขอนแก่นก ็ จะตอ ้ งแก ้ไขขอ ้ มูลหลายที่ใน ตาราง และถา ้ แกไ้ ขไม่ครบทุกที่จะทา ให ้ เกิดปัญหาขอมูลชัด ้ แย้งตามมา
จง ึ สรุปได ้ ว่า ในการท ารีเลชนั ใหอ ้ ยใู่นรูปแบบบรรทดัฐานระดับที่ 5 น้ี ถ้ามีการแตกรีเลชันเดิมออกเป็ นรีเลชนัย่อย แลว ้ เช ื่อมโยงรีเลชนัย่อยน้ัน ใหม่พบวา่ ไม่มีขอ ้ มูลที่ต่างไปจากรีเลชนัเดิม ก ็ สามารถทา การแตกรีเลชัน น้นั ได ้ แต่ถา ้ พบว่ามีขอ ้ มูลต่างไปจากรีเลชนัเดิมแลว ้ ก ็ไม่ควรแตกรีเลชัน เดิมน้นัต่อไป รูปแบบบรรทัดฐานระดบัท ี่5 (Fifth Normal Form : 5NF) รีเลชนั ใดๆ จะอยู่ในรูปแบบบรรทดัฐานระดบัที่5 เมื่อรีเลชนัน้นัอยู่ในรูปแบบ บรรทัดฐานระดับที่ 4 และมีคีย์หลักเป็ นคีย์ผสมที่ประกอบด้วยแอททริบิวต์ต้งัแต่3 แอททริบิวต์ข้ึ นไป ถา ้ แตกรีเลชนัน้นัออกเป็ นรีเลชนัย่อยต้งัแต่3 รีเลชนัข้ึ นไป โดย การจบัคู่แอททริบิวต์แต่ละคู่ของรีเลชันเดิมเป็ นคีย์ผสม และเมื่อท าการเชื่อมโยง รีเลชนัยอ่ยท้งัหมดแลว ้ จะตอ ้ งไม่ทา ใหเ ้ กิดขอ ้ มูลใหม่ที่ต่างไปจากรีเลชันเดิม 06
เม ื่อไดท ้ า การออกแบบฐานขอ ้ มูลเรียบร ้ อยแลว ้ เราก ็ ควรจะสรุปผลของการออกแบบ วิธีหน่ึ งที่จะช่วยให ้ การ สรุปผลการออกแบบสมบูรณ ์ ยงิ่ข้ึ นค ื อการใชภ ้ าษาในการออกแบบ (Database Design Language : DBDL) สามารถระบุคียอ ์ื่นๆ และคุณสมบตัิเพิ่มเติมไดอ ้ีกไดแ ้ ก่ 1. ใส่*ถ้าแอททริบิวต์ใดสามารถเกบ ็ ค่าวา่งได ้ 2. ใส่ CK หมายถ ึ งคียค ์ู่แข่ง (Candidate Key) 3. ใส่SK หมายถึง คีย์รอง (Secondary Key) 4. ใส่FK หมายถึง คีย์นอก (Foreign Key) ถา ้ อนุญาตใหค ้ียน ์ อกเป็ นค่าวา่งไดใ้ หใ้ส่เคร ื่องหมาย * ที่ชื่อของ คียต ์ วัน้นั 5. การแสดงคุณสมบตัิของคียห ์ ลกัตวัที่คียน ์ อกน้นัๆ อา ้ งถ ึ ง ในการปรับปรุงค่าจะใช ้ DLT (DELETE) หมายถึง การลบ UPD (UPDATE) หมายถ ึ งการแกไ้ ขค่า เง ื่อนไขในการปรับปรุงค่าจะเป็ นแบบใด ไดแ ้ ก่ RSTR (RESTRICT) หมายถ ึ งการแกไ้ ข หร ื อลบขอ ้ มูลแบบมีขอ ้ จา กดั CSCD (CASCADE) หมายถ ึ งการแกไ้ ข หร ื อลบขอ ้ มูลแบบเป็ นทอดๆ NLF (NULLIFY) หมายถ ึ งการแกไ้ ข หร ื อลบขอ ้ มูลโดยเปลี่ยนเป็ นค่าวา่ง ภาษาทใี ่ ช ้ในการออกแบบฐานข ้ อม ู ล
แบบทดสอบ ข้อที่ 1 ข้อใดคือภาษาที่ใช้ในการออกแบบฐานข้อมูล ก. SQL ข. DBMS ค. DBDLง. PASCAL ข้อที่ 2 ในการก าหนดให้แอททริบิวต์สามารถเก็บค่าว่างได้ ท าได้โดยใช้สัญลักษณ์ใด ก. * ข. SK ค. CK ง. FK ข้อที่ 3 ในการก าหนดให้แอททริบิวต์เป็นคีย์นอก ท าได้ โดยใช้สัญลักษณ์ใด ก. * ข. SK ค. CK ง. FK ข้อที่ 4 CSCD (CASCADE) หมายถึงอะไร ก. การลบ ข. การแก้ไข ค. การแก้ไข หรือลบข้อมูลแบบเป็นทอดๆ ง. การแก้ไข หรือลบข้อมูลโดยเปลี่ยนเป็นค่าว่าง ข้อที่ 5 การแก้ไข หรือลบข้อมูลแบบมีข้อจ ากัดใช้ค าสั่งใด ก. UPD (UPDATE) ข. RSTR (RESTRICT) ค. CSCD (CASCADE) ง. NLF (NULLIFY)
เฉลยแบบทดสอบ ข้อที่ 1 ข้อใดคือภาษาที่ใช้ในการออกแบบฐานข้อมูล ก. SQL ข. DBMS ค. DBDLง. PASCAL ข้อที่ 2 ในการก าหนดให้แอททริบิวต์สามารถเก็บค่าว่างได้ ท าได้โดยใช้สัญลักษณ์ใด ก. * ข. SK ค. CK ง. FK ข้อที่ 3 ในการก าหนดให้แอททริบิวต์เป็นคีย์นอก ท าได้ โดยใช้สัญลักษณ์ใด ก. * ข. SK ค. CK ง. FK ข้อที่ 4 CSCD (CASCADE) หมายถึงอะไร ก. การลบ ข. การแก้ไข ค. การแก้ไข หรือลบข้อมูลแบบเป็นทอดๆ ง. การแก้ไข หรือลบข้อมูลโดยเปลี่ยนเป็นค่าว่าง ข้อที่ 5 การแก้ไข หรือลบข้อมูลแบบมีข้อจ ากัดใช้ค าสั่งใด ก. UPD (UPDATE) ข. RSTR (RESTRICT) ค. CSCD (CASCADE) ง. NLF (NULLIFY)