--- title: ฝึก Revoice + PE หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี วันที่ 6 ธ.ค. 2565 subtitle: date: วันศุกร์ที่ 9 ธันวาคม 2565 เวลา 14.30 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) เป็นเกี่ยวกับแบบจำลองข้อมูลหรือเวลาเราเรียกสั้น ๆ ก็คือการวาดรูป VRแล้วก็ปลาภาษาอังกฤษโดยแผนภาพนะคะ ERหรือว่า er-model นี้มันจะเป็นล่ามเขาได้ยินเราไหมพลอยทำไมร้านดูนิ่งตามได้ยินไหมคะ ถ้าได้ยิน OK ด้วยค่ะ ok ok โอเคค่ะ ก็การวาด ER นะคะ หรือเป็นแบบจำลองข้อมูลนะคะ มันจะเป็นแบบจำลองที่ใช้อธิบายโครงสร้างของฐานข้อมูล โดยที่เราจะแสดงออกมาเป็นรูปภาพนะคะ โดยที่โครงสร้างสำคัญที่จะใช้ในการวาดรูปของเรานะคะ ก็คือ Entity หรือว่าตารางความสัมพันธ์ แต่ละเส้นที่เชื่อมโยงในแต่ละตารางเราจะต้องโยงกันให้ถูกนะคะ อย่างเช่นตารางของอาจารย์กับอาจารย์นักศึกษาต้องมีความสัมพันธ์กัน ในฐานะการเรียนการสอนแบบนี้นะคะ การวาดรูป เป็นเหมือนรูปที่อาจารย์ยกตัวอย่างให้ดูบนจอนะคะ การที่เราจะวาดรูปได้เราต้องรู้ได้ว่าสัญลักษณ์แต่ละอันหมายความว่าอย่างไร ทำไมเราต้องใช้วงรี ทำไมเราต้องใช้สี่เหลี่ยมผืนผ้า ทำไมเราต้องลากเส้นตรงนะคะ แต่ละอันมีความหมายหมดเลย แล้ววันนี้ก็จะพอบรรยายเสร็จจะให้วาดเองด้วยนะคะ จุดเด่นของแผนภาพ ER นะคะ มันจะทำให้เราออกแบบฐานข้อมูลได้เร็วขึ้น มันเหมือเป็นการจัดระเบียบความคิดของผู้ที่ต้องการออกแบบคล้ายคล้ายกับ เราสมัยมัธยมน่าจะเคยวาด Mind Map นะคะ การวาด ER ก็เหมือนกันนะคะ มันจะได้รู้ว่าเราต้องการจะออกแบบอะไรอะไรควรมีความสัมพันธ์กันหรืออะไรที่ขาดหายไปนะคะ เราจะได้เห็น รวมถึงลดความซ้ำซ้อนของข้อมูลออกไปด้วยในตารางนี้มีข้อมูลนี้อยู่แล้วก็ไม่จำเป็นต้องใส่เพิ่มในตารางอื่นก็ได้นะคะ หรือว่าเราว่าเสร็จออกมาทำไมมีตารางที่คล้าย ๆ กัน 2 อัน มันลบออกได้ไหม นะคะ การวาดรูปเราเห็นภาพได้ง่ายขึ้น โดยคุณลักษณะของการวาดแผนภาพ er นะค ก็คือแน่นอนมันแสดงผลออกมาเป็นภาพนะคะ โมเดลข้อมูล หรือรูปแบบข้อมูลแบบไหนก็ตามนี่ มันจะมีภาษาแล้วก็รูปภาพที่เป็นกราฟิกโดยเฉพาะนะคะ อาจจะมีทั้งภาพขนาดใหญ่ ภาพขนาดย่อย มันจะทำให้เราอ่านข้อมูลหรือฐานข้อมูลนั้นได้ง่าย เพราะเราใช้วงกลม เราใช้สี่เหลี่ยม เราใช้วงรีนะคะ เราใช้เส้นตรงเส้น เส้นโค้ง เส้นประ ทุกอย่างมีความหมายหมดนะคะ มันก็แสดงให้เห็นถึงความชัดเจนของความหมายของข้อมูลด้วย โดยที่ใช้สัญลักษณ์ที่ต่างกันเล็กน้อยนะคะ ซึ่งตัวรูปแบบของการวาดนี่ มันก็จะมีหลายรูปแบบ หนังสือแต่ละเล่ม บางเล่มก็ไม่เหมือนกัน บางคนใช้รูปแบบของคนนี้ หรือหนังสือเล่มหนึ่งอาจจะใช้รูปแบบที่ต่างออกไป ในการวาดรูปแต่เดี๋ยวก่อนถึงเวลาวาดรูปเราต้องตกลงกันก่อนว่าเราจะเลือกใช้รูปแบบไหนนะคะ ข้อสำคัญ คือ แผนภาพที่ได้มานี่ มันควรที่จะอ่านง่าย ๆ ไม่ซ้ำซ้อนไม่ตัดกันไปตัดกันมา ฉันเพิ่งคิดได้ฉันเลยอยากเอาไว้ตรงนี้ไม่ได้นะคะ เราต้องคิดก่อนว่าเส้นตรงฝั่งนึงไอ้ฝั่งนึงทำให้เราอ่านยากจัดระเบียบความคิดตัวเองก่อนว่าในฐานข้อมูลที่เราต้องการนี่มีตารางอะไรบ้าง แล้วแต่ละตารางนี่มันจะเชื่อมกันอย่างไรนะคะ โดยในแผนภาพที่เราวาดนะคะ รายละเอียดต้องอยู่ในระดับที่เหมาะสม อาจจะไม่ได้ละเอียดยิบขนาดนั้น ไม่ต้องละเอียดแบบเป๊ะ ๆ ๆ ๆ แต่ว่าเราต้องมองภาพให้ออก หรืออาจจะมีการเปลี่ยนแปลงแก้ไข มันจะต้องยืดหยุ่นนะคะ รวมถึงรายละเอียดต้องเพียงพอ น้อยไป บางอันก็เยอะไปนะคะ เอาที่พอดีโดยที่แต่ละอันนี้อย่างที่บอกต้องมีการเชื่อมโยงความสัมพันธ์แต่ละตารางด้วยนะคะ แล้วก็การวาดรูปของเราเราจะไม่ตายตัวเลยว่าเราวาดเพื่อไปใช้กับโปรแกรมอะไรนะคะ รูปที่เราว่าจะต้องรูปแบบของการฐานข้อมูล แล้วก็เวลาใครมาอ่านต้องเข้าใจง่าย ถึงแม้เขาจะไม่ได้คำว่าคอมพิวเตอร์มาก่อน แต่พอเขาดูรูปภาพ อย่างน้อยเขาจะเข้าใจว่าเราจะสื่ออะไร ในฐานข้อมูลเรามีอะไรบ้างนะคะ เขาอาจจะไม่รู้หรอกว่าวงรีมันหมายความว่าอย่างไร หรือสี่เหลี่ยมหมายความว่าอย่างไร ทำไมต้องใช้เส้นประ ทำไมต้องมีเส้นโค้งด้วย เขาอาจจะไม่ต้องเข้าใจตรงนั้น แต่เขาดูเอาพอเข้าใจว่า เราต้องการจะนำเสนออะไร สื่ออะไร ในฐานข้อมูลเรามีอะไรบ้าง อันนี้ก็คือไม่ว่าจะเป็นใคร ต้องอ่านรูปที่เราวาดเข้าใจระดับหนึ่งก็ยังดีนะคะ ขั้นตอนในการออกแบบแผนภาพ ER นะคะ มันก็จะมีอยู่หลายขั้นตอน แต่เราก็จะแบ่งได้เป็น 5 ขั้นตอน ในการออกแบบหรือการวาดด้วย โดยพอเราได้ภาพคร่าว ๆ มาแล้วนี่ เราค่อยไปใส่รายละเอียดที่หลังก็ได้ว่า ผู้ใช้งานเขาควรจะดูข้อมูลได้ในระดับไหนผู้ใช้งานแต่ละคน การเข้าถึงข้อมูลแต่ละชั้นนี่ แต่ละขั้น แต่ละชั้นนี่ ใครเข้าได้บ้าง หรือว่าผู้ใช้งานตัวไปดูได้อย่างเดียว หลังจากเราลงรายละเอียดที่หลังก็ได้นะคะ โดยขั้นตอนแรกจะกำหนด Entity ตารางหลักนะคะ โดยการออกแบบฐานข้อมูลนะคะ เราต้องเอารวบรวมข้อมูลความต้องการของผู้ใช้งานหรือ requirement นี่แหละ มากำหนดว่าในฐานข้อมูลเรา จะมี Entity หรือว่าตารางอะไรบ้าง ซึ่งตอนนี้ขั้นตอนที่ค่อนข้างยากนะคะ ต้องเข้าใจในสิ่งที่เรากำลังจะสร้าง ทั้งผู้ใช้งานแล้วก็ผู้ออกแบบต้องเข้าใจตรงกัน เพราะถ้าเรากำหนดตารางไปแล้ว เราอยู่ดี ๆ มาเพิ่ม มันอาจจะต้องเชื่อมต่อความสัมพันธ์ใหม่นะคะ โดยวิธีการ ก็คือถ้าอยากทำให้มันครอบคลุมที่สุด ก็คือเอาข้อมูลทั้งหมดที่มีมาวาง แล้วจัดกลุ่มของข้อมูลนะคะ โดยดูว่าข้อมูลมีค่าอะไรบ้าง มีความหมายอย่างไร แต่ละอย่างนี่เชื่อมโยงกันอย่างไร นะคะ ถ้าข้อมูลเป็นชนิดเดียวกัน ให้รวมไว้ในตารางเดียวกัน แล้วก็กำหนดชื่อ เช่น กลุ่มนักศึกษานะคะ อาจจะมีหลายคณะก็จริง แต่ก็คือนักศึกษาเรารวมเป็นตารางเดียวก็ได้ ได้ แล้วค่อยมากำหนดลักษณะพิเศษของแต่ละคน ว่านักศึกษาหลาย ๆ พันคนนี่เขามีความแตกต่างอะไรกันบ้างเราก็เก็บข้อมูลไว้ในตารางเดียวก็พอนะคะ โดยทุกอย่างจะต้องบันทึกไว้ในพจนานุกรมข้อมูลด้วย แล้วก็เขียนไปในแผนภาพที่เรากำลังจะวาดด้วย ว่าในตารางนี้มีข้อมูลอะไรบ้างที่เราต้องใช้นะคะ ขั้นตอนที่ 2 ก็จะต้องมากำหนดความสัมพันธ์ระหว่าง Entity หรือว่าระหว่างตารางนั่นเอง จะมีการกำหนดชื่อกำหนดความหมาย ความสัมพันธ์ รายการเชื่อมโยงของข้อมูลอาการส่วนความสัมพันธ์นะคะ เช่น นักศึกษา 1 คน สามารถลงทะเบียนเรียนได้หลายวิชานะคะ แต่ในหลาย ๆ ในแต่ละวิชาแต่ต้องมีผู้สอนคนเดียว อันนี้คือความสัมพันธ์ที่เกิดขึ้น แต่อาจารย์หนึ่งคนก็สามารถสอนนักศึกษาได้หลายคนเหมือนกัน ได้หลายวิชาด้วยนะคะ ซึ่งอาจจะเป็นยกตัวอย่างการกำหนดอัตราส่วนอีกอย่างหนึ่ง ก็คือเหมือนที่อาจารย์ชอบยกตัวอย่างบ่อย ๆ รหัสบัตรประชาชน มันไม่เกิน 13 หลัก อยู่แล้ว เราก็ต้องกำหนด ชื่อคน กำหนดไว้เลยก็ได้ ไม่ควรเกิน 20 ตัวอักษร คงไม่มีใครตั้งชื่อตามหลักโหราศาสตร์ยาวเกิน 20 ตัวหรอกนะคะ แล้วก็เราก็สามารถแบ่งกลุ่มได้แล้วว่าข้อมูลแต่ละอันมันจะต้องเชื่อมโยงกันอย่างไร หลังจากนั้นก็มาดูว่าขนาดของความสัมพันธ์เป็นอย่างไร 1 ต่อ 1 หรือ 1 ต่อ มากกว่า 1 อะไรพวกนี้ นะคะ ภาษาอังกฤษ One-to-One One-to-Many อะไรพวกนี้นะคะ ซึ่งจะต้องวิเคราะห์ดี ๆ เพราะมันจะต้องอ่านไปข้างหน้า แล้วก็อาจย้อนกลับมา โดยที่ความหมายไม่เปลี่ยน ในแผนภาพของเราด้วยนะคะ ขั้นตอนที่ 3 กำหนดคีย์หลัก กำหนดคีย์รอง าลีกับ senegal แล้วหลังจากที่เราได้ตลอดฟังแล้วเพราะต่อไปก็คือในตารางเราจะต้องเก็บข้อมูลอะไรบ้าง เช่น ตารางนักศึกษา ต้องเก็บข้อมูลอะไรบ้าง เกี่ยวกับนักศึกษา ถ้าพอจำได้ ก็คือเราเข้ามาเรียน เรากรอกข้อมูลเยอะมาก ตั้งแต่ใบสมัครเลย อันนี้คือ Attribute อะไรต้องการ ชื่ออะไรนามสกุลอะไรประชาชนเลขอะไรวันที่เท่าไหร่อยู่ไหนพ่อแม่เฉลี่ยเท่าไร ที่อยู่ปัจจุบันที่ไหน ใครเป็นคนส่งเรียน ได้เงินเดือนละเท่าไรนะคะ ใครเป็นผู้ปกครอง เบอร์ผู้ปกครองเบอร์อะไร บางคนผู้ปกครองไม่ใช่พ่อใช่พ่อ หรือแม่อาจจะเป็นคุณตาคุณยายนะคะ ที่อยู่ปัจจุบันอยู่ไหน แล้วมาเรียนราชภัฏพักที่ไหน กรอกให้หมด เกรดเฉลี่ยตั้งแต่ม 4 ม 5 ม 6 เป็นอย่างไร อันนี้คือสิ่งที่มหาวิทยาลัยต้องการรู้เกี่ยวกับพวกคุณ ก็คือวันเองนะคะ บอยหัวของแต่ละคอลัมน์หรือ Attribute นี่ก็ควรเป็นคำสั้น ๆ ง่าย ๆ อาจจะเป็นตัวย่อก็ได้แต่ต้องสื่อความหมายนะคะ แล้วก็หลีกเลี่ยงการตั้งชื่อเหมือนกันนะ คะ อาจจะเป็นชื่อชื่อนี่ บางคนไม่เข้าใจ สรุปใส่ชื่อเล่นหรือชื่อจริง เพราะฉะนั้น ต้องกำหนดไปเลยว่าคุณต้องการอะไร ชื่อจริงก็ใส่ชื่อจริง ชื่อเล่นก็ใส่ชื่อเล่น ไม่ใช่ชื่อเฉย ๆ แล้วเขาจะรู้ไหมว่าเขาต้องใส่อะไร เขาอาจจะใส่ชื่อเล่นก็ได้นะคะ กำหนดคีย์ภายนอกหรือForeign Key Foเชื่อมโยงตลาดตารางเข้าด้วยกันนักศึกษากับอาจารย์เชื่อมโยงกันอย่างไรเชื่อมโยงโดยรหัสวิชา เช่น รหัสวิชานี้ใครเรียนบ้าง ใครสอนบ้าง แค่กรอกรหัสเข้าไปก็รู้ได้เลย อันนี้ ก็คือการเชื่อมโยงกันสำหรับอาจารย์กับนักศึกษาในวิชานั้น ๆ นะคะ โดยที่คีย์นอก หรือ ฟอเร้นคลีนิคน่าจะเป็นคีย์หลักของตารางอื่นก็ได้นะคะ เดี๋ยวพอวาดรูปว่าจะเข้าใจมากขึ้นก่อนพูดอาจจะไม่ค่อยเข้าใจเท่าไi ว่าเอ๊ะ ทำไมอะเชื่อมโยงกันได้ ขั้นที่ 5 พิจารณาค่าแต่ละค่าที่อยู่ในแต่ละข้อมูลเขาต้องการนะคะ มีขอบเขตของข้อมูลนั่นแหละ เช่น ชนิดของข้อมูลเราจะกำหนดเป็นอะไร วันเกิดควรกำหนดเป็นอะไร เงินเดือน มันควรเป็นจำนวนเต็มไหม คุณได้เป็นทศนิยมหรือเปล่านะคะ อย่างชื่อ ก็ควรกำหนดเป็นรับข้อมูลเฉพาะตัวอักษรเท่านั้น บอกเป็นตัวเลขไม่ได้ที่เราต้องกำหนดตั้งแต่ตอนที่ออกแบบฐานข้อมูลเลยนะคะ ความยาวเลขบัตรประชาชนก็ 13 หลักนะคะ เบอร์โทรศัพท์ ก็ 10 หลัก อะไรแบบนี้ นามสกุลไม่ควรเกิน 35 ตัวอักษร เงินเดือนก็เอาสักไม่เกิน 7 หลัก ประมาณนี้นะคะ รูปแบบ ข้อมูล บางประเทศประเทศ มันไม่เหมือนประเทศเรา เขาจะเอาเดือนขึ้นก่อนตามด้วยวัน ตามด้วยปี คุณก็สามารถกำหนดได้เหมือนกัน เราแม่ของเราเพื่อดูง่าย ๆ ก็เป็นวันเดือนปีถามกันอย่างนี้ก็ได้ค่าที่อนุญาตโดยเฉพาะ เช่น ทุกวัน 1 กับ วันที่ 16 ของเดือนเป็นวันหยุด คุณก็สามารถตั้งได้ ว่าสมมติคือลูกค้าต้องการจองคิวทำอะไรก็ตามถ้าเป็นวันที่ 1 กับวันที่ 16 จะไม่อนุญาตให้จองได้นะคะ แบบนี้ก็ได้นะคะ อันนี้ก็ต้องตั้งแต่เอาออกแบบเลยตกลงของเราควรจะเป็นอย่างไรนะคะ อันนี้ก็อธิบายไปแล้วนะ กับอีกอันหนึ่ง สำคัญ ความเป็นหนึ่งเดียว ก็คือ อย่างเช่นร หัสนักศึกษา ต้องกำหนดเลยว่าห้ามเป็นค่าที่ซ้ำ ซ้ำกันไม่ได้ เราอาจจะกรอกเลขผิดไปตัวหนึ่ง ระบบจะต้องแจ้งเตือนว่า คุณเลขนี้ใช้ไม่ได้ มันซ้ำไปแล้ว กับการเป็นค่า null null ในที่นี้ก็คือคุณไม่กรอกข้อมูลได้ไหม บางระบบจะบอกว่าไม่ได้ ใครเคยกรอกในอินเตอร์เน็ตในบางช่องของการกรอกข้อมูล เขาจะมีการดอกจันทร์สีแดงกำหนดไว้อยู่ นั่นคือเป็นข้อมูลที่เขาต้องการ คุณจะเว้นว่างไม่ได้นะคะ หรือต้องการจะเว้นว่าง หรือไม่ตอบเขาจะ เรียกอีกอย่างหนึ่งว่า "ค่า default" ค่าโดยปริยาย เงินเดือนเท่าไหร่เริ่มต้นคือ 0 ระวังไม่ได้ไม่ตอบไม่ได้ฉะนั้นตอบไปเลยว่า 0 บาท แบบนี้ก็ได้ แต่ส่วนมากทุกคนก็ต้องกรอกอยู่แล้วนะคะ ขั้นตอนสุดท้าย ก็มาวิเคราะห์ดูว่าแผนภาพที่เราออกแบบนี่ ปรับปรุงแก้ไขหรือว่าขยายตัวอนาคตได้หรือเปล่า เพราะว่าการออกแบบที่ดี ต้องการเปลี่ยนแปลงด้วย ไม่ใช่ว่าตายตัวไปตลอด สมมติว่าวันนี้ร้านอาจจะไม่ถึง 100 คน แต่ใครจะไปรู้อาจจะเป็นธุรกิจที่เติบโตมีสาขาไปอีก 100 สาขา มีลูกค้าไปอีก 10,000 คน ฐานข้อมูลคุณปิ๊กไว้ว่ารหัสลูกค้า1-100 มันเป็นไปไม่ได้ค่ะ นะคะ ต้องวิเคราะห์ด้วยว่ารหัสลูกค้านี่ มันจะต้องเป็นการเพิ่มขึ้นอย่างอัตโนมัติไปได้เรื่อย ๆ หรือเปล่า หรือคุณเป็นคนกรอกเอง นะคะ อันนี้ก็ต้องคิดด้วย ไม่ใช่ว่าระบบฉันใช้แค่ 10 คนนี่แหละ บางทีในอนาคตมันอาจจะไม่ใช่อย่างนั้นนะคะ โดยการสร้างแบบจพลองข้อมูลการวาดแผนภาพนี่จะต้องวิเคราะห์ข้อมูลที่จำเป็นกรอกในระบบ ระบบอัดโครงสร้างที่มีรวมถึงถ้ามีการเพิ่มลบแก้ไขข้อมูลจะต้องทำที่ตารางไหน สมมุติว่าข้อมูลตารางนั้นถูกลบไปมันจะไปข้อมูลในตารางอื่นหรือเปล่า นะคะ เช่น วันดีคืนดี อาจารย์ลบชื่อสาขาที่คุณเรียนออกมันจะกระทบรู้ไหม เป็นนักศึกษาไม่มีสังกัดได้ไหม ได้ ก็ต้องดูด้วย เขาเรียกว่า กฎความคงสภข้อมูลดี ๆ อยากลบมันไม่สวยลงท้ายอะไรอย่างนี้เขียนไม่ได้ ไม่ได้บางอย่างมันเปลี่ยนไม่ได้ นะคะ เช่น รหัสนักศึกษา เลขบัตรประชาชนอย่างนี้เราต้องวิเคราะห์ด้วย ไม่ใช่ว่าอยากเปลี่ยนเลขบัตรประชาชนตอนไหนก็ ได้ แบบนี้ เป็นต้น โดยการเขียนแผนภาพ er นี่ มันก็จะอธิบายภาพรวมทั้งหมดนะคะ อย่างที่บอกตอนต้น ก็คือมันต้องเข้าใจง่ายนะคะ อาจจะไม่ต้องรู้ว่าข้อมูลที่เรากำลังจะเก็บนี่ เก็บที่ไหน เก็บอย่างไร ไม่จำเป็น แค่วาดออกมาให้ดูก่อนว่าในฐานข้อมูลเราต้องมีอะไรบ้างนะคะ ในแต่ละตารางมีความสัมพันธ์กันอย่างไรข้อมูลมาจาก ข้อมูลมันจะซ้ำซ้อนกันไหม แล้วก็เขียนให้ดูง่ายที่สุดอย่างที่อาจารย์บอกตอนแรกแผนภาพการวาดรูปนี่ มันมีหลาย เขาเรียกอะไรล่ะ หลายมาตรฐานแล้วกัน หนังสือแต่ละเล่มก็เลือกมาใช้ไม่เหมือนกันนะคะ มีทั้งแบบ Chen model เอา cloud foot ก็คือแบบความสัมพันธ์คล้าย ๆ กับรอยเท้าของนกรอยเท้าอีกา เขาก็เรียกเป็นรูปแบบรูปแบบหนึ่งนะคะ แต่ที่เราจะใช้กันบ่อย ๆ นะคะ จะเป็นแบบ chain model ในช่องสีเหลืองเราจะเลือกใช้ตัวนี้เพราะว่ามันเขียนง่ายมันอ่านง่ายที่สุดนะคะ แต่ถ้าคุณไปซื้อหนังสือเล่มอื่น เขาใช้แบบอื่นผิดไหมไม่ผิด อยู่ที่เขาจะเลือกใช้แบบไหนนั่นเองนะคะ สัญลักษณ์ที่ต้องใช้ในการวาดรูปนะคะ สัญลักษณ์สี่เหลี่ยมผืนผ้า มันจะหมายถึง ชื่อตารางนะคะ แบบสี่เหลี่ยมข้าวหลามตัด มันจะบอกถึงความสัมพันธ์ของตารางแต่ละตารางนะคะ แล้วคอลัมน์ในแต่ละตารางล่ะนะคะ เราก็จะใส่เป็นรูปวงรี ถ้าคอลัมน์นั้น ๆ เป็นคีย์หลักห้ามซ้ำกัน ในรูปวงรีจะต้องขีดเส้นใต้ด้วย ส่วนด้านข้างอันนี้จะไม่ค่อยพบเห็นบ่อย แต่เจอในข้อสอบแน่ ๆ นะคะ อันแรก เป็นสี่เหลี่ยมผืนผ้าซ้อนกัน 2 อัน มันหมายถึงตารางนั้นน่ะเป็นตารางอ่อนแอ หรือว่า weak entitพื่อให้ตารางของมันมีความหมายนะคะ ออกมาสี่เหลี่ยมข้าวหลามตัดซ้อนกัน 2 อันก็เช่นเดียวกันค่ะ เขาเรียกความสัมพันธ์แบบอ่อนแอ มันจะต้องไปดึงค่าหรือความสัมพันธ์อื่น ๆ มาทำให้ตัวมันมีความหมายขึ้นมานะคะ วงรีซ้อนกัน 2 วง ก็คือในตารางนี้นี่ ในคอลัมน์นี้ หรือในข้อมูลนั้น ๆ นี่ มันอาจจะมีข้อมูลได้มากกว่า 1 ข้อมูล เช่น คุณอาจจะมีเบอร์โทรศัพท์ 3 เบอร์ หรือว่ามีชื่อเล่นพ่อเรียกชื่อหนึ่ง แม่เรียกชื่อหนึ่ง ก็บอกได้ มีสัตว์เลี้ยงมากกว่า 2 ตัว แต่ละตัวชื่อว่าอะไรบ้าง อย่างนี้ก็ได้ นะคะ กับวงรีที่เป็นเส้นประ มันหมายถึงว่าข้าข้อมูลในนี้ นี่ จะได้มาจากการคำนวณของข้อมูลอื่น ที่พบบ่อยที่สุด ก็คืออายุ อายุจะได้มาจากคำนวณวันเกิดใช่ไหมคะ เพราะฉะนั้นเส้นวงรี ประประ พวกนี้ มันก็คือจะบอกว่าอายุของเราได้มาจากการเกิดวันเดือนปีเกิดนั่นเองนะคะ ให้มันคำนวณให้อัตโนมัติ ผู้ใช้งานไม่ต้องบอกเองว่าอายุเท่าไร ให้ระบบคำนวณให้เลย อายุ 18 ปี 11 เดือน 10 วัน อะไรก็ว่าไปนะคะ อันนี้คือสัญลักษณ์ที่เราใช้บ่อย รูปเดียวกันกับเมื่อกี้นี้ อันนี้อธิบายโดยละเอียด Entity หรือว่าชื่อของตารางนะคะ อยากเป็นส่วนในการเก็บของข้อมูลรายการแต่ละรายการที่ระบบจัดการฐานข้อมูลที่เราจะสร้างระบบขึ้นมาสัญลักษณ์ Entity จะเป็นสี่เหลี่ยมผืนผ้ามีชื่อทางหรือ Entity อยู่ข้างใน ก็ต้องวาดแบบนี้ทุกครั้ง โดยตัวอย่าง เช่น ตารางบุคคล บุคคลคืออะไร ตารางพนักงาน ตารางพนักงาน บุคลากร ตารางนักศึกษาตารางลูกค้าอาจจะเป็นข้อมูลเกี่ยวกับสถานที่เก็บข้อมูลจังหวัดเก็บข้อมูลอำเภอนะคะ ตารางที่เกี่ยวกับวัตถุ อาจจะเป็นรถยนต์ อาคาร เครื่องจักร สินค้าก็ได้นะคะ หรืออาจจะเป็นเหตุการณ์ที่เกิดขึ้น เช่น การลงทะเบียน การรักษาโรค การซื้อ การขาย การส่งสินค้านะคะ สัญลักษณ์ อย่างที่บอกเป็นสี่เหลี่ยมผืนผ้า มีชื่อ entity หรือว่าชื่อตารางอยู่ข้างในนะคะ ประเภทของ Entity ก็มีอยู่ 2 ประเภทแต่ส่วนใหญ่ที่เราใช้กันเป็น Infinity ทั่วไปเป็น regular คือ เป็นตารางที่ข้อมูลนั้น สามารถแยกข้อมูลในแต่ละแถวออกได้นะคะ กับอีกอันหนึ่งคือ Entity อ่อนแอ มันจำเป็นจะต้องใช้ข้อมูลอื่นมาเปิดข้อมูลในแถวนั้นมีคุณค่าหรือมีความหมายขึ้นมานะคะ อันนี้เป็นตัวอย่าง Entity ทั่วไปหรือตารางทั่วไปนะคะ จะสังเกตได้ว่า อย่างข้างบนนี่ อาจารย์เขียนไว้ว่า entity Student ก็คือตารางตารางหนึ่งที่มีข้อมูลเกี่ยวกับนักเรียนอยู่ แต่สิ่งที่เราจะเอามาวาดแผนภาพ มันไม่ใช่กรอบสี่เหลี่ยมนี้นะคะ เราจะเอามาแต่ชื่อ เช่น ตาราง Student ก็คือ Entity student เก็บข้อมูลอะไรบ้าง คือ ตรงนี้แบบที่เรามาวาดรูปเอาแค่นี้ค่ะ สี่เหลี่ยมข้างล่างมาวาดแค่นั้นเอง แล้วก็บอกว่าชื่อตารางอะไรนะคะ อันนี้เป็นตัวอย่างของตารางอ่อนแอ หรือว่า Entity อ่อนแอนะคะ อันนี้ก็คือเป็นข้อมูลเกี่ยวกับการลงเวลาทำงาน เวลาออกจากงาน เหมือนเวลาถ้าใครไปทำงาน ก็จะมีทำงานกี่โมง มากี่โมง ตารางนี้ทำตามก็คือการลงเวลาตารางนี้จะไม่มีความหมายเลย ถ้าขาดข้อมูลที่เข้าทำงาน แล้วก็เวลากลับบ้าน เพราะฉะนั้น 2 ตัวนี้จะต้องเชื่อมโยงกันอยู่แล้ว ถ้าขาดอันใดอันหนึ่งไป ตารางนี้จะไม่มีความหมายเลย ก็คือมีเวลามีแต่เวลามาทำงาน แล้วกลับบ้านตอนไหนไม่รู้ อย่างนี้ไม่ได้นะคะ ก็คือมีเวลามาทำงาน ก็ต้องมีเวลากลับบ้านเลย มีแต่เวลากลับบ้านไม่มีเวลาทำงานมันก็ไม่ได้อย่างนั้น จะรู้ได้อย่างไรว่าคุณมาทำงานกี่โมงนะคะ อันนี้เป็นตัวอย่างของตารางที่ถ้าขาดข้อมูลใดข้อมูลหนึ่งไป จะทำให้ข้อมูลตารางนั่น ๆ นี่ ไม่สมบูรณ์ มีปัญหานั่นเองนะคะ อย่างเช่น อันนี้เป็นตัวอย่าง ถ้าเป็นตารางทั่วไป ตารางนักเรียน กับตารางรายวิชานะคะ มีนักศึกษา 2 คน มี 2 วิชา อันนี้เป็นตารางทั่วไป แต่ตารางการลงทะเบียน สมมุติว่างมีแต่รหัสนักศึกษา มีปีการศึกษา แต่ไม่รู้เลยว่าเขาลงทะเบียนวิชาอะไรไ ด้ไหม ไม่ได้ ไม่อย่างนั้นจะรู้ได้ไงว่าเทอมนี้มีใครเรียนอะไรบ้าง หรือนะคะ รู้รายวิชา รู้ปีการศึกษา แต่ไม่รู้เลยว่าใครลงทะเบียนเรียน ได้ไหม ก็ไม่ได้อีก เพราะฉะนั้น ในตารางการลงทะเบียน ถ้าขาดข้อมูลใดข้อมูลหนึ่งไป ตารางนั้นจะเป็นตารางที่ไม่สมบูรณ์ โดยข้อมูลในแต่ละในตารางนี่ ก็ไปดึงข้อมูลมาจากอื่นทั้งนั้น อันนี้คือตารางอ่อนแอ ก็คือไม่มีความหมายตัวเราเองจะต้องมีข้อมูลจากตารางอื่นมาช่วยนั่นเองนะคะ ต่อมา Attribute ก็คือตารางหนังในตารางนั้นมีคอลัมน์อะไรบ้าง ก็คือหัวของคอลัมน์นะคะ เพราะฉะนั้น Attribute นะคะ สัญลักษณ์ของ จะเป็นวงรีนะคะ อย่างข้อมูลพนักงานควรจะมีอะไรบ้าง จะมีรหัสพนักงานชื่อนามสกุลมีเพศมีเงินเดือนนะคะ สัญลักษณ์จะเป็นแบบนี้ นี่นะคะ ข้อมูลพนักงานอันนี้ ก็คือเอ็นติตี้ใช่ไหมคะ ตาราง หัวตาราง มันก็จะเป็นคอลัมน์ คอลัมน์ ซึ่งใน Attribute เนี่ยมันก็ยังแบ่งไปอีกเป็น 2 ประเภท เหมือนกันนะแต่ก็ใช้วงรีเหมือนกันนี่แหละ แต่อาจจะมีสิ่งที่เปลี่ยนแปลนิดหนึ่งโดย Attribute ที่ 1 คือ ไม่สามารถแบ่งย่อยอีกแล้วเช่นเพศคุณก็ตอบได้นิดเดียวคุณเห็นอะไรคุณก็ตอบตรงนั้นเงินเดือนมีค่าเดียวมันจำเป็นต้องบอกว่า เงินเดือนเดือนนี้ 1 เงินเดือนที่ 2 เงินเดือนเดือนที่ 3 มีค่าเดียว เงินเดือนปัจจุบันเท่าไร นะคะ เลขบัตรประชาชนสอบได้ค่าเดียว รหัสนักศึกษาตอบได้ค่าเดียว อันนี้คือเป็น Attribute หรือเป็นข้อมูลโดยทั่วไปนะคะ ต่างจาก Attribute ประเภทที่ 2 คือ assistanceที่สามารถแบ่งย่อยได้เช่นชื่อนามสกุลเราแยกกันกรอกได้ไหม ได้แบ่งเป็นชื่อคอลัมน์หนึ่งนามสกุลคอลัมน์ 1 ก็ได้นะคะ ออกมาเป็นขีดนะคะ ก็เป็นค่าอีกละต้องไม่ซ้ำกัน ในตารางนั้นต้องค่านี้ต้องไม่ซ้ำกัน โดยลักษณะเฉพาะของคีย์นะคะ มันจะมีการขีดเส้นใต้ เพื่อแสดงว่ามันเป็นค่าที่ซ้ำกันไม่ได้ เหมือนเวลาเราเรียนวิชาอะไรก็ละก็ตาม ถ้าอันไหนขีดเส้นใต้ เป็นการเน้น ใช่ไหมกูก็เหมือนกันหาข้อมูลเหมือนกันแสดงว่าค่านั้นเป็นจุดเน้นที่เราจะต้องให้ความสำคัญกับมันค่ะ กับข้อมูลนะคะ เพียงข้างเดียวเท่านั้นเช่น คุณจะระบุเพศคุณจะเป็นเพศไหนคุณระบุมา อาจจะไม่มีแค่ชายหรือหญิง ตอนนี้คุณเป็นเพศอะไร ก็ระบุมานะคะ หรือค่าที่มีค่าได้หลายค่า อย่างเช่น เบอร์บ้าน ถ้าแต่ละที่ก็จะมีรหัสพื้นที่ไม่เหมือนกัน กรุงเทพฯก็เป็น 02 สกลก็เป็น 042 ขอนแก่นก็ 043 อุดรก็ 042 ใช่ไหมคะ มันก็ต้องระบุด้วย อย่างนี้นะคะ ถ้าค่าไหนมีค่าได้หลายค่า อย่าลืมวงรี 2 เส้น กับค่าของข้อมูลที่ได้จากการคำนวณเ ราจะใช้วงที่เป็นเส้นประ เช่น อายุที่ได้มาจากวันเกิด นะคะ หรือว่าวันเข้าทำงานจนถึงปัจจุบันคุณ ทำงานมาแล้วกี่ปี อย่างนี้ก็ได้ ค่าที่ได้มาจากการคำนวณนั่นแหละ อันนี้เป็นตัวอย่าง Simple Attribute แยกให้ออกนะคะ อันดับแรกคิว W คือวงรีคนนี้ตัวนี้ตัวนี้ตัวนี้ในสิ่งคืออะไร ที่เรียนคือ Entity ที่ชื่อตารางนั่นเองนะคะ ตัวอย่างของแอตทริบิวต์ที่แยกย่อยไปได้เช่นชื่อนามสกุลแต่งตัว แยกเป็น First name Lastชื่อกับนามสกุลก็ได้ ที่อยู่ บางคนอาจจะกรอกบรรทัดเดียวเลยก็ได้ หรืออยากจะออกแบบให้ มัน บ้านเลขที่อยู่บรรทัด 1 ตำบลละ 1 อำเภอจังหวัดยะลาหมดเลยก็ได้ ถามว่าใช้สัญลักษณ์ต่างไปไหมไม่นะคะ ไม่ เหมือนกัน แต่ถามว่าเราลบอันนี้ออกได้ไหม ก็ได้นะคะ เพราะว่ามันจะได้ไม่เปลืองเนื้อ อย่างนี้ก็ได้ แล้วคุณต้องกรอกไปเลย ชื่ออันนึง อันนี้ก็ได้นะคะ key Attribute ค่าที่ห้ามซ้ำกัน ก็คือตารางนักเรียนอะไรที่ห้ามซ้ำกัน ก็คือรหัสนักเรียนนี่ มันย่อมาจากstudent ID นะคะ Student ID ทำไมถึงรู้เป็น student id ที่ไหนดีเพราะคำย่อแบบนี้หรือชื่อทุกอย่างนี้จะต้องจดไว้ในพจนานุกรมข้อมูลด้วยถามว่าอันนี้มันง่ายค่ะ เพราะว่ามันมาจากอะไรถ้าคนไม่มีความรู้พื้นฐานเลยเขาจะรู้ได้ไงว่า SID คืออะไร อันนี้เดี๋ยวเรื่องนึงค่ะ เป็นอีกเรื่องนึง ถ้าเอาทุกอย่างรวมกันใน 1 ตาราง สามารถมีแอตทริบิวต์หรือมีรูปแบบข้อมูลได้ทุกรูปแบบก็ได้นะคะ มีทั้งคีย์หลัก มีทั้ง Attribute มีที่สามารถแบ่งย่อยได้ มีทั้งแอตทริบิวต์ที่ได้มาจากการคำนวณ คือ อายุจะได้ข้ามมาจากวันเดือนปีเกิด เบอร์โทรศัพท์ เป็นมัลติแวลูก็คือมีได้หลายค่า ก็ใส่วงรีซ้อนกัน อันนี้คือตัวอย่างนะคะ ตัวอย่างของแอตทริบิวต์ แต่เดี๋ยวอาจจะยังไม่เข้าใจเดี๋ยวว่าลูกก็น่าจะเข้าใจได้มากขึ้นนะคะ ต่อมาความสัมพันธ์นะคะ มันเป็นความสำคัญของตารางตั้งแต่ 2 ความสำคัญขึ้นไป ความสำคัญจะมีข้อมูลที่ใช้ร่วมกันสัญลักษณ์คือสี่เหลี่ยมข้าวหลามตัดนะะค เช่น ตารางพนักงาน อันนี้พนักงานนะคะ พนักงาน walk in แปลว่า ทำงานอยู่ในแผนกอะไร ก็คือ Department โดยความสัมพันธ์ตัวนี้นี่ จะต้องสามารถอ่านไปข้างหน้า อ่านกลับย้อนหลังก็ได้ อย่างเช่น ตัวอย่าง ก็คือพนักงานทำงานอยู่ในแผนกอะไร หรือในแผนกนั้น ๆ มีใครทำงานอยู่บ้าง มันจะต้องเข้าใจได้แบบนี้ หรือการสั่งสินค้าอยู่ในใบสั่งสินค้าอยู่ไหนนะคะ สินค้าชนิดนั้น ๆ อยู่ในใบสั่งซื้ออะไร ก็ต้องดูได้ สินค้า อย่างเช่น power bank อาจจะอยู่ได้ในหลายใบสั่งซื้อสินค้าก็ได้ เพราะสินค้าเรามีหลายตัว ไม่ใช่ว่าขายให้แค่คนเดียวขาย ขายให้ได้หลายคนค่ะ ความสัมพันธ์แบบ 1 ต่อ 1 จะต้องเป็นความสัมพันธ์ที่สมาชิกคนเดียว ความสัมพันธ์ไปอีกสมาชิกหนึ่งของอีกตารางหนึ่งเท่านั้น เช่น เจ้าของรถเจ้าของรถยนต์ได้ 1 คัน นะคะ อันนี้สมมุติสมมุตินะคะ คน 1 คน เป็นเจ้าของรถยนต์ได้ 1 คันใ ช่ไหม ใครเคยเห็นในทะเบียนรถยนต์ ทะเบียนรถยนต์ต้องมีเจ้าของคนเดียวนะ ตัวอย่าง แต่ถ้าเปลี่ยนเป็นความสัมพันธ์แบบหนึ่งกับมากกว่า 1 ล่ะ นะคะ เช่น คนหนึ่งคนมีรถยนต์ได้หลายคัน ใช่ไหม อยู่บ้านบางคนอาจจะมีรถยนต์มากกว่า 1 คัน อาจจะมีรถเก๋ง มีรถกระบะ มีรถ 6 ล้อ พ่อเป็นเจ้าของรถหมดเลย ก็ได้ แต่ในบรรดารถ ทุกคัน จะต้องเจ้าของคนเดียว อันนี้คือสิ่งที่เราต้องคิดด้วย นะคะ คน ๆ หนึ่งมีรถได้หลายคันก็จริง แต่รถคันนั้นจะต้องมีเจ้าของได้คนเดียว กับความสัมพันธ์ที่มากกว่า 1 เช่น ลูกค้าหลายคน ลูกค้า 1 คน สมมติเวลาเราไปซื้อของ เราจะต้องซื้อกับแคชเชียร์คนนี้ใช่ไหม เวลาจ่ายเงิน แต่แคชเชียร์คนนี้ ก็สามารถรับลูกค้าได้หลายคนเหมือนกัน ลูกค้าหลายคนก็ไปจ่ายกับแคชเชียร์คนไหนก็ได้ ไม่จำเป็นต้องจ่ายเฉพาะคนนี้เท่านั้น เหมือนเวลาเราไปเดินห้างซื้อของในซูเปอร์ วันหนึ่งเขามีลูกค้าหลายคนไหมมีหลายคนนะคะ คนคิดเงินก็มีหลายคนไหม มีหลายคนเหมือนกันเพราะฉะนั้นวันนี้เราอาจจะเจอพนักงานคนหนึ่ง พรุ่งนี้อาจจะเจอคนใหม่ก็ได้ เขาก็อาจจะไม่ได้เจอเราคนเดียว เขาเจอลูกค้าหลายคนมีความสัมพันธ์มากกว่า 1 ทั้งสองฝั่งภาษาอังกฤษเรียกว่า many to many นะคะ อันนี้เป็นตัวอย่างความสัมพันธ์แบบหนึ่งต่อหนึ่ง จะเห็นได้ว่าเส้นเชื่อมความสัมพันธ์จะเป็นเส้นตรง มีตัวเลขกำกับเห็นไหมคะ ตัวเลขกำกับด้วย เพราะฉะนั้น เวลาเราลากเส้นเชื่อมความสัมพันธ์ใด ๆ ก็ตาม จะต้องมีตัวเลขหรือตัวอักษรกำกับทุกครั้งนะคะ อันนี้เป็นความสัมพันธ์แบบหนึ่งต่อหนึ่ง ตัวแทนขายสินค้า ดูแลลูกค้าได้ 1 คน จริงไหม อาจจะไม่จริงเสมอไป ตัวแทน 1 คน อาจจะดูแลลูกค้าได้หลายคนก็ได้ ถ้าเป็นลูกค้าหลายคน เราจะแทนด้วยตัว M หรือตัว N ก็ได้ M หรือ n ก็ได้ แต่ต้องใสj ถามว่าถูกต้องหรือยัง ตัวแทน 1 คน ดูแลลูกค้าได้หลายคนลูกค้าหลายคนก็ได้ดูแลตัวแทน 1 คน ถูกไหม ก็ถูกนะคะ แบบนี้เป็นต้น มีการใส่คีย์หลัก มีการขีดเส้น อันนี้เป็นความสำคัญ ก็คือเขาดูแลกัน ต้องใส่ต้องระบุนะคะ แต่ถ้าเป็นความสัมพันธ์ที่มากกว่า 1 ทั้ง 2 ด้าน เราจะต้องใส่เป็น M กับ N เท่านั้น มันจะใส่เป็น Mเป็นอย่างนี้ไม่ได้ไม่ได้นะคะ ไม่ได้nnMไม่มีได้ไหม ก็ไม่ได้ ต้องเป็น M กับ n เผื่อให้ความหมายได้ถูก ว่ามันเป็นความสัมพันธ์ที่เชื่อมกัน ระหว่างเส้น 2 เส้นนี้นะคะ อันนี้เป็นตัวอย่าง เดี๋ยวพอวาดง่าย ๆ ก่อย น่าจะเข้าใจง่ายขึ้น อันนี้ออกสอบได้มากอาจารย์อาจจะมีรูปภาพให้ แล้วให้พวกคุณเปลี่ยนเป็นตาราง ง่ายมากเลยนะคะ คือเขาบอกให้อยู่ไหนนิกรอบสี่เหลี่ยมนึกชื่อตารางใช่ไหมคะ คุณก็เอากล่องสี่เหลี่ยมออกแล้วก็เขียนชื่อตารางอยู่ในวงรี Attribute ก็เป็นคอลัมน์ของตาราง เสร็จแล้ว หรือถ้าอาจารย์ให้วาดรูป ทำอย่างไรตารางข้างล่าง ชื่อตารางใช่ไหมคะ ชื่อตารางก็เอามาใส่กรอบสี่เหลี่ยม คอลัมน์ แต่ละคอลัมน์ก็เอามาใส่ในวงรี โยงเส้น เสร็จ แค่นั้นเอง อันนี้ออกสอบด้วยนะ นะคะ อาจจะไม่ง่ายอย่างนี้หลักการมีประมาณนี้ล่ะนะคะ ถ้าสมมุติว่ามันมีข้อมูลที่มันสามารถแบ่งแยกออกได้นะคะ จะเห็นได้ว่าตอนก่อนหน้านี้ที่อาจารย์ตัดตรงนี้ออก ใช่ไหม เวลาเราเอามาเขียนในรูปแบบของตาราง อันนี้ เราจะไม่ใส่ เราจะดูเฉพาะ Attribute ที่อยู่ขอบนอกสุดเท่านั้นนะคะ เราจะเฉพาะข้างนอกสุดเขียนเป็นตาราง อันนี้เป็นดูดี ๆ นะกำหนดแต่ละอันนะคะ กับค่าตารางไหนมีข้อมูลที่สามารถมีได้หลายค่า เห็นไหม วงรีซ้อนกัน 2 วง เราจะเอาข้อมูลนั้นแยกเป็นอีก 1 ตาราง แต่คีย์หลักจะเอามาจากตารางเดิมนะคะ เพื่อให้ 2 ตารางนี้ มันเชื่อมโยง กันโดยค่าคีย์หลักเชื่อมกัน อันนี้เป็นข้อสังเกตก่อนนะ อันนี้ยังเป็นกฎที่ยังต้องใช้อยู่นะคะ อันไหนที่เป็นค่า ที่เป็น อ่อนแอตารางอ่อนแอมันต้องดูด้วยว่ามันคุยมีความสัมพันธ์กับตารางไหนเราจะเอาคีย์หลักของตารางที่มันมีความสัมพันธ์ด้วยนิสัยด้วยเหมือนกัน อย่างเช่น เดี๋ยวลบอันนี้ออกก่อน ทำไมถึงบอกว่าตารางด้านขวามือเป็นตารางอ่อนแอเพราะ ในตารางนี้ มีเวลาทำงาน มีเวลากลับบ้าน มีวันที่ แต่ถามว่าเป็นของใคร ใครล่ะ มาทำงาน 7:00 น กลับ 16:00 น ใครมาทำงาน 08:00 น กลับ 20:00 น ไม่รู้ เพราะฉะนั้น ต้องไปดูด้วยว่า พนักงานคนไหนที่เขามาสแกนนิ้วทำงานหรือตอกบัตรทำงานนะคะ แต่ถามว่าในตารางนี้ทำไมเราไม่ให้กรอกรหัสพนักงานด้วยเลยล่ะ มันก็เป็นการซ้ำซ้อนกันไงคะ ในเมื่อเรามีรหัสพนักงานอยู่แล้ว เราก็เรียกใช้ได้เลย เราไม่จำเป็นต้องเพิ่มตรงนี้ก็ได้ อันนี้คือการออกแบบที่ดี ถ้าในคำซ้อนกันเราจะไม่ใช้ แล้วจะมีข้อมูลมาใช้เลย อันนี้คือข้อดีของการออกแบบฐานข้อมูล อันนี้คือตัวอย่างอย่างนึง กับการเปลี่ยนให้เป็น ตาราง ถ้าเมื่อกี้นี้ในรูปนี้อาจารย์ไม่ได้ใส่ความสัมพันธ์ใช่ไหมคะ ยังไม่มีเส้นเชื่อมโยงไปทางอื่นใช่ไหม ถ้ามันมีเส้นเชื่อมโยงไปตารางอื่นล่ะ อันนี้เป็นความสัมพันธ์แบบหนึ่งต่อหนึ่ง เราจะต้องเอาคีย์หลักไอ้ที่ขีดเส้นใต้นี่ ของตารางด้านข้างที่เรามีความสัมพันธ์ด้วยมาใส่ในตารางเรา แต่ความสัมพันธ์แบบหนึ่งต่อหนึ่งจะมีข้อได้เปรียบอย่างหนึ่ง คือ ในตารางแรก จะเอารหัสลูกค้ามาเป็นคีย์เชื่อมต่อกันก็ได้ หรืออาจจะเอารหัสตัวแทนเป็นตัวเชื่อมต่อกันก็ได้ อันนี้เป็นความพิเศษเฉพาะตารางแบบหนึ่งต่อหนึ่ง แต่ต้องเอาคีย์หลักของตารางที่เรามีความสัมพันธ์ด้วย อาจจะเป็น เลือกมาทางไหนก็ได้ ต้องมี ต้องมี มันสามารถยืดหยุ่นได้นั่นเอง เฉพาะความสัมพันธ์แบบหนึ่งต่อหนึ่ง แต่ถ้าความสัมพันธ์หนึ่งต่อกลุ่ม จะต้องเอาคีย์หลักของฝั่งที่มีความสัมพันธ์เป็นหนึ่ง มาใส่ในตารางที่มีความสัมพันธ์แบบกลุ่มเท่านั้น อันนี้เป็นลักษณะเฉพาะนะคะ ลักษณะเฉพาะความสัมพันธ์แบบหนึ่งต่อกลุ่ม แต่ถ้าเป็นความสัมพันธ์แบบกลุ่มต่อกลุ่มล่ะ เห็นไหมคะ เป็น M กับ n เราจะไม่เอาตารางเอาค่าคีย์หลัดมาใส่ในตาราง แต่เราจะสร้างตารางใหม่ขึ้นมา โดยใช้คีย์หลักของทั้งสองตารางที่มีความสัมพันธ์กัน มาสร้างเป็นตารางใหม่เลย จำลักษณะ 3 อย่างนี้ให้ดีนะคะ 1 ต่อ 1 1 ต่อกลุ่ม ออกกลุ่มการนำมาสร้างเป็นตารางลักษณะเฉพาะมี 3 แบบแบบแรกคือเอาครีมวันไหนก็ได้แบบที่ 2 คือเอาเฉพาะคีย์หลักของฝั่งที่เป็นเป็นหนึ่งเท่า นั้น แบบที่ 3 คือ เอาคีย์หลักของทั้ง 2 ความสัมพันธ์มาสร้างตารางใหม่ เลย ราคาอันนี้คือลักษณะเฉพาะของการเปลี่ยนรูปภาพให้เป็นตารางนะคะ เดี๋ยวจะมีให้ทำด้วย บางคนจะจำไม่ได้การออกแบบนะคะ ก็อันนี้พูดไปแล้ว เราจะมาลองวาดรูปกัน ให้น่าจะเคยไปร้านหนังสือกัน หรืออาจจะเคยเห็นหนังสืออยู่แล้วนะ นะคะ ในหนังสือ 1 เล่ม จะมีอะไรบ้าง แน่นอน ข้อมูลหนังสือแต่ละเล่ม ก็จะมีรหัสหนังสือนะ มีชื่อหนังสือ มีรหัสผู้แต่ง รหัสสำนักพิมพ์ อันนี้คือข้อมูลที่อาจารย์ให้ก่อนนะ เดี๋ยวเรามาวาดรูปกัน ในข้อมูลของคนแต่งหนังสือมีอะไรบ้าง ก็จะมีผู้แต่งคนนั้นนะคะ มีชื่อผู้แต่งหนังสือ ในข้อมูลสำนักพิมพ์ ก็จะมีรหัสสำนักพิมพ์ มีชื่อสำนักพิมพ์ มีที่อยู่ มีเบอร์โทรศัพท์นะคะ ขั้นตอนแรก ศึกษาก่อน ในระบบหนังสือ ร้านหนังสือ ก็คือข้อมูลที่อาจารย์ให้เมื่อกี้ มันจะมีข้อมูลหนังสือนะคะ มีข้อมูลคนแต่ง มีข้อมูลสำนักพิมพ์ มีกระดาษใช่ไหมพลอย โอเค ขั้นตอนต่อมากำหนดเดEntity เดี๋ยวจะให้ทำเอง ก็คือในข้อมูลที่อาจารย์ให้อันนี้จะต้องมีอีกกี่เอมมี่หรือมีกี่ตารางทำสีสัญลักษณ์ให้ถูกด้วยนะคะ เดี๋ยวอาจารย์จะเจอเดินดู ทำเลย นี่ จากข้อมูลนี้ ข้อมูลตัวหนังสือสีดำ ๆ นี่ ดำเข้ม ๆ นี่ เราควร มีกี่ตาราง วาดรูป นี่ วาดรูปแบบนี้ จะให้วาดแบบนี้ ง่าย ๆ นี่ วาดแบบนี้ ให้เอาข้อมูลมาวาดเป็นรูป แบบนี้ แต่อย่างแรกเลยดูก่อนว่าข้อมูลที่อาจารย์ให้นี่ มันควรจะมีกี่ตาราง ดูสิว่ามันต้องมีกี่ตาราง สัญลักษณ์ของตารางหรือ npt ก็คือเหลี่ยมผืนผ้าลองว่าซิมันควรจะมีสี่เหลี่ยมผืนผ้ากี่อันแล้วในสี่เหลี่ยมผืนผ้าจะต้องเขียนว่าอะไรลองทำดู อันนี้ยังไม่ยาก สรุปแล้วมีกี่ตาราง อันนี้ง่ายมาก ดูจากที่อาจารย์เน้นตัวหนังสือสีดำเข้มไว้ เราจะได้ 3 ตาราง ในกรอบสี่เหลี่ยม มีตารางผู้แต่ง มีตารางหนังสือ มีตารางสำนักพิมพ์ ก็คือ 3 entity นั่นเอง นะคะ จากโจทย์ที่อาจารย์กำหนดให้นะ ที่จะเน้นให้ อันนี้จะให้ทำเอง หลังจากเราได้ตาราง หรือ Entity แล้วนะคะ มันจะต้องกำหนดความสำพันธ์ ความสัมพันธ์ ก็คือเส้นที่โยง 3 อันนี้ เราจะโยงเส้นมันอย่างไร โดยความสัมพันธ์ของแต่ละอัน มันควรเป็นอย่างไร สิ่งที่มันควรจะเป็น ก็คือหนังสือแต่ละเล่มจะถูกพิมพ์จากสำนักพิมพ์ใดสำนักพิมพ์หนึ่งเท่านั้น ใช่ไหม แต่ว่าใน 1 สำนักพิมพ์ เขาก็สามารถพิมพ์หนังสือได้หลายเล่มนะ อันนี้คือเงื่อนไข เงื่อนไข หนังสือแต่ละเล่ม กำหนดว่าจะต้องมีคนแต่งคนเดียวเท่านั้น แต่ในโลกของความเป็นจริงนี่ หนังสือนี่ มันอาจจะมีคนแต่งช่วยกันก็ได้นะ แต่ว่าในโจทย์ที่อาจารย์ให้ อาจารย์ให้หนังสือ 1 เล่ม คนแต่งได้คนเดียว อันนี้คือโจทยตามกำหนดนะคะ แต่ว่าผู้แต่งหนังสือแต่ละคนเขาก็สามารถแต่งหนังสือได้หลายเล่มเหมือนกัน อันนี้คือข้อกำหนดที่อาจารย์กำหนดให้นะคะ แล้วเราจะให้ความสัมพันธ์แต่ละอันอย่างไร ก็คือการวาด นี่ ๆ ว่าแบบนี้ นี่มันจะเป็นการวาดแบบนี้นะคะ ความสัมพันธ์มันจะเป็นแบบนี้ อันนี้คือความสัมพันธ์ที่นักศึกษาต้องวาด จากโจทย์ตัวนี้ นะคะ จากโจทย์ตัวนี้ ไอ้ 3 อันนี้ มันจะต้องสัมพันธ์กันอย่างไร ลองวาดดูสิ ลองวาดดู รูปมันจะต้องออกมาเป็นแบบนี้นะคะ แต่ข้อมูลข้างในเราจะใส่ว่าอย่างไร ลองใส่ดู เดี๋ยวให้เวลา 5 นาที ลองดูสิว่าจะเข้าใจโจทย์อาจารย์ไหม จะวาดได้หรือเปล่า 5 นาที เดี๋ยวมาดูกัน เดี๋ยวเอาตัวอย่างให้ดูอันหนึ่ง แล้วที่เหลืออยู่ตามหนังสือให้ตัวอย่าง 1 อันก่อนให้วาดแบบนี้นะคะ 1 คน ในโจทย์ที่อาจารย์บอกอ่านหนังสือ 1 เล่มใช่ไหมคะ หนังสือก็มีผู้แต่งได้แค่คนเดียว แต่เขาแต่งได้หลายเรื่องใช่ไหม เพราะฉะนั้น ความสำคัญ ก็คือผู้แต่ง 1 คน สามารถสั่งหนังสือแต่ถ้าเราอาจย้อนกลับหนังสือหลาย ๆ เล่มนี่ มีผู้แต่งแค่ 1 คน อันนี้ยกตัวอย่างให้ 1 อันแล้ว ที่เหลือลองวาดดูสิ ให้มันได้เหมือนอาจารย์นี่ ที่เหลือมันควรจะเป็นอย่างไร ลองดูสิ เริ่มให้แล้ว 1 อัน ที่เหลือลองทำดูก่อน ที่เหลือ หนังสือหลาย ๆ เล่ม จะต้องถูกพิมพ์จาก 1 สำนักพิมพ์เท่านั้น ใช่ไหม อันนี้ตามโจทย์ที่อาจารย์กำหนด นะคะ ถ้าเราเอามารวมกันในความสัมพันธ์นะคะ มันอาจจะเขียนได้เป็นแบบนี้นะคะ ผู้แต่ง 1 คน แต่งหนังสือได้หลายเล่ม และหนังสือหลาย ๆ เล่ม จะต้องถูกจัดพิมพ์จาก 1 สำนักพิมพ์เท่านั้น อันนี้คือรูปความสัมพันธ์ที่เกิดขึ้น อันนี้ยังง่ายอยู่ พอเห็นภาพขึ้นบ้างไหม นะคะ อันนี้ยังง่าย อันนี้พอเราอ่านถ้าเป็นคนที่ไม่มีความรู้ทางด้านคอมพิวเตอร์มาอ่านเขาก็ยังจะเข้าใจ อันนี้คือการวาดรูปมันง่ายขึ้น เลยทำให้เราเข้าใจง่ายขึ้น เราก็จัดระเบียบความคิดของเรา ว่าสิ่งที่ควรจะเป็นในฐานข้อมูลมันควรจะเป็นอย่างไรนะคะ ต่อมา ง่ายแล้ว อันนี้ยิ่งง่าย เราได้ความสัมพันธ์เราได้เอนติตี้แล้วเราต้องมาเขียนในแต่ละตารางมันควรจะมีข้อมูลอะไรแล้วอะไรจะเป็นกีฬาก็คือค่าที่ห้ามซ้ำกัน ที่เราต้องขีดเส้นนะคะ เอามาจากตรงไหน มาจากตรงนี้ เรารู้แล้วว่าอันไหนคือชื่อตาราง ก็คือชื่อ Entity แล้วข้อมูลมีอะไรบ้าง มันก็แค่เอาข้อมูลที่อาจารย์กำหนดให้นี่ล่ะค่ะ ไปใส่ในรูปวงรีใช่ไหม คือ Attribute แต่มันจะยาก ก็คือในแต่ละข้อมูลอะไรจะเป็นคีย์หลัก ก็คือค่าค่าที่ห้ามซ้ำกัน ลองวาดดู อาจารย์เอาให้หมดแล้ว 3 อันนี้จะต้องข้อมูลอะไรบ้าง กำหนดอยู่ อนุญาต ก็คือเราจะขีดเส้นใต้ในข้อมูลอันไหนนะคะ อันนี้หมดไปแล้ว ทำเอง ลองดูสิ ลองดูสิมันจะได้รูปเหมือนกับของอาจารย์ไหม ลองทำดู แค่เอาข้อมูลที่อาจารย์กำหนดให้ในสไลด์ก่อนหน้านี้ ใส่แค่นี้เอง เดี๋ยวให้ลองทำดูเองว่ามันเหมือนกันไหม 5 นาที เหมือนเดิม เดี๋ยววันนี้ไม่เสร็จ ให้ 1 ตัวอย่างก่อน มันต้องแบบนี้ 2 อันที่เหลือทำเอง เอาตัวอย่างให้ดูก่อน ได้ตารางหนังสือแล้ว เหลือตารางสำนักพิมพ์กับตารางผู้แต่ง ลองทำอีก 2 อันที่เหลือ ให้รูปมันออกมาเป็นแบบนี้ ต้องทำอย่างไร ยกตัวอย่างให้ก่อน เดี๋ยวไม่เข้าใจ เห็นไหมว่าอาจารย์กำหนดคีย์ด้วย ก็คือเราขีดเส้นใต้รหัสนักหนังสื่อน่ะ ห้ามซ้ำกัน อีก 2 อันที่เหลืออันไหนต้องห้ามซ้ำกัน แล้วทำไมในตารางหนังสืออาจารย์ถึงมีรหัสสำนักพิมพ์ด้วย ทำไมต้องมี ต้องมีเพราะว่าเราจะได้รู้ว่าหนังสือเล่มนี้สำนักพิมพ์ไหนเอามาขาย ใช่ไหม อันนี้ ไอ้รหัสสำนักพิมพ์นี่ คือ คีย์นอก ซึ่งเอาไว้เชื่อมโยง ไปดูว่าสำนักพิมพ์ชื่ออะไรอยู่ที่ไหนเบอร์โทรศัพท์อะไรไม่จำเป็นต้องเอาข้อมูลมาทั้งหมดเอามาแค่รหัสก็พอ ในการเชื่อมโยงกัน 2 ตาราง นะคะ ลองว่าดูสิ 2 อันที่เหลือ ไหนผู้แต่งต้องมีอะไร สำนักพิมพ์ต้องมีอะไร ลองวาดดูสิ เห็นไหม ผู้แต่งได้หรือยัง เหมือนกันหรือเปล่า อันนี้ง่ายมากเลย เพราะเอาข้อมูลที่อาจารย์ให้มาวาด แค่นั้นเอง ใช่ไหม สำนักพิมพ์ ก็เป็นแบบนี้ เพราะอาจารย์ให้ข้อมูลไปหมดแล้ว พอเราวาดเสร็จ ได้องค์ประกอบทุกอย่าง รูปที่สมบูรณ์ มันเลยเป็นแบบนี้ ใช่ไหม จากข้อมูลที่อาจารย์ให้ทั้งหมด พอมาวาดรูป เหมือนกันเลย แค่เอาข้อมูลที่ได้น่ะค่ะ จากตัวหนังสือเป็นยาว ๆ เฟื่้อย ๆ นี่ เราก็เอามาวาดเป็นรูปแล้ว มันจะได้เช็กได้ ว่าเราขาดข้อมูลตรงไหนหรือเปล่านะคะ ข้อมูลมันยังสามารถเติมตรงไหนได้อีก มันเป็นไปอย่างที่เราเข้าใจไหม ในตัวของ สมมุติว่าเขามาจ้างให้เราออกแบบ ข้อมูลเข้าใจตรงกันหรือเปล่า นะคะ หรือเขาอยากให้เอาข้อมูลอะไรเข้ามาอีก แต่ถ้าเป็นการออกแบบฐานข้อมูลจริง ๆ ที่ใช้กันในชีวิตประจำวัน ถามว่าแค่นี้พอไหม ไม่พอนะคะ อันนี้เป็นแค่ตัวอย่างที่อยากให้คุณทำ ฐานข้อมูลนี้จริง ๆ มันจะเป็นอย่างไร มันจะเป็นแบบนี้เลย เห็นไหมคะ ว่าร้านหนังสือร้านหนึ่งมันไม่ได้มีแค่เท่าเมื่อกี้นี้ มันต้องเป็นแบบนี้เมื่อกี้ มันน้อยมาก แต่ถ้าเราทำงานจริง ๆ ข้อมูลมันจะเยอะขนาดนี้เลยนะคะ ข้อมูลจะเยอะขนาดนี้เลย เพราะฉะนั้น วันนี้มีสิ่งที่ให้นักศึกษาไปทำ อาจารย์กำหนดข้อมูลให้แล้วด้วย ให้วาดรูปเหมือนเมื่อกี้นี่ค่ะ เหมือนที่อาจารย์ยกตัวอย่าง แต่คราวนี้ เป็นการขายคอมพิวเตอร์นะคะ โดยข้อกำหนด คือ ลูกค้ามีได้หลายคน แล้วก็สามารถซื้อสินค้าได้หลายชิ้นนะคะ แล้วก็ 1 ใบเสร็จรับเงิน ก็มีสินค้าได้หลายชิ้นเหมือนกัน มีชิ้นเดียวได้ไหม ได้ แต่มีมากกว่า 1 ชิ้น ก็ได้เหมือนกันนะคะ ในแต่ละใบเสร็จ จะต้องมีแคชเชียร์หรือพนักงานขายแค่คนเดียวเท่านั้น อันนี้คือเรื่องทั่วไปเลยนะคะ เหมือนเวลาเราไปซื้อของในห้าง คนคิดเงินให้เราก็มีคนเดียวใช่ไหม เราก็ต้องมีการแยกประเภทสินค้าด้วยนะคะ เช่นเหมือนเวลาเราไปห้าง มันก็จะแยกกัน เครื่องครัวอยู่ที่หนึ่ง ที่นอนอยู่ที่หนึ่ง ใช่ไหม ของกินอยู่ที่ หนึ ใช่ไหมคอมพิวเตอร์ก็เหมือนกันนะคะ โดยที่อาจารย์กำหนดให้แล้วนะคะ ว่ามันควรจะมีตารางอะไรบ้าง มี 5 ตาราง นะคะ 5 ตาราง ก็จะเป็นตารางลูกค้า ตารางพนักงานขาย ตารางรายละเอียดของสินค้า ประเภทของสินค้า ตารางใบเสร็จ อันนี้อาจารย์กำหนดให้แล้วนะคะ ว่าควรจะมีข้อมูลอะไรบ้าง ให้เราไปวาดรูปมา ทำเอง ใช้หลักการเดียวกัน เหมือนกับที่อาจารย์ยกตัวอย่างไปเมื่อกี้นี้ ลองวาดดูสิ ว่ารูปที่ได้จะเป็นอย่างไรนะ อันนี้เป็นการบ้าน สำหรับวันนี้ไม่มีอะไร แค่นี้ก็ปวดหัวมากแล้ว ถ้าใครจะนั่งวาดรูปต่อก็ได้ แต่ต้องส่งนะคะ ต้องส่ง วันนี้ก็ประมาณนี้ มาครบทุกคน เดี๋ยวให้ไปปวดหัววาดรูปต่อนะ ปกติวาดรูปไม่เคยปวดหัวเท่านี้มาก่อนเลย วันนี้ลองดู ที่แน่ ๆ มีกี่ตารางนี่ 5 ตาราง ไปวาดมาสิ ว่าในตารางมันควรมีข้อมูลอะไรบ้าง จากที่เมื่อกี้อาจารย์กำหนดให้ ลองกำหนดดูสิ มันต้องมีอะไรบ้าง ลองใส่กระดาษวาดรูปนี่แหละ บ้านมาทำความสัมพันธ์ให้ครบด้วย อันไหนเป็นค่าที่ห้ามซ้ำกันอย่าลืมขีดเส้นให้อาจารย์ด้วยนะคะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณมาก ขอบคุณล่ามด้วย ขอบคุณขอบความด้วยนะคะ โอเคค่ะ เจอกันสัปดาห์หน้าค่ะ