--- title: ห้องทดสอบ PE subtitle: date: วันจันทร์ที่ 19 ธันวาคม 2565 เวลา 09.03 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์เกวลี) เดี๋ยวเริ่มเลยก็ได้ค่ะ โอเค น่าจะประมาณนี้นะคะ วันนี้จะเป็นบทที่ 5 เกี่ยวกับกระบวนการปรับบรรทัดฐาน ภาษาอังกฤษก็จะเป็นnormaliเนื้อหาวันนี้ก็จะมีจุดมุ่งหมายของการทำ Nomanlizationจะเกี่ยวกับฟังก์ชันการขึ้นต่อกัน แล้วก็หลักการขึ้น normalด้วยนะคะ มีอยู่ 3 ข้อวันนี้โดยการปรับมาตรฐานหรือ Noมันจะเป็นทฤษฎีที่คนออกแบบฐานข้อมูลมาแปลงข้อมูลจากรูปที่ซับซ้อนนะคะ ให้มันง่าย เข้าใจก้งาน นำไปใช้งานก็ง่าย แล้วต้องเป็นระบบที่ี่สึเดยกระบวนการทำงานนะคะ ในการปรับบรรทัดฐานนี่มันจะมี 3 ระดับนะคะ จริง ๆ เราก็จะเรียกสะ้น ๆ ระดับแรกจะเรียกว่นะคะ 2NF 3NF นะคะ ในระดับปริญญาตรีนี่ถึง 3NF ได้ก็ถือว่าเก่งมากแล้วแต่ถ้าเป็นระดับที่สูงขึ้นไปอีก ก็จะได้ถึง 5NFนะคะ อันนี้เป็น123456แผนภาพกระบวนการทำงานนะคะ ก่อนเราจะมาทำแผนภาพปรับบรรทัดฐานได้นี่ มันก็ต้องวิเคราะห์การใช้งานของผู้ใช้งานก่อนเขาต้องการระบบจัดการฐานข้อมูลแบบไหน ต้องการใช้ตารางกี่ตารางในฐานข้อมูลนะคะ หลังจากนั้นก็จะมาวาดรูปเหมือนที่เราเรียนอาทิตย์ที่แล้วนะคะ มาวาดเป็นแผนถาพ ให้เข้าใจว่าสิ่งที่เรากำลังจะออกแบบหรือสิ่งที่เรากำลังจะทำฐานข้อมูลนี่ ตรงตามความต้องการหรือเปล่านะคะ แต่รูปแบบของรูปที่เราวาดอาทิตย์ที่แล้วนี่ จะยังเป็นรูปแบบที่ที่เป็นบรรทัดฐานเครื่อง ถามว่าตอนนี้เราได้กรอกข้อมูลไหม ไม่ต้องขอแค่มีเลขบัตรประชาชน ข้อมูลทุกอย่างที่คุณมีเขาจะดึงออกมาจากระบบให้เลย เราไม่ต้องเสียเวลากรอกนะคะ เหมือนเมื่อก่อนนี่ต้องเขียนใส่กระดาษเลขบัตรประชาชนอะไรที่อยู่ที่ไหน เบอร์โทรศัพท์อะไร เด๋ยวนี้ไม่้องเลย ขอแค่มข้อมูลทุกอย่างเราสามารถดึงขึ้นมาได้อยู่แล้วนะคะ อันนี้ก็เช่นเดียวกันถ้ากรอกข้อมูลแบบไม่ดีนี่เราต้องกรอกข้อมูลทุกช่องทุกช่องเลยนี่คนเดียว ไม่เดือดร้อนค่ะ แต่ถ้าเป็พนักงานใหม่เป็นเหมือนโรงงานน่ะค่ะ ทีละ 1,000 คน ต้องนั่งกรอกเชียงใหม่เป็นพัน ๆ ครั้งนี่ เสียเวลามาก ๆ นะคะ อันนี้คือการออกแบบที่ไม่ดีนะคะ กับอีกอย่างหนึ่ง ถ้าสมมติว่าเมื่อกี้อาจารย์เพิ่มพนักงานแล้ว ถ้าอาจารย์อยากเพิ่มแค่สาขานะคะ อยากเพิ่มแค่สาขาซึ่งในตารางนี้ คีย์หลัก จำได้ไหมคะ จะเป็นคีย์ที่ขีดเส้นใต้ซึ่งอาจารย์อยากเพิ่มสาขา สมมติอาจารย์เพิ่มB100 สกลนครสกลนครนะคะ เพิ่มได้ไหม อาจจะเป็นการตั้งสาขา แต่ยังไม่มีพนักงานหรอกนะคะ ถ้าจากตารางนี้นะคะ เราจะเพิ่มเฉพาะชื่อสาขาไม่ได้ เนื่องจากเรายังไม่มีรหัสพนักงาน เพราะรหัสพนักงานเป็นคีย์หลักคีย์หลัก คือ คุณสมบัติมัน คือ เป็นค่าว่างไม่ได้นะคะ อันนี้จะทำให้เราเพิ่มสาขาไม่ได้ เพราะเราไม่มีพนักงาน อันนี้ก็เป็นข้อผิดพลาดในการเพิ่มข้อมูลถ้าเราออกแบบตารางแบบนี้นะคะ นี่ก็คือปัญญาที่เกิดขึ้นจากการออกแบบไม่ดีกับปัญหาต่อมา เป็นปัญหาการลบข้อมูลอย่างที่อาจารย์บอกคนนี้ลาออก สาขาเชียงใหม่หายไปด้วยนะคะ โดนลบไป กรณีความผิดพลาดจากการเปลี่ยนแปลงนะคะ เหมือน B003 นี่ค่ะ เป็นกรุงเทพฯใช่ไหมคะ แล้วคราวนี้ข้อมูลมันอยู่ในตารางเดียวกัน ถ้านักศึกษาจะแก้ สมมติว่าเราย้ายจากรุงเทพฯ ไปอยู่นนทบุรีสมมติมีพนักงาน 3,000 คนคุณต้องแก้กรุงเทพฯ 3000 ครั้งเป็นนนทบุรีนะคะ ถ้าพนักงานมี คน 2 คน ไม่ใช้ปัญหาค่ะ แต่ถ้าเป็นโรงงานขนาดใหญ่ นั่งแก้ทีละ 3,000 คน ไม่ใช่เรื่องสนุกแน่ ๆ นะคะ แน่ ๆ นะคะ อันนี้ก็เป็นปัญหานะคะ เพราะฉะนั้นเราควรแยกตารางพนักงานกับตารางสาขาออกจากกันนะคะ นี่คือเหตุผลข้อมูลขนาดเล็กนะคะ เรายังเห็นปัญหาขนาดนี้ สมมติถ้าเป็นองค์กรขนาดใหญ่ เป็นบริษัท เป็นโรงงาน หรือระดับโรงเรียนมีนักเรียน 2-3 ร้อย หรือ 2-3 พันคนก็ได้นะคะ มันก็จะมีปัญหาเยอะมาก ถ้าเกิดเราจัดตารางไม่ดีนะคะ จากปัญหาที่เกิดขึ้นเมื่อกี้อย่างที่บอกค่ะ เราจะแก้ปัญหาโดยการแยกหตารางเป็น 2 ตรชารางแบบนี้นะคะ การขึ้นต่อกัน เดี๋ยวจะเป็นเกี่ยวกับตารางหนึ่งมีผลกับอีกตารางหนึ่ง เราเรียกฟังก์ชันที่มีการขึ้นต่อกันเดี๋ยวดูตัวอย่างเลยแล้วกันนะคะ อย่างเช่น ตารางนี้นะคะ ดูจากรหัสพนักงานนะคะ เราจะเห็นได้ว่ารหัสพนักงานจะส่งผลกับชื่อตำแหน่งสัญลักษณ์ของการขึ้นต่อกันนะคะ อันไหนเป็นตัวหลัจะชี้ไปที่ตัวรองตามหัวลู