(อาจารย์เกวลี) โอเค สวัสดีค่ะ โอเคค่ะ วันนี้จะเป็นบทที่ 4 นะคะ จะเป็นเกี่ยวกับแบบจำลองข้อมูลหรือเวลาเราเรียกมัน ๆ วาดรูป ER นะคะ ตัว E แล้วก็ตัว R แมันภาษาอังกฤษโดยแผนภาพนะคะ ER นะคะ หรือว่า ER model มันจะเป็นล่ามเขาได้ยินเราไหมพลอยทำไมนำอยู่นิ่ง ๆ น่ากินไหมคะ (อาจารย์เกวลี) ล่ามได้ยินไหมคะ ถ้าได้ยิน OK ด้วยค่ะ ก็การวาด ER นะคะ หรือเป็นแบบจำลองข้อมูลนะคะ มันจะเป็นแบบจำลองที่ใช้อธิบายโครงสร้างของฐานข้อมูลโดยที่เราจัดแสดงว่าเป็นรูปภาพ โดยที่โครงสร้างสำคัญที่จะต้องใช้ในการวาดรูปของเรานะคะ ก็คือ Entity หรือว่าตารางกับความสัมพันธ์ ก็คือแต่ละเส้นที่เชื่อมโยงในแต่ละตาราง เราจะต้องโยงกันให้ถูกนะคะ อย่างเช่น ตารางของอาจารย์กับตารางนักศึกษา เราต้องมีความสัมพันธ์กัน อย่างเช่น การเรียนการสอนแบบนี้การวาดรูปจะเป็นเหมือนรูปที่อาจารย์ยกตัวอย่างให้ดูบนจอนะคะ การที่เราจะวาดรูปได้แล้วต้องรู้ด้วยว่าสัญลักษณ์แต่ละอันหมายความว่ายังไง ทำไมเราต้องใช้วงรีทำไมเราต้องใช้สี่เหลี่ยมผืนผ้า ทำไมเราต้องลากเส้นตรงนะคะ แต่ละอันมีความหมายหมดเลย แล้ววันนี้ก็จะพอบรรยายเสร็จจะให้วาดเองด้วยนะคะ จุดเด่นของแผนภาพ ER นะคะ มันจะทำให้เราออกแบบฐานข้อมูลได้เร็วขึ้น เพราะว่ามันเหมือนเป็นการจัดระเบียบความคิดของผู้ที่ต้องการออกแบบ คล้าย ๆ กับเราสมัยมัธยมน่าจะเคยวาด Mind map นะคะ การวาด ER ก็เหมือนกันนะคะ มันจะได้รู้ว่าเราต้องการจะออกแบบอะไร อะไรควรมีความสัมพันธ์กันหรืออะไรที่ขาดหายไปนะคะ เราจะได้เห็นรวมถึงลดความซ้ำซ้อนของข้อมูลออกไปด้วย เช่น ในตารางนี้มีข้อมูลนี้อยู่แล้ว ก็ไม่จำเป็นต้องใส่เพิ่มในทางอื่นก็ได้นะคะ หรือว่าพอวาดออกมา ทำไมมีตารางที่คล้าย ๆ กัน 2 อันมันลบออกได้ไหม การวาดรูปก็ทำให้เห็นภาพได้ง่ายขึ้น โดยคุณลักษณะของการวาดแผนภาพ ER นะคะ ก็คือแน่นอน มันแสดงผลออกมาเป็นภาพนะคะ โมเดลข้อมูลหรือว่าคงรูปแบบข้อมูลแบบไหนก็ตามนี่ มันจะมีภาษาแล้วก็รูปภาพที่เป็นกราฟิกโดยเฉพาะ อาจจะมีทั้งภาพขนาดใหญ่ภาพขนาดย่อย มันจะทำให้เราอ่านข้อมูลหรืออ่านฐานข้อมูลนั้นได้ง่าย เพราะเราใช้วงกลมเราใช้สี่เหลี่ยมเราใช้วงรีนะคะ ใช้เส้นตรงเส้นโค้งเส้นปะทุกอย่างมีความหมายหมดนะคะ มันก็แสดงให้เห็นถึงความชัดเจนของความหมายของข้อมูลด้วย โดยที่เราอาจจะใช้สัญลักษณ์ที่ต่างกันเล็กน้อยนะคะ ซึ่งตัวรูปแบบของการวาดนี่ มันก็จะมีหลายรูปแบบ หนังสือแต่ละเล่มบางเล่มก็ไม่เหมือนกัน บางคนใช้รูปแบบของคนนี้ หรือหนังสือเล่มหนึ่งอาจจะใช้รูปแบบที่ต่างออกไปนะคะ ในการวาดรูป แต่เดี๋ยวถึงเวลาว่าลูกเราต้องตกลงกันก่อน ว่าเราจะเลือกใช้รูปแบบไหนนะคะ ข้อสำคัญคือแผนภาพที่ได้มานี่ มันควรที่จะอ่านง่าย ๆ ไม่ซับซ้อนเส้นไม่ลากตัดกันไปตัดกันมา ฉันเพิ่งคิดได้ฉันเรียกไม่ตรงนี้ได้นะคะ เราต้องคิดก่อนว่ามันจะลากเส้นตรงข้ามจากกระดาษฝั่งนึงไปอีกฝั่งนึงนี่ มันก็ทำให้เราอ่านยาก เพราะฉะนั้น เราต้องมาจัดระเบียบความคิดตัวเองด้วยว่าในฐานข้อมูลเพื่อต้องการนี่ มันมีตารางอะไรบ้าง แล้วแต่ละตารางนี่ มันควรจะเชื่อมกันยังไงนะคะ โดยในแผนภาพที่เราวาดนะคะ รายละเอียดต้องอยู่ในระดับที่เหมาะสมอาจจะไม่ละเอียดยิบขนาดนั้น ไม่ต้องละเอียดแบบเป๊ะ ๆ แต่ว่าเราต้องมองภาพให้ออก หรืออาจจะมีการเปลี่ยนแปลงแก้ไข มันจะต้องยืดหยุ่น รวมถึงรายละเอียดต้องเพียงพอไม่ใช่ว่าน้อยไปบางอันก็เยอะไปเอาที่พอดีโดยที่แต่ละอันอย่างที่บอกแล้วจะต้องมีการเชื่อมโยงความสัมพันธ์ของแต่ละตารางด้วยนะคะ แล้วก็การวาดรูปของเราเราจะไม่ตายตัวเลยว่าเราวาดเพื่อไปใช้กับโปรแกรมอะไรนะคะ รูปที่เราว่าจะต้องเอาไปใช้ได้กับทุกโปรแกรมหรือทุกรูปแบบของการเขียนฐานข้อมูล แล้วก็เวลาใครมาอ่านจะต้องเข้าใจง่าย ถึงแม้ว่าเขาจะไม่ได้เรียนทางด้านคอมพิวเตอร์มาก่อนแต่พอเขาดูรูปภาพอย่างน้อยเขาก็จะเข้าใจว่าเราต้องการจะสื่ออะไร ในฐานข้อมูลเรามีอะไรบ้างนคะะ ไม่รู้หรอกว่าวงนี้มันหมายความว่าไงหรือสี่เหลี่ยมหมายความว่าทำไมต้องเป็นเส้นประทำไมต้องมีเส้นโค้งด้วยเขาอาจจะไม่ต้องเข้าใจตรงนั้น เขาดูแล้วเขาก็พอเข้าใจว่าเราต้องการจะนำเสนออะไรชี้อะไรในฐานข้อมูลมีอะไรบ้าง อันนี้ก็คือต้องอ่านรูปที่เราวาดเข้าใจระดับหนึ่งก็ยังดีนะคะ ขั้นตอนในการออกแบบแผนภาพ ER นะคะ ขั้นตอนในการออกแบบ ER มันก็จะมีอยู่หลายขั้นตอน แต่เราก็จะแบ่งออกมาได้เป็นประมาณ 5 ขั้นตอนในการออกแบบการวาดด้วยโดยได้ภาพคร่าว ๆ มาแล้เนี่ราค่อยไปใส่รายละเอียดที่หลังก็ได้ว่าผู้ใช้งานเขาควรจะดูข้อมูลได้ในระดับไหน การแต่ละคนการเข้าถึงข้อมูลแต่ละชั้นเนี่ชั้นนี่ใครเข้าได้บ้างหรือว่าผู้ใช้งานทั่วไปดูได้อย่างเดียวอะไรไหม อันนั้นคือหลังจากที่เราวาดรูปเสร็จแล้วค่อยมาใส่รายละเอียดที่หลังก็ได้นะคะ โดยขั้นตอนแรกเราจะกำหนด Entity หลักหรือตารางหลักนะคะ โดยในการออกแบบฐานข้อมูลนี่ เราจะต้องเอารวบรวมความต้องการของผู้ใช้งาน ก็คือ Requirement นี่ละมากำหนดว่าในฐานข้อมูลเราจะมี Entity หรือว่ามีตารางอะไรบ้าง ซึ่งขั้นตอนนี้ขั้นตอนที่ค่อนข้างยากเข้าใจในสิ่งที่เรากำลังจะสร้าง ทั้งผู้ใช้งานแล้วก็ผู้ออกแบบต้องเข้าใจตรงกัน เพราะถ้าเรากำหนดตารางไปแล้ว แล้วอยู่ดี ๆ มาเพิ่มมันอาจจะต้องเชื่อมต่อความสัมพันธ์ใหม่ โดยวิธีการก็คือถ้าอยากทำให้มันครอบคลุมมากที่สุด ก็คือเอาข้อมูลทั้งหมดที่มีแล้วจัดกลุ่มของข้อมูล แล้วดูว่าข้อมูลมีค่าอะไรบ้าง มีความหมายอย่างไรแต่อะไรแต่ละอย่างนี่ เชื่อมโยงกันอย่างไร หาข้อมูลเป็นข้อมูลชนิดเดียวกันให้รวมไว้ในตารางเดียวกัน เช่น นักศึกษาจะมีหลายคณะก็จริง แต่ก็คือนักศึกษารวมเป็นตารางเดียวได้ไหม แล้วค่อยมากำหนดลักษณะพิเศษของแต่ละคน ว่านักศึกษาหลาย ๆ พันคนนี่ เขามีความแตกต่างอะไรกันบ้าง แต่เราก็เก็บข้อมูลในตารางเดียวก็พอนะคะ โดยทุกอย่างจะต้องจดไว้ในบันทึกไว้ในพจนานุกรมข้อมูลด้วย แล้วก็เขียนลงไปในแผนภาพที่เรากำลังจะวาดด้วยว่าในตารางนี้มีข้อมูลอะไรบ้างที่เราต้องใช้นะคะ ขั้นตอนที่ 2 ก็จะต้องมากำหนดความสัมพันธ์ระหว่าง Entity หรือว่าระหว่างตารางนั้นเองก็จะมีการกำหนดชื่อกำหนดความหมายความสัมพันธ์ทิศทางการเชื่อมโยงข้อมูลอัตราส่วนการเกิดความสัมพันธ์นะคะ เช่นนักศึกษา 1 คนสามารถลงทะเบียนเรียนได้หลายวิชานะคะ แต่ในหลาย ๆ วิชานี้ในแต่ละวิชาจะต้องมีผู้สอนคนเดียว นี่คือความสัมพันธ์ที่เกิดขึ้นอาจารย์หนึ่งคนก็สามารถสอนนักศึกษาได้หลายคนเหมือนกัน วิชาด้วยซึ่งอาจจะเป็นยกตัวอย่างการกำหนดอัตราส่วนอีกอย่างหนึ่ง ก็คือเหมือนที่ฉันชอบยกตัวอย่างบ่อย ๆ รหัสบัตรประชาชน มันไม่เกิน 13 หลักอยู่แล้วชื่อคนกำหนดไว้เลยก็ได้ไม่ควรเกิน 20 ตัวอักษร มันคงไม่มีใครตั้งชื่อตามหลักโหราศาสตร์ยาวเกิน 20 ตัว แล้วก็เราก็สามารถแบ่งกลุ่มได้แล้วว่าข้อมูลแต่ละอันมันต้องเชื่อมโยงกันอย่างไร หลังจากนั้นก็ไม่รู้ว่าขนาดของความสัมพันธ์เป็นอย่างไร 1 ต่อ 1 1 ต่อมากกว่า 1 อะไรพวกนี้นะคะ ภาษาอังกฤษก็คือ one to one one to many อะไรพวกเนี้ย ซึ่งก็จะต้องวิเคราะห์ดี ๆ นะคะ เพราะมันจะต้องสามารถอ่านไปข้างหน้าแล้วก็อ่านย้อนกลับมาโดยที่ความหมายไม่เปลี่ยนแผนภาพของเราด้วยนะคะ ขั้นตอนที่ 3กำหนดคีย์หลักกำหนดคีย์รอง ก็คือ Primary Key กับ Secondary Key หลังจากที่เราได้ตารางต่าง ๆ แล้วนะคะ ขั้นตอนต่อไปคือในตารางเราจะต้องเก็บข้อมูล Attribute อะไรบ้าง เช่นนักศึกษาต้องเก็บข้อมูลอะไรบ้าง เกี่ยวกับนักศึกษาถ้าพอจำได้ก็คือเข้ามาเปลี่ยนแล้วกรอกข้อมูลเยอะมากตั้งแต่ใบสมัครเลย อันนั้นคือ Attribute ที่มหาวิทยาลัยต้องการ ชื่ออะไรนามสกุลอะไร บัตรประชาชนเลขอะไร เกิดวันที่เท่าไร บ้านอยู่ไหน พ่อแม่ชื่ออะไรจบจากโรงเรียนอะไร เกรดเฉลี่ยเท่าไร ที่อยู่ปัจจุบันที่ไหนใครเป็นคนส่งเรียนได้เงินเดือนละเท่าไร ใครเป็นผู้ปกครองเบอร์ผู้ปกครองเบอร์อะไรบางคนบางคนไม่ใช่พ่อไม่ใช่พ่อหรือแม่จะเป็นคุณตาคุณยายนะคะ ที่อยู่ปัจจุบันอยู่ไหนแล้วมาเรียนราชภัฏที่ไหนกรอกให้หมด เกรดเฉลี่ย ม. 4 ม. 5 ม. 6 เป็นยังไงคือสิ่งที่มหาวิทลัยต้องการรู้เกี่ยวกับพวกคุณซึ่งก็คือ App ที่บิลนั่นเองนะคะ โดยหัวของแต่ละคอลัมน์นี่ ควรกำหนดเป็นคำสั้น ๆ ง่าย ๆ น่าจะเป็นตัวย่อก็ได้ แต่ต้องสื่อความหมายแล้วก็หลีกเลี่ยงการตั้งชื่อเหมือนกันนะคะ อาจจะเป็นชื่อ ชื่อนี่บางคนไม่เข้าใจ สรุปใส่ชื่อเล่นหรือชื่อจริง เพราะฉะนั้น ต้องกำหนดไปเลยว่าคุณต้องการอะไร ชื่อจริงก็ใส่ชื่อจริง ชื่อเล่นก็ใส่ชื่อเล่น ไม่ใช่คำว่าชื่อเฉย ๆ แล้วเขาจะรู้ไหมว่าเขาต้องใส่อะไรนะคะ ถ้าจะใส่ชื่อเล่นก็ได้กำหนดคีย์ภายนอกหรือว่า foreign Key บัญชีที่เอาไว้เชื่อมโยงแต่ละตารางเข้าด้วยกัน อย่างเช่น นักศึกษากับอาจารย์นี่ฃ จะเชื่อมโยงกันได้ยังไงเชื่อมโยงโดยรรหัสวิชานี้ใครเรียนบ้างใครสอนบ้าง แค่กรอกรหัสเข้าไปก็รู้ได้เลยนี่คือการเชื่อมโยงกันของอาจารย์กับนักศึกษาในวิชานั้น ๆ นะคะ โดยที่มันอาจจะเป็นคีย์หลักของตารางอื่นก็ได้นะคะ เดี๋ยวพอวาดรูปก็จะเข้าใจมากขึ้นอันนี้ตอนพูดนี่จะไม่ค่อยเข้าใจเท่าไร ทำไมมันถึงเชื่อมโยงกันได้นะคะ ข้อที่ 5พิจารณาขอบเขตค่าแต่ละค่าที่อยู่ในแต่ละข้อมูลที่เราต้องการนะคะ คือขอบเขตของข้อมูลนั่นล่ะ เช่น ชนิดของข้อมูลเราจะกำหนดเป็นอะไร วันเกิดควรกำหนดเป็นอะไร เงินเดือนมันควรเป็นจำนวนเต็มไหมคุณอยากได้ทศนิยมหรือเปล่านะคะ อย่างชื่อก็ควรกำหนดเป็นรับข้อมูลเฉพาะตัวอักษรเท่านั้น กรอกเป็นตัวเลขไม่ได้ อันนี้คือสิ่งที่เราต้องกำหนดตั้งแต่ตอนที่ออกแบบฐานข้อมูลเลยนะคะ ความยาวเลขบัตรประชาชนก็ 13 หลักนะคะ เบอร์โทรศัพท์ก็ 10 หลักอะไรแบบนี้ นามสกุลไม่ควรเกิน 35 ตัวอักษร เงินเดือนก็เอาสักไม่เกิน 7 หลัก ประมาณนี้นะคะ รูปแบบข้อมูลบางประเทศมันไม่เหมือนประเทศเรา เขาจะเอาเดือนขึ้นก่อน ตามด้วยเดือน ตามด้วยวันตามด้วยปี คุณก็สามารถกำหนดได้เหมือนกัน เราอยากใช้แบบของเราเพื่อดูง่าย ๆ ก็เป็นวันเดือนปีตามกันอย่างนี้ก็ได้นะคะ กับค่าที่อนุญาตโดยเฉพาะเช่น ทุกวันที่ 1 กับ 16 ของเดือนเป็นวันหยุด คุณก็สามารถตั้งได้ว่าในฐานข้อมูลคือถ้าสมมติลูกค้าต้องการจองคิวทำอะไรก็ตาม ถ้าเป็นวันที่ 1 กับวันที่ 16 จะไม่อนุญาตให้จองแบบนี้ก็ได้นะคะ อันนี้ก็ต้องตั้งแต่เราออกแบบเลยว่าหลักข้อตกลงของเราควรจะเป็นอย่างไรนะคะ อันนี้ก็อธิบายไปแล้วนะ อันหนึ่งก็สำคัญความเป็นหนึ่งเดียว ก็คืออย่างเช่น รหัสนักศึกษาต้องกำหนดเลยว่าห้ามเป็นค่าที่ซ้ำกันไม่ได้ เราอาจจะกรอกเลขผิดไปตัวหนึ่งระบบต้องแจ้งเตือนว่าเอ้ยคุณวิชัยไม่ได้มันซ้ำไปแล้ว กลับการเป็นค่า noun ค่าในที่นี้คือคุณไม่ขอข้อมูลได้ไหม บางระบบจะบอกว่าไม่ได้ถ้าใครเคยกรอกข้อมูลในอินเทอร์เน็ตจะเห็นว่าบางช่องของการกรอกข้อมูลเขาจะมีดอกจันสีแดงอยู่ มันคือเป็นข้อมูลที่เขาต้องการคุณจะเว้นว่างไม่ได้ หรือถ้าต้องการจะเว้นว่างหรือไม่ตอบเขาจะได้อย่างหนึ่งว่าค่า default ก็คือค่าโดยปริยายถ้าไม่ตอบว่าเงินเดือนเท่าไรค่าเริ่มต้นคือ 0 เป็นค่าว่างไม่ได้ ไม่ตอบไม่ได้ เพราะฉะนั้น ก็ใส่ไปเลย 0 บาท วันนี้ก็ได้แต่ส่วนมากทุกคนก็ต้องกรอกอยู่แล้วนะคะ ขั้นตอนสุดท้ายก็มาวิเคราะห์ดูว่าแผนภาพที่เราออกแบบนี่ มันสามารถปรับปรุงแก้ไขหรือว่าขยายตัวในอนาคตได้หรือเปล่า เพราะว่าการออกแบบที่ดีนี่ ต้องคำนึงถึงการเปลี่ยนแปลงด้วย ไม่ใช่ว่าตายตัวไปตลอด เกิดสมมติว่าวันนี้คุณอาจจะเปิดร้านลูกค้าอาจจะไม่ถึงร้อยคนใครจะไปรู้อนาคตคุณอาจจะเป็นธุรกิจที่มันเติบโตได้อีกมีสาขาไปอีกเป็น 100 สาขา มีลูกค้าเป็นหมื่นคน สถานข้อมูลคุณคิดไว้ว่ารหัสลูกค้า 1-100 มันเป็นไปไม่ได้ค่ะ ต้องวิเคราะห์ด้วยว่าเอ้ยรหัสลูกค้านี่ มันจะต้องเป็นการเพิ่มขึ้นอย่างอัตโนมัติไปได้เรื่อย ๆ หรือเปล่า หรือคุณจะเป็นคนกรอกเองนะคะ อันนี้ก็ต้องคิดด้วยไม่ใช่ว่าระบบฉันใช้แค่ 10 คนนี้ล่ะ บางทีในอนาคตอาจจะไม่ใช่อย่างนั้นนะคะ โดยการสร้างแบบจำลองข้อมูลการวาดแผนภาพนี่ มันจะต้องวิเคราะห์ถึงข้อมูลที่จำเป็นต้องเก็บในระบบนะคะ อาจจะเปลี่ยนกับข้อมูลที่จำเป็นต้องเรียกใช้โครงสร้างที่มี รวมถึงถ้ามันมีการเพิ่มลบแก้ไขข้อมูลจะต้องทำที่ตารางไหน ถ้าสมมติว่าข้อมูลในตารางนั้นถูกลบไป มันจะไปกระทบกับข้อมูลในตารางอื่นหรือเปล่านะคะ เช่น วันดีคืนดีอาจารย์ลบชื่อสาขาที่คุณเรียนออก มันจะกระทบกับพวกคุณไหม เป็นนักศึกษาไม่มีสังกัด ทำได้ไหม ไม่ได้ ก็ต้องดูด้วย เขาเรียกว่า "กฎการคงสภาพของข้อมูล" นึกอยากลบไม่ได้เหมือนอยากเปลี่ยนเลขรหัสบัตรประชาชนให้เด็ก 1 คนได้ไหม เลขไม่สวยอยากได้เลข 9 ลงท้ายเลยนี่ ชื่อเปลี่ยนได้ไหม เปลี่ยนได้แต่บางอย่างมันเปลี่ยนไม่ได้นะคะ เช็กรหัสนักศึกษาเลขบัตรประชาชนอย่างนี้ เราต้องวิเคราะห์ด้วยไม่ใช่ว่าออกแบบไปแล้ว ใครอยากเปลี่ยนเลขประชาชนตอนไหนก็ได้ อันนี้เป็นต้น โดยการเขียนแผนภาพ ER นี่ยมันก็จะอธิบายภาพรวมทั้งหมดที่บอกต้นตอนต้น ก็คือมันต้องเข้าใจง่ายนะคะ อาจจะไม่ต้องรู้ว่าข้อมูลที่เรากำลังจะเก็บ เก็บที่ไหนเก็บอย่าไม่จำเป็นออกมาให้ดูก่อนว่าในฐานข้อมูลเราต้องมีอะไรบ้างนะคะ ในแต่ละตารางมีความสัมพันธ์กันอย่างไร ข้อมูลมันจะซ้ำซ้อนกันไหมนะคะ แล้วก็เขียนให้ออกมาดูง่ายที่สุดอย่างที่ฉันบอกตอนแรกแผนภาพการวาดรูปนี่ มันมีหลายเขาเรียกอะไรล่ะ หลายมาตรฐานแล้วกัน หนังสือแต่ละเล่มก็เลือกมาใช้ไม่เหมือนกันนะคะ มีทั้งแบบ Chain Model แบบ Output ก็คือแบบให้ความสำคัญนี่ จะแค่คล้ายกับรอยเท้าของนกรอยเท้าอีกา เขาก็เรียกเป็นรูปแบบรูปแบบหนึง่นะคะ แต่ที่เราจะใช้กันบ่อยนะคะ จะเป็นแบบของChaiช่องสีเหลืองเราจะเลือกใช้ตัวแบบนี้เพราะว่ามันเขียนง่ายมันอ่านง่ายที่สุดนะคะ แต่ถ้าคุณไปจนถึงเรื่องอื่นก็ใช้แบบอื่นผิดไหมไม่ผิด อยู่ที่เขาจะเลือกใช้แบบไหนแค่นั้นเองนะคะ สัญลักษณ์ที่ใช้ต้องในการวาดรูปนะคะ สัญลักษณ์สี่เหลี่ยมผืนผ้ามันจะหมายถึงชื่อตารางนะคะ แบบสี่เหลี่ยมข้าวหลามตัดมันจะบอกถึงความสัมพันธ์ของตารางแต่ละตารางนะคะ แล้วคอลัมน์ในแต่ละตารางล่ะนะคะ เราก็จะใส่เป็นรูปวงรี ถ้าคอลัมน์นั้น ๆ เป็นคีย์หลักที่ห้ามซ้ำกัน ในรูปวงรีจะต้องขีดเส้นใต้ด้วย ส่วนด้านข้างอันนี้จะไม่ค่อยพบเห็นบ่อย แต่เจอในข้อสอบแน่ ๆ นะคะ อันแรกเป็นสี่เหลี่ยมผืนผ้าซ้อนกัน 2 อัน มันหมายถึงตารางนั้นน่ะ เป็นตารางอ่อนแอ หรือว่า weak entity จะต้องพึ่งพาค่าจากตารางอื่นเพื่อให้ตารางของมันมีความหมายนะคะ สี่เหลี่ยมข้าวหลามตัดซ้อนกัน 2 อันก็เช่นเดียวกันค่ะ เขาเรียกว่าความสัมพันธ์แบบอ่อนแอมันจะต้องไปดึงค่ามีความสำคัญอื่น ๆ มาทำให้ตัวมันมีความหมายขึ้นมานะคะ วงรีซ้อนกัน 2 วง ก็คือในตารางนี้นี่ในคอลัมน์นี้หรือในข้อมูลแล้วนะนี่ มันอาจจะมีข้อมูลได้มากกว่า 1 ข้อมูล เช่น คุณอาจจะมีเบอร์โทรศัพท์ 3 เบอร์ หรือว่ามีชื่อเล่น พ่อเรียกชื่อหนึ่งแม่ฉันเรียกชื่อหนึ่ง บอกได้มีสัตว์เลี้ยงมากกว่า 2 ตัว แต่ละตัวชื่อว่าอะไรบ้าง อย่างนี้ก็ได้นะคะ กับวงรีที่เป็นเส้นประมันหมายถึงว่าค่าข้อมูลในนี้นี่จะได้มาจากการคำนวณของข้อมูลอื่น ๆ ที่พบบ่อยที่สุด ก็คืออายุ อายุจะได้มาจากการคำนวณวันเกิด ใช่ไหมคะ เพราะฉะนั้น ไอ้เส้นวงรีประ ๆ พวกนี้ ก็คือจะบอกว่าอายุของเราได้มาจากการกรอกวันเดือนปีเกิดนั่นเอง ให้มันคำนวณให้อัตโนมัติ ผู้ใช้งานไม่ต้องบอกเองว่าอายุเท่าไรให้ระบบคำนวณให้เลย อายุ 18 ปี 11 เดือน 10 วัน อะไรก็ว่าไปนะคะ อันนี้คือสัญลักษณ์ที่เราใช้บ่อย รูปเดียวกันกับเมื่อกี้นี้นะคะ อันนี้อธิบายโดยละเอียด Entity หรือว่าชื่อของตารางของข้อมูล ก็จะเป็นส่วนในการเก็บข้อมูลรายการแต่ละรายการที่ระบบจัดการฐานข้อมูลหรือเรากำลังจะสร้างระบบขึ้นมา เช่น สัญลักษณ์ Entity จะเป็นสี่เหลี่ยมผืนผ้ามีชื่อตารางอยู่ชื่อที่อยู่ข้างในนะคะ เราจะต้องวาดแบบนี้ทุกครั้งนะคะ โดยตัวอย่างเช่น ตารางบุคคลบุคคลคืออะไร บ้างเป็นตารางพนักงาน ตารางตารางบุคลากรตารางทักษาพาลูกค้าอาจจะเป็นข้อมูลเกี่ยวกับสถานที่ก็จะเป็นตารางเก็บจังหวัด ข้อมูลจังหวัด ข้อมูลอำเภอตารางที่เกี่ยวกับวัตถุจะเป็นรถยนต์ อาคารเครื่องจักรสินค้าก็ได้เนื้อจะไปเหตุการณ์ต่าง ๆ ที่เกิดขึ้น เช่น การลงทะเบียนการรักษา การซื้อการขายการส่งสินค้านะคะ สัญลักษณ์อย่างที่บอกเป็นสี่เหลี่ยมผืนผ้ามีชื่อ Entity และชื่อตารางอยู่ข้างในนะคะ ประเภทของ Entity ก็มีอยู่ 2 ประเภทนะคะ แต่ส่วนใหญ่ที่เราใช้กันนี่ จะเป็น Entity ทั่วไป เป็น Regular คือเป็นตารางที่ข้อมูลในนั้นสามารถแยกข้อมูลในแต่ละแถวออกได้อีกหนึ่งคืออ่อนแอมันจำเป็นจะต้องใช้ข้อมูลมาช่วยทำให้ข้อมูลในแถวนั้นมีคุณค่า หรือมีความหมายขึ้นมาอันนี้เป็นตัวอย่าง Entity ทั่วไปหรือตารางทั่วไปนะคะ จะสังเกตได้ว่าข้างบนนี่อาจารย์เขียนไว้ว่า Entity Student ก็เป็นตารางตารางหนึ่งที่มีข้อมูลเกี่ยวกับนักเรียนอยู่ แต่สิ่งที่เราจะเอามาวาดแผนภาพ มันไม่ใช่กรอบสี่เหลี่ยมนี้นะคะ เราจะเอามาแต่ชื่อ เช่น ตาราง Student ก็คือ Entity Students เก็บข้อมูลอะไรบ้าง คือตัวนี้แต่ที่เรามองว่าโอเคค่ะ เอาสีเหลี่ยมข้างล่างนะ ว่าแค่นั้นเองก็บอกได้ว่าชื่อตารางอะไรนะคะ อันนี้เป็นตัวอย่างของตารางอ่อนแอหรือว่า Entity อ่อนแอนะคะ อันนี้ก็คือข้อมูลเกี่ยวกับการลงเวลาทำงานเวลาออกจากงาน เวลาถ้าใครไปทำงานก็ต้องมาทำงานกี่โมงกลับบ้านกี่โมง ตารางนี้นะคะ Time stamp ก็คือการลงเวลาตารางนี้ไม่มีความหมายเลยถ้าขาดข้อมูลที่เข้าทำงานแล้วก็เวลากลับบ้าน เพราะฉะนั้น 2 ตัวนี้จะต้องเชื่อมโยงกันอยู่แล้ว ถ้าขาดอันใดอันหนึ่งไปตารางนี้จะไม่มีความหมายเลย ก็มีเวลามีแต่เวลามาทำงานแล้วกลับบ้านตอนไหน ไม่รู้ อย่างนี้ไม่ได้นะคะ ก็คือมาทำงานก็ต้องมีเวลากลับบ้าน หรือมีแต่เวลากลับบ้าน ไม่มีเวลาทำงาน มันก็ไม่ได้ อย่างนั้นจะรู้ได้อย่างไรว่าคุณมาทำงานกี่โมงนะคะ อันนี้เป็นตัวอย่างของตารางที่ถ้าขาดข้อมูลใดข้อมูลหนึ่งไป จะทำให้ข้อมูลในตารางนั้นนี่ ไม่สมบูรณ์มีปัญหานั่นเองนะคะ อย่างเช่น อันนี้เป็นตัวอย่างถ้าเป็นตารางทั่วไป ตารางนักเรียนกับตารางรายวิชานะคะ มีนักศึกษา 2 คน มี 2 วิชา อันนี้เป็นตารางทั่วไป แต่ตารางการลงทะเบียนสมมติว่ามีแต่รหัสนักศึกษา มีปีการศึกษาแต่ไม่รู้เลยว่าเขาลงทะเบียนวิชาอะไร ได้ไหม ไม่ได้ ไม่อย่างนั้นจะรู้ได้อย่างไรว่าเทอมนี้มีใครเรียนอะไรบ้าง นะคะ รู้รายวิชารู้ปีการศึกษาไม่รู้เลยว่าใครลงทะเบียนเรียน ได้ไหมก็ไม่ได้อีก เพราะฉะนั้น ในตารางการลงทะเบียนถ้าขาดข้อมูลใดข้อมูลหนึ่งไป ตารางนั้นจะเป็นตารางที่ไม่สมบูรณ์ โดยข้อมูลในตารางนี้ก็ไปดึงข้อมูลมาจากคนอื่นทั้งนั้น อันนี้คือตารางอ่อนแอ ก็คือไม่มีความหมายตัวเองจะต้องมีข้อมูลจากตารางอื่นมาช่วยนั่นเองนะคะ ต่อมา Attribute ก็คือยังไงก็คือคอลัมน์ในแต่ละตารางอ่ะค่ะ ว่าในตารางนั้นมีคอลัมน์อะไรบ้าง ของคอลัมน์เ พราะฉะนั้น แอตทริบิวต์นะคะ สัญลักษณ์ของ Attribute จะเป็นวงรีนะคะ อย่างข้อมูลพนักงานควรจะมีอะไรบ้าง ก็จะมีรหัสพนักงานชื่อนามสกุลมีเพศมีเงินเดือน สัญลักษณ์จะเป็นแบบนี้ ข้อมูลพนักงานอันนี้ก็คือ Entity ใช่ไหมคะ ตารางหัวตารางเป็นคอลัมน์ คอลัมน์ซึ่ง Attribute นี่ มันก็ยังแบ่งไปอีกเป็น 6 ประเภทเหมือนกันนะคะ แต่ก็ใช้วงรีเหมือนกันนี่ล่ะ แต่อาจจะมีสิ่งที่เปลี่ยนแปลงนิดหนึงนะคะ เประเภทที่ 1 คือ assistance ที่ไม่สามารถแบ่งย่อยได้อีกแล้วซิมเทพคุณก็ตอบได้แค่เฟซเดียวคุณเป็นเพศอะไรคุณก็ตอบตัวนั้นเงินเดือนตอบด้วยค่าเดียวคุณไม่จำเป็นต้องบอกว่าเงินเดือนเดือนที่ 1 เดือนที่ 2 เดือนเดือนที่ 3 ไม่ใช่แล้วตอบข้าเดียว เงินเดือนปัจจุบันราคาเท่าไร เลขบัตรประชาชนตอบได้ค่าเดียว รหัสนักศึกษาตอบได้ค่าเดียว อันนี้คือ Attribute เป็นข้อมูลโดยทั่วไปต่างจากที่ 2 คือ Attribute ที่สามารถแบ่งย่อยได้ เช่น ชื่อนามสกุลเราแยกกันกรอกได้ไหม ได้แบ่งเป็นชื่อคอลัมน์ 1 นามสกุลคอลัมน์ 1 คอลัมน์เป็น Attribute นะคะ ก็เป็นเอกลักษณ์จะต้องไม่ซ้ำกันในตารางนั้นต้องฆ่านีจะต้องไม่ซ้ำกันโดยลักษณะเฉพาะของนะคะ มันจะมีการขีดเส้นใต้เพื่อแสดงว่ามันเป็นค่าที่ซ้ำกันไม่ได้ เหมือนเวลาเราเรียนวิชาใด ๆ ก็ตาม ถ้าอันไหนมีการขีดเส้นใต้มันเป็นการเน้นใช่ไหมคะ ในวิชาอื่น ในการวาดรูปก็เหมือนกันว่ารูปในฐานข้อมูลก็เหมือนกัน แสดงว่าถ้านั้นน่ะ เป็นจุดเน้นที่เราจะต้องให้ความสำคัญกับมันนะคะ กับข้อมูลนะคะ ที่มีเพียงค่าเดียวเท่านั้น เช่น คุณจะระบุเพศคุณจะเป็นเพศไหน คุณระบุมาจะไม่มีชายหรือหญิง วันนี้คุณเป็นเพศอะไรก็ลงมานะคะ หรือค่าที่มีเท่าไรค่ะ อย่างเช่น เบอร์บ้านรหัสพื้นที่ไม่เหมือนกัน กรุงเทพฯ ก็เป็น 02 สกลฯ ก็เป็น 042 ขอนแก่น 043 อุดรก็ 042ใช่ไหมคะ มันก็ต้องระบุด้วยอย่างนี้ถ้าค่าไหนมีได้หลายค่าอย่าลืมเป็นวงรี 2 เส้นกับค่าของข้อมูลที่ได้จากการคำนวณ เราจะใช้วงรีที่เป็นเส้นประ เช่น อายุที่ได้มาจากวันเกิดนะคะ หรือว่าวันเข้าทำงานจนถึงปัจจุบัน คุณทำงานมาแล้วกี่ปี อย่างนี้ก็ได้นะคะ ค่าที่ได้มาจากการคำนวณนั่นล่ะ อันนี้เป็นตัวอย่าง Simple Attribute แยกให้ออกนะคะ ว่าอันไหนเป็น Attribute คือวงรีตัวนี้วันนี้แล้วในสี่เหลี่ยมคืออะไร สี่เหลี่ยม EDntity ก็คือชื่อตารางนั่นเองนะคะ ตัวอย่างของแอตทริบิวต์ที่แยกย่อยไปได้เช่นชื่อนามสกุลอาจารย์ก็แยกเป็น First name Last name คือชื่อกับนามสกุลก็ได้ ที่อยู่บางคนอาจจะกรอกบรรทัดเดียวเลยก็ได้ หรือคุณอยากจะออกแบบให้มันเลขที่บรรทัด 1 ถนนบรรทัดหนึ่ง ตำบลบรรทัดหนึ่ง อำเภอจังหวัดแยกกันหมดเลยก็ได้ ถามว่าใช้สัญลักษณ์แตกต่างไปไหม ไม่นะคะ เหมือนกันจะถามว่าเราลบอันนี้ออกได้ไหม ก็ได้นะคะ เมื่อวานมันจะได้ไม่เปลืองเนื้อที่อย่างนี้ก็ได้แล้วคุณก็บอกไปเลยชื่อนั้นเองนามสกุลอย่างนี้ก็ได้ คีย์ Attribute ก็คือค่าที่ห้ามซ้ำกัน ก็คือนักเรียนอะไรที่ห้ามซ้ำกัน ก็คือรหัสนักเรียน อันนี้มันย่อมาจาก student ID นะคะ ชื่อเล่น ID ทำไมถึงรู้ student ID เพราะคำย่อแบบนี้หรือชื่อทุกอย่างนี้จะต้องจดไว้ในพจนานุกรมข้อมูลด้วย ถามว่านี่มันง่ายเข้าใจง่ายคำว่ามันมาจากอะไรคนที่ไม่มีความรู้พื้นฐานเลยเขาจะรู้ไหมว่า SID คืออะไร อันนี้เดี๋ยวอีกเรื่องหนึ่งนะคะ เรื่องนึงเอาทุกอย่างมารวมกันใน 1 ตารางสามารถมี Attribute หรือมีรูปแบบข้อมูลได้ทุกรูปแบบก็ได้นะคะ มีทั้งที่มีทั้ง ๆ ที่สามารถแบ่งย่อยได้มีทั้ง Attribute ที่ได้มาจากการคำนวณคืออายุจะได้ค่ามาจากวันเดือนปีเกิดเบอร์โทรศัพท์ Multi Value ก็คือมีได้หลายค่าก็ใส่วงรีซ้อนกันอันนี้คือตัวอย่างนะคะ ตัวอย่างของ Attribute แต่เดี๋ยวเราอาจจะไม่เข้าใจเดี๋ยววาดรูปก็น่าจะเข้าใจได้มากขึ้นนะคะ ต่อมาความสัมพันธ์นะคะ มันเป็นความสำคัญของตารางตั้งแต่ 2 ตารางขึ้นไปนะคะ โดยความสัมพันธ์นี่ อาจจะมีข้อมูลที่ใช้ร่วมกัน สัญลักษณ์คือสี่เหลี่ยมข้าวหลามตัดนะคะ เช่น ตารางพนักงาน อันนี้พนักงานนะคะ พนักงาน work in แปลว่า ทำงานอยู่ในแผนกอะไร คือ work department ความสัมพันธ์ตัวนี้นี่ จะต้องสามารถอ่านไปข้างหน้าอ่านกับย้อนหลังก็ได้ พนักงานทำงานอยู่ในหรือในแผนกนั้นมีใครทำงานอยู่บ้างต้องเข้าใจได้แบบนี้นะคะ หรือการสั่งสินค้าอยู่ในใบสั่งสินค้าตัวไหนนะคะ สินค้าชนิดนั้น ๆอยู่ในใบสั่งซื้ออะไร ก็ต้องดูได้สินค้าอย่างเช่น power bank อาจจะอยู่ได้ในหลายใบสั่งซื้อสินค้าก็ได้ เพราะสินค้าเรามีหลายตัวนะคะ ไม่ใช่ว่าขายให้แค่คนเดียวขายให้หลายคนนะคะ ความสัมพันธ์แบบ 1 ต่อ 1 ความสัมพันธ์ที่สมาชิกคนเดียวมีความสัมพันธ์ไปอีกสมาชิกหนึ่งของอีกตารางหนึ่งเท่านั้นนะคะ เช่น เจ้าของรถเป็นเจ้าของรถยนต์ได้ 1 คันนะคะ นี่สมมติสมมตินะคะ คน 1 คนเป็นเจ้าของรถยนต์ได้ 1 คัน ใครเคยเห็นทะเบียนรถยนต์ ทะเบียนรถยนต์จะต้องมีเจ้าของคนเดียว ตัวอย่าง แต่ถ้าเปลี่ยนเป็นความสัมพันธ์แบบ 1 กับมากกว่า 1 ล่ะ เช่น คน 1 คนมีรถยนต์ได้หลายคันใช่ไหม อยู่บ้านบางคนอาจจะมีรถยนต์มากกว่า 1 คัน จะมีรถเก๋งหรือรถกระบะ มีรถ 6 ล้อ พ่อเป็นเจ้าของรถหมดเลย ก็ได้ แต่ในบรรดารถทุกคัน จะต้องมีเจ้าของคนเดียว อันนี้คือสิ่งที่เราต้องคิดด้วยนะคะ คนคนหนึ่งมีรถได้หลายคันก็จริงแต่รถคันนั้น ๆ จะต้องมีเจ้าของได้คนเดียว กับความสัมพันธ์ที่มากกว่า 1 เช่น ลูกค้าหลายคน ลูกค้า 1 คน สมมติเราไปซื้อของเราจะต้องซื้อกับแคชเชียร์คนนี้ เวลาจ่ายเงินแต่แคชเชียร์คนนี้ก็สามารถรับลูกค้าได้หลายคนเหมือนกัน ลูกค้าหลายคนก็ไม่จ่ายกับแคชเชียร์คนไหนก็ได้ ไม่จำเป็นต้องจ่ายเฉพาะคนนี้เท่านั้น เวลาเราไปเดินห้างซื้อของในซุปเปอร์วันหนึ่งเขามีลูกค้าหลายคนไหม มีหลายคนนะคะ คนคิดเงินก็มีหลายคนไหม มีหลายคนเหมือนกัน เพราะฉะนั้น วันนี้เราจะเจอลูกพนักงานคนหนึ่งพรุ่งนี้เจอคนใหม่ก็ได้ เขาก็จะไม่เจอเราคนเดียวเขาก็เจอลูกค้าหลายคนอันนี้เป็นความสัมพันธ์ที่มากกว่า 1 ทั้ง 2 ฝั่ง ภาษาอังกฤษเรียกว่า many to many นะคะ อันนี้เป็นตัวอย่าง ความสัมพันธ์แบบ 1 ต่อ 1 จะเห็นได้ว่าเส้นเชื่อมความสัมพันธ์จะเป็นเส้นตรงมีตัวเลขกำกับ มีตัวเลขกำกับด้วย เพราะฉะนั้น เวลาเราลากเส้นเชื่อมความสัมพันธ์ใด ๆ ก็ตามจะต้องมีตัวเลขหรือตัวอักษรกำกับทุกครั้งนะคะ อันนี้เป็นความสัมพันธ์แบบ 1 ต่อ 1 ตัวแทนขายสินค้าดูแลลูกค้าได้ 1 คน จริงไหม อาจจะไม่จริงเสมอไป ตัวแทน 1 คนอาจจะดูแลลูกค้าได้หลายคนก็ได้ ถ้าเป็นลูกค้าหลายคนแล้วจะแทนด้วยตัว M หรือตัว N ก็ได้นะคะ แต่ต้องใส่ ถามว่าถูกต้องหรือยัง ตัวแทนแค่ 1 คนดูแลลูกค้าได้หลายคน ลูกค้าหลายคนก็ได้รับการดูแลจากตัวแทน 1 คน ก็ถูกแบบนี้ เป็นต้น มีการใส่คีย์หลักมีการขีดเส้นอันนี้เป็นความสัมพันธ์ ก็คือเขาดูแลกันต้องใส่ต้องระบุแต่ถ้าเป็นความสัมพันธ์ที่มากกว่า 1 ทั้ง 2 ด้าน เราจะต้องใส่เป็น M กับ N เท่านั้น เราจะใส่เป็น M กับ N อย่างนี้ไม่ได้ ไม่ได้นะคะ ไม่ได้ N กับ N แบบนี้ได้ไหม ก็ไม่ได้เพื่อให้สื่อความหมายให้ถูกว่ามันเป็นความสัมพันธ์ที่เชื่อมกันระหว่างเส้น 2 เส้นนี้นะคะ อันนี้เป็นตัวอย่าง เดี๋ยวพอวาดง่าย ๆ ก่อนน่าจะเข้าใจง่ายขึ้น กับอันนี้ออกสอบง่ายมากอาจารย์อาจจะมีรูปภาพให้พวกคุณเปลี่ยนเป็นตารางง่ายมากเลย ก็คือข้อมูลที่อยู่ในกรอบสี่เหลี่ยมมันคือชื่อตารางใช่ไหมคะ คุณก็เอาสี่เหลี่ยมออกแล้วก็เขียนชื่อตารางอยู่ในวงรีแอตทริบิวต์ก็เป็นคอลัมน์ของตารางเสร็จแล้ว อยู่ที่วาดรูปทำอย่างไร จากรูปจากตารางข้างล่างชื่อตารางใช่ไหมคะ ชื่อตารางก็มาใส่กรอบสี่เหลี่ยมคอลัมน์แต่ละคอลัมน์ก็มาใส่ในวงรีโยงเส้นเสร็จ แค่นั้นเองอันนี้ออกสอบด้วยนะ นะคะ อาจจะไม่ง่ายอย่างนี้ แต่หลักการมีประมาณนี้ล่ะนะคะ กับถ้าสมมติว่ามันมีข้อมูลที่การสามารถแบ่งแยกออกได้นะคะ จะเห็นได้ว่าตอนก่อนหน้านี้ ที่อาจารย์ตัดตรงนี้ออกเวลาเราเอามาเขียนในรูปแบบของตาราง อันนี้เราจะไม่ใส่เราจะดูเฉพาะแอตทริบิวต์ที่อยู่ขอบนอกสุดเท่านั้นนะคะ เราจะเอาเฉพาะข้างนอกสุดมาเขียนเป็นตาราง อันนี้ดูดีนะข้อกำหนดแต่ละอัน กับค่าตารางไหนมีข้อมูลที่สามารถมีค่าได้หลายค่า เห็นไหม วงรีซ้อนกัน 2 วงเราจะเอาข้อมูลนั้นแยกมาเป็นอีกหนึ่งตาราง แต่คีย์หลักจะเอามาจากตารางเดิม เพื่อให้ 2 ตารางนี้มันเชื่อมโยงกันโดยคีย์หลักเชื่อมกัน อันนี้เป็นข้อสังเกตก่อนนะ อันนี้ยังเป็นกฎที่ยังต้องใช้อยู่นะคะ อันไหนที่เป็นค่าที่เป็น Weak Entity หรือว่าความสัมพันธ์แบบอ่อนแอหรือตารางอ่อนแอเราต้องดูด้วยว่ามันมีความสัมพันธ์กับตารางไหนเราจะเอาคีย์หลักของตารางที่มันมีความสัมพันธ์ด้วยมาใส่ด้วยเหมือนกัน อย่างเช่น เดี๋ยวลบอันนี้ก่อนทำไมถึงบอกว่าตารางด้านขวามือ เป็นตารางอ่อนแอ เพราะในตารางนี้ มีเวลาทำงานมีเวลากลับบ้าน มีวันที่ แต่ถามว่าเป็นของใคร ใครมาทำงาน 07.00 น. โมงกลับ 16.00 น. ใครมาทำงาน 8:00 น กับ 20:00 นไม่รู้เพราะฉะนั้น ต้องไปดูดิว่าพนักงานรหัสคนไหนพี่เขามาสแกนนิ้วทำงาน หรือตอกบัตรทำงานจะถามว่าในตารางนี้ทำไมลงไม่ให้กรอกรหัสพนักงานด้วยล่ะ ก็เป็นการซ้ำซ้อนกันไงคะ ในเมื่อเรามีรหัสพนักงานอยู่แล้ว เราก็เรียกใช้ได้เลย เราไม่จำเป็นต้องมาเพิ่มตรงนี้ก็ได้ อันนี้คือการออกแบบที่ดี ถ้าไหนซ้ำซ้อนกันเราจะไม่นำมาใช้ เราจะดึงข้อมูลมาใช้เลย อันนี้คือข้อดีของการออกแบบฐานข้อมูลที่ดี คือตัวอย่างอย่างหนึ่งกลับการเปลี่ยนให้เป็นตารางค่าเมื่อกี้นี้ในรูปนี้อาจารย์ไม่ได้ใส่ความสัมพันธ์ใช่ไหมคะ ยังไม่มีเส้นเชื่อมโยงไปทางอื่นใช่ไหม แต่ถ้ามันมีเส้นเชื่อมโยงไปตารางอื่นล่ะนะคะ อันนี้เป็นความสัมพันธ์แบบ 1 ต่อ 1 เราจะต้องเอาคีย์หลักเส้น ไอ้ที่ขีดเส้นใต้นี่ ของตารางด้านข้างที่เรามีความสัมพันธ์ด้วยมาใส่ในตารางเรา แต่ความสัมพันธ์แบบ 1 ต่อ 1 จะมีข้อได้เปรียบอย่างหนึ่ง คือในตารางแรกน่าจะเอารหัสลูกค้ามาเป็นคีย์เพื่อเชื่อมต่อกันก็ได้หรืออาจจะเอารหัสตัวแทนมาเป็นตัวเชื่อมต่อกันก็ได้ อันนี้เป็นความพิเศษเฉพาะตารางแบบ 1 ต่อ 1 แต่จะต้องเอาคีย์หลักของตารางที่เรามีความสัมพันธ์ด้วยอาจจะเป็นเลือกมาทางไหนก็ได้ แต่ต้องมีต้องมีมันสามารถยืดหยุ่นได้เฉพาะความสัมพันธ์แบบ 1 ต่อ 1 นะคะ แต่ถ้าเป็นความสัมพันธ์แบบ 1 ต่อกลุ่ม จะต้องเอาคีย์หลักของฝั่งที่มีความสัมพันธ์เป็น1 มาใส่ในตารางที่มีความสัมพันธ์แบบกลุ่มเท่านั้น อันนี้เป็นลักษณะเฉพาะนะคะ ลักษณะเฉพาะของความสัมพันธ์แบบ 1 ต่อกลุ่ม แต่ถ้าเป็นความสัมพันธ์แบบกลุ่มต่อกลุ่มล่ะ เห็นไหมคะ เป็น M กับ N เราจะไม่เอาตารางไม่เอาค่าคีย์หลักมาใส่ในตาราง แต่เราจะสร้างตารางใหม่โดยใช้คีย์หลักของทั้งสองตารางที่มีความสัมพันธ์กันมาสร้างเป็นตารางใหม่เลย จำลักษณะ 3 อย่างนี้ให้ดีนะคะ 1 ต่อ 1 1 กับกลุ่มกับกลุ่มต่อกลุ่ม การเอามาสร้างเป็นตารางลักษณะเฉพาะมี 3 แบบ แบบแรก คือ เอาคีย์หลักฝั่งไหนก็ได้ แบบที่ 2 คือเอาเฉพาะที่หลักของฝั่งที่เป็นความสัมพันธ์ที่เป็น 1 เท่านั้น แบบที่ 3 คือเอาคีย์หลักของทั้ง 2 ความสัมพันธ์มาสร้างตารางใหม่เลยนะคะ อันนี้คือลักษณะเฉพาะของการเปลี่ยนรูปภาพให้เป็นตาราง เดี๋ยวจะมีให้ทำด้วย บางคนจะจำไม่ได้ การออกแบบนะคะ ก็อันนี้พูดไปแล้วเราจะมาลองวาดรูปกัน ให้... น่าจะเคยไปร้านหนังสือกันหรืออาจจะเคยเห็นหนังสืออยู่แล้วนะ นะคะ ในหนังสือ 1 เล่ม จะมีอะไรบ้าง แน่นอนข้อมูลหนังสือแต่ละเล่มก็จะมีรหัสหนังสือมีชื่อหนังสือ มีรหัสผู้แต่ง รหัสสำนักพิมพ์ อันนี้คือข้อมูลที่อาจารย์ให้ก่อนนะ เดี๋ยวเรามาดูกัน ในข้อมูลของคนแต่งหนังสือมีอะไรบ้าง ก็จะมีรหัสของผู้แต่งคนนั้น มีชื่อผู้แต่งหนังสือในข้อมูลสำนักพิมพ์ ก็จะมีรหัสสำนักพิมพ์ มีชื่อสำนักพิมพ์ มีที่อยู่ มีเบอร์โทรศัพท์นะคะ ขั้นตอนแรกศึกษาก่อนในระบบหนังสือร้านหนังสือ ก็คือข้อมูลที่อาจารย์ให้เมื่อกี้มันจะมีข้อมูลหนังสือนะคะ มีข้อมูลคนแต่ง มีข้อมูลสำนักพิมพ์ มีกระดาษใช่ไหมพลอย โอเค ขั้นตอนต่อมากำหนดเอนทิตี้เดี๋ยวจะให้ทำเอง ก็คือในข้อมูลที่อาจารย์ให้มันจะต้องมีกี่ Entity หรือกี่ตารางทำสิ ใช้สัญลักษณ์ให้ถูกด้วยนะคะ เดี๋ยวอจะเดินดูทำเลย นี่จากข้อมูลนี้ ข้อมูลตัวหนังสือสีดำ ๆ เข้เนี่ยเราควรมีกี่ตารางวาดรูปเนี่ยรูปแบบนี้แบบนี้วาดรูปนี้ให้วาดรูปเอาข้อมูลมาวาดเป็นรูปแบบนี้ แต่อย่างแรกเลยดูก่อนว่าข้อมูลที่อาจารย์ให้นี่ มันควรจะมีกี่ตารางดูสิว่ามันต้องมีกี่ตารางสัญลักษณ์ของตาราง Entity ก็คือสี่เหลี่ยมผืนผ้าว่าสีเหลี่ยมผืนผ้มันควรจะมีสี่เหลี่ยมผืนผ้ากี่อันแล้วในสี่เหลี่ยมผืนผ้าจะต้องเขียนว่าอะไรลองทำดู (อาจารย์เกวลี) อันนี้ยังไม่ยาก สรุปแล้วมีกี่ตาราง อันนี้ง่ายมากดูจากที่อาจารย์เน้นตัวหนังสือสีดำเข้มไว้ เราจะได้ 3 ตารางในกรอบสี่เหลี่ยม มีตารางผู้แต่ง มีตารางหนังสือ มีตารางสำนักพิมพ์ ก็คือ 3 Entity นั่นเอง จากโจทย์ที่อาจารย์กำหนดพี่ตอนเย็นให้อันนี้ให้ทำเองหลังจากเราได้ตาราง entity แล้วนะคะ มันจะต้องกำหนดความสัมพันธ์ ความสัมพันธ์ ก็คือเส้นที่โยงกันแต่ละ 2-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 ตาราง ก็จะเป็นตารางลูกค้า ตารางพนักงานขาย ตารางรายละเอียดของสินค้า ตารางประเภทสินค้า ตารางใบเสร็จ อาจารย์กำหนดให้แล้วว่าควรจะมีข้อมูลอะไรบ้าง ให้เราไปวาดรูปมา ทำเองใช้หลักการเดียวกันกับเหมือนที่อาจารย์ยกตัวอย่างไปเมื่อกี้นี้นะคะ ลองวาดดูสิว่ารูปที่ได้จะเป็นอย่างไรนะ อันนี้เป็นการบ้านสำหรับวันนี้ไม่มีอะไรแค่นี้ก็ปวดหัวมากแล้ว ถ้าใครจะนั่งวาดรูปต่อก็ได้ แต่ต้องส่งนะคะ ต้องส่งวันนี้ก็ประมาณนี้ วันนี้มาครบทุกคนเดี๋ยวให้ไปปวดหัววาดรูปต่อวาดรูปไม่เคยปวดหัวเท่านี้มาก่อนเลยวันนี้ลองดูที่ ๆ มีกี่ตารางวาตารางไปวาดมาสิว่าในแต่ละตารางมันควรมีข้อมูลอะไรบ้าง จากที่เมื่อกี้ไปกดให้ลองกำหนดเองสิมันต้องมีอะไรอ่านแล้วทำส่งอาจารย์ใส่กระดาษวาดรูปนี้ล่ะ วาดมาความสำคัญให้ครบด้วยอันไหนเป็นค่าที่ห้ามซ้ำกันอย่าลืมขีดเส้นให้อาจารย์ด้วยวันนี้ก็ประมาณนี้ค่ะ ขอบคุณมากนะคะ ขอบคุณล่ามด้วย ขอบคุณถอดความด้วยนะคะ โอเคค่ะ เจอกันสัปดาห์หน้านะคะ