(อาจารย์เกวลี) โอเค สวัสดีค่ะ โอเคค่ะ วันนี้จะเป็นบทที่ 4 นะคะ จะเป็นเกี่ยวกับแบบจำลองข้อมูล หรือเวลาเราเรียกสั้น ๆ ก็คือการวาดรูป ER นะคะ ตัว E แล้วก็ตัว R ภาษาอังกฤษโดยแผนภาพนะคะ ER นะคะ หรือว่า ER Model นี่มันจะเป็นล่ามเขาได้ยินเราไหมพลอยทำไม ล่ามดูนิ่ง ๆ ล่ามได้ยินไหมคะล่ามได้ยินไหมคะ ถ้าได้ยินโอเคด้วยค่ะ โอเค โอเค ก็การวาด ER นะคะ หรือเป็นแบบจำลองข้อมูลนะคะ มันจะเป็นแบบที่ใช้อธิบายโครงสร้างของฐานข้อมูล โดยที่เราจะแสดงออกมาเป็นรูปภาพนะคะ โดยที่โครงสร้างสำคัญที่จะต้องใช้ในการวาดรูปของเรานะคะ ก็คือ Entity หรือว่าตารางกับความสัมพันธ์แต่ละเส้นที่เชื่อมโยงในแต่ละตาราง เราจะต้องโยงกันให้ถุกนะคะ อย่างเช่นตารางของอาจารย์กับนักศเราต้องมีความสัมพันธ์กันในฐานะการเรียนการสอนแบบนี้นะคะ การวาดรูปจะเป็นเหมือนรูปที่อาจารย์ยกตัวอย่างให้ดูดูบนจอนะคะ การที่เราจะวาดรูปได้เราต้องรู้ด้วยว่าสัญลักษณ์แต่ละอันเป็นอย่างไร ทำไมเราต้องใช้วงรี ทำไมเราต้องใช้สี่เหลี่ยมผืนผ้า ทำไมเราต้องลากเส้นตรงนะคะ แต่ละอันมีความหมายหมดเลย อล้ววันนี้ก็จะพอบรรยายเสร็จจะให้วาดเองด้วยนะคะ จุดเด่นของแผนภาพ ER มันจะทำให้เราออกแบบฐานข้อมูลได้เร็วขึ้น มันการจัดระเบียบความคิดของผู้ที่ออกแบบคล้าย ๆ กับเราสมัยมัธยมน่าจะเคยวาด Mind Map นะคะ การวาด ER ก็เหมือนกันนะคะมันจะได้รู้ว่าเราต้องการจะออกแบบอะไร อะไรควรมีความสัมพันธ์กัน หรืออะไรที่ขาดหายไป เราจะได้เห็นรวมถึงลดความซ้ำซ้อนของข้อมูลออกไปด้วย เช่น ในตารางนี้ข้อมูลนี้อยู่แล้ว ก็ไม่จำเป็นต้องใส่เพิ่มในตารางอื่นก็ได้นะคะ หรือว่าพอเราวาดเสร็จออกมาทำไมมีตารางที่คล้าย ๆ กัน 2 อัน มันลบออกได้ไหมนะคะ การวาดรูป้จะทำให้เราเห็นภาพได้ง่ายขึ้นโดยคุณลักษณะของการวาดแผนภาพ ER นะคะ ก็คือแน่นอนมันแสดงผลออกมาเป็นถาพนะคะ model ข้อมูล หรือรูปแบบข้อมูลแบบไหนก็ตามนี่มันจะมีภาษาหรือรูปภาพที่เป็นกราฟิกโดยเฉพาะนะคะ อาจจะมีทั้งภาพขนาดใหญ่ภาพขนาดย่อยมันจะทำให้เราอ่านข้อมูล หรืออ่านบานข้อมูลนั้นได้ง่าย เพราะเราใช้สี่เหลี่ยม เราใช้วงรีนะคะ เราใช้วงกลม เราใช้เส้นโค้ง เส้นปะ ทุกอย่างมีความหมายหมดนะคะ มันก็แสดงให้เห็นถึงความชัดเจนของข้อมูลด้วย โดยทีเราอาจจะใช้สัญลักษณ์ที่ต่างกันเล็กน้อยนะคะ ซึ่งตัวรูปแบบของการวาดนี่ มันก็จะมีหลาย หลายรูปแบบหนังสือบางเล่มก็ไม่เหมือนกัน บางคนใช้รูปแบบของคนนี้ หรือหนังสืออีกเล่มหนึ่งอาจจะใช้รูปแบบที่ต่างอกๆปวาดรูป แต่เดี๋ยวตอนถึงเวลาวาดรูปเราต้องตกลงกันก่อนว่า เราจะเลือกรูปแบบไหนนะคะ ข้อสำคัญคือแผนภาพที่ได้มานี่ มันควรที่จะอ่านง่าย ๆ ไม่ซับซ้อน เส้นไม่ลากตัดกันไปกันมา ฉันเพิ่งคิดได้ ฉันเลยอยากวาดตรงนี้ ไม่ได้นะคะ เราต้องคิดก่อนวาดเราจะวาดเส้นตรงจากกระดาษฝั่งหนึ่งไปอีกฝั่งหนึ่งนี่ เราต้องมาจัดรัเบียบความคิดตัวเองด้วยว่า ในตารางนี่มันมีตารางอะไรบ้าง แล้วแต่ละตารางนี่มันควรจะเชื่อมกันอย่างไรนะคะ ดดยในแผนภาพที่เราวาดนะคะ รายละเอียดต้องอยู่ในระดับที่เหมาะสม อาจจะไม่ได้ละเอียดยิบขนาดนั้น ไม่ได้ละเอียดแต่ว่าเราต้องมองภาพให้ออกหรืออาจจะมีการเปลี่ยนแปลงแก้ไข มันจะต้องยืดหยุ่น รวมถึงรายละเอียดต้องเพียงพอ ไม่ใช่น้อยไป บางอันก็เยอะไปนะคะ เอาที่พอดี โดยแต่ละอันนี่อย่างที่บอกเราจะต้องมีการเชื่อมโยงความสัมพันธ์ของแต่ละตารางด้วยนะคะ แล้วก็การวาดรูปของเราเราจะไม่ตายตัวเลยว่าเราวาดเพื่อไปใช้กับโปรแกรมอะไรนะคะ รูปที่เราวาดจะต้องเอาไปใช้ได้กับทุกโปรแกรมหรือทุกบานข้อมูลนะคะ แล้วก้เวลาใครมาอ่านจะต้องเข้าใจง่าย ถึงแม้ว่าเขาจะไม่ได้เรียนทางด้านคอมพิวเตอร์มาก่อน แต่พอดูรูปภาพอย่างน้อยเขาก็จะเข้าใจว่าเราจะสื่ออะไร ในฐานข้อมูลเรามีอะไรบ้างนะคะ เขาอาจะไม่รู้หรอกว่าวงรีมันหมายความว่าอะไร หรือสี่เหลี่ยมหมายความว่าอะไร เป็นเส้นปะ ทำไมต้องมีเส้นโค้งด้วย เขาไม่ต้องเข้าใจตรงนั้น แต่เขาดูแล้วเขาก็พอเข้าใจว่าเราต้องการจะสื่ออะไร สื่ออะไร ในฐานข้อันนี้ก็คือไม่ว่าจะเป็นใครต้องอ่านรูปที่เราวาดเข้าใจระดับหนึ่งก็ยังดีนะคะ ขั้นตอนในการออกแบบแผนภาพ ER มันก็จะมีหลายขั้นตอน แต่เราก็จะแบ่งได้เป็น 5 ขั้นตอนในการออกแบบ หรือการวาดด้วยนะคะ โดยพอเราได้ภาพคร่าว ๆ มาแล้วนี่เราค่อยไปใส่รายละเอีนยดทีหลังก็ด้ ผู้ใขช้งานเขาควรจะดูข้อมูลได้ในระดับไหน ผู้ใช้งานแต่ละคนการเข้าถึงข้อมูลแต่ละขั้นนี่ แต่ละขั้นแต่ละชั้นใครเข้าได้บ้าง หรือว่า ผู้ใช้งานด๔ได้อย่างเดียวไหม หรืออะไรหลังจากที่เราวาดรูปเสร็จแล้ว แล้วค่อยมาใส่รายละเอียดทีหลังก็ได้ โดยขั้นตอนแรกเราจะกำหนด Entity หลัก หรือตารางหลักนะคะ โดยในการออกแบบฐานข้อมูลนี่ เราจะต้องเอา... รวบรวมความต้องการของผู้ใช้งาน ก็คือ requirement นี่ล่ะ ในฐานข้อมูลเราจะมี Entity หรือฐานข้อมูลอะไรซึ่งขั้นตอนนี้เป็นขั้นตอนที่ค่อนข้างยากนะคะ ต้องเข้าใจในสิ่งที่เรากำลังจะสร้างทั้งผู้ใช้งานและผู้ออกแบบต้องเข้าใจตรงกัน เพราะถ้าเรากำหนดตารางไปแล้วแล้วอยู่ดี ๆ มาเพิ่ม มันอาจจะต้องเชื่อมต่อความสัมพันธ์ใหม่นะคะ โดยวิธีการก็คือถ้าอยากทำให้มันครอบคลุมมากที่าุดก็คือ เอาข้อมูลที่มีมาวางแล้วจัดกลุ่มของข้อมูลนะคะ โดยรู้ว่าข้อมูลมีค่าอะไรบ้าง มีความหมายอะไร แต่อะไร แต่ละอย่างนี่เชื่อมโยงกันอย่างไรนะคะ ถ้าข้อมูลเป็นข้อมูลชนิดเดียวกัน ให้วางไว้ในตารางเดียวกันแล้วกำหนดชื่อ เช่น นักศึกษานะคะ อาจจะมีหลายคณะก็จริงแต่ก็คือนักศึกษาเรารวมเป็นตารางเดียวได้ไหม ได้แล้วค่อยมากำหนดลักษณะพิเศษของแต่ละคนว่าในนักศึกษาหลาย ๆ พันคนนี่เขามีความแตกต่างอะไรบ้าง แต่เราก็เก็บข้อมูลไว้ในตารางเดียวก็พอ โดยเราจะเก็บทุกอย่างจะต้องจดไว้ในบันทึกพจนานุกรมด้วย แล้วก้เขียนลงไปในแผนภาพที่เราจะวาดด้วยว่ากำลังจะวาดด้วยว่าในตารางนี้มีข้อมูลอะไรบ้างที่เราต้องใช้นะคะ ขั้นตอนที่ 2 ก็จะต้องมากำหนดความสัมพันธ์ Entityการกำหนดชื่อ กำหนดความหมาย ความสัมพันธ์ ทิศทางการเชื่อมโยงของข้อมูลอัตราการเกิดความสัมพันธ์นะคะ เช่น นักศึกษา 1 คน สามารถลงทะเบียนเรียนได้หลายวิชานะคะ แต่ในหลาย ๆ วิชามีผู้สอนได้เพียงคนเดียว อันนี้คือความสัมพันธ์ที่เกิดขึ้น แต่อาจารย์ 1 คน ก็สามารถสอนได้หลายคนเหมือนกัน ได้หลายวิชาด้วยนะคะ ซึ่งอาจจะเป็นยกตัวอย่างการกำหนดอัตราส่วนอีกอย่างหนึ่งก็คือ ที่อาจารย์ยกตัวอย่าง บ่อย ๆ รหัสบัตรประชาชน ไม่ควร มันไม่เกิน 13 หลักอยู่แล้ว เราก็ต้องกำหนดชื่อคน กำหนดไว้เลยก็ได้ ไม่ควรเกิน 20 ตัวอักษร คงไม่มีใครตั้งชื่อตามหลักโหราศาสตร์ยาวเกิน 20 ตัวหรอกนะคะ เราก็สามารถแบ่งกลุ่มได้แล้วว่าข้อมูลแต่ละอันมันจะต้องเชื่อมโยงกันอย่างไร หลังจากนั้นก็มาดูว่าความสัมพันธ์เป็นอย่างไร 1 ต่อ 1 หรือ 1 ต่อมากกว่า 1 อะไรพวกนี้ ภาษาอังกฤษก็คือ One-to-One One-to-Many อะไรพวกนี้ ก็จะต้องวิเคราะห์ดี ๆ นะคะ ซึ่งจะต้องสามารถอ่านไปข้างหน้าแล้วก็อ่านย้อนกลับมาโดยที่ความหมายไม่เปลี่ยนในแผนภาพของเราด้วยนะคะ ขั้นตอนที่ 3 กำหนดคีย์หลัก กำหนดคีย์รอง ก็คือ Primary Key กับ Secondหลังจากที่เราได้ตารางต่าง ๆแล้ว ขั้นตอนต่อไปในตารางเราจะต้องเก็บข้อมูลหรือ Attribute อะไรบ้าง เช่น ตารางนักศึกษาต้องเก็บข้อมูลอะไรบ้างเกี่ยวกับนักศึกษา พอจำได้ ก็คือตอนเราเข้ามาเรียน เรากรอกข้อมูลเยอะมาก ตั้งแต่ใบสมัครเลยนะคะ อันนั้นคือ Attribute ที่มหาวิทยาลัยต้องการ ชื่ออะไร นามสกุลอะไร บัตรประชาชขนเลขอะไร อายุเท่าไร บ้านอยู่ไหน พ่อแม่ชื่ออะไร จบจากโรงเรียนอะไร เกรดเฉลี่ยเท่าไร ปัจจุบันที่ไหน ใครเป็นคนส่งเรียน ได้เงินเดือนเดือนละเท่าไรนะคะ ใครเป็นผู้ปกครอง เบอร์ผู้ปกครองเบอร์อะไรบางคนผู้ปกครองไม่ใช่พ่อหรือแม่ อาจจะเป็นคุณตาคุณยายนะคะ ที่อยู่ปัจจุบันอยู่ไหนแล้วมาเรียนราชภัฏพักที่ไหน กรอกให้หมด เกรดเฉลี่ยตั้งแต่ ม.4 ม.5 ม.6 เป็นออันนี้คือสิ่งที่มหาวิทยาลัยต้องการรู้เกี่ยวกับพวกคุณ ซึ่งก็คือ Attribute นั่นเองนะคะ โดยหัวของแต่ละคอลัมน์หรือ Attribute นี่ ควรกำหนดเป็นคำสั้น ๆ ง่าย ๆ อาจจะเป็นตัวย่ิแต่ต้องสื่อความหมายนะคะ แล้วก็หลีกเลี่ยงการตั้งชื่อเหมือนกันนะคะ อาจจะเป็นชื่อ ชื่อนี่ บางคนไม่เข้าใจ สรุปใส่ชื่อเล่นหรือชื่อจริง ฉะนั้นต้องกำหนดไปเลยว่าคุณต้องการอะไร ชื่อจริงก็ชื่อขจชื่อเล่นก็ใส่ชื่อเล่น ไม่ใช่คำว่า "ชื่อ" เฉย ๆ แล้วเขาจะรู้ไหมว่าต้องใส่อะไร เขาอาจจะใส่ชื่อเล่นก็ได้นะคะ กำหนดคีย์ภายนอก หรือว่า Foreign Key ที่เอาไว้เชื่อมโยงแต่ละตารางเข้าไว้ด้วยกันนะคะ อย่างเช่น นักศึกษากับอาจารย์นี่จะเชื่อมโยงกันได้อย่างไร เชื่อมโยงโดยรหัสวิชา เช่น รหัสวิชานี้ใครเรียนบ้าง ใครสอนบ้าง แค่กรอกรหัสเข้าไปก็รู้เลย อันนี้คือการเชื่อมโยงหกันของอาจารย์กับนักศึกษาในวินะคะ โดยที่คีย์นอกหรือ Foreign Key นี่มันอาจจะเป็นคีย์หลักของตารางอื่นก็ได้นะคะ เดี๋ยวพอวาดรูปก็จะเข้าใจมากขึ้น ไม่ค่อยเข้าใจเท่าไร ว่า เอ๊ะ ทำไมมันถึงเชื่อมโยงกันได้นะคะ ขั้นที่ 5 พิจารณาขอบเขตค่าแต่ละค่าที่อยูู่ในแต่ละข้อมูลที่เราต้องการนะคะ ก็คือขอบเขตของข้อมูลนั่นแหละ เช่น ชนิดของข้อมูล เราจะกำหนดเป็นอะไร วันเกิดควรกำหนดเป็นอะไร เงินเดือน มันควรเป็นจำนวนเต็มไหม คุรต้องการทศนิยหรือเปล่านะคะ อย่างชื่อก็ควรกำหนดเป็นรับข้อมูลเฉพาะตัวอักษรเท่านั้น กรอกเป็นตัวเลขไม่ได้ อันนี้คือสิ่งที่เราต้องกำหนดตั้งแต่ตอนที่ออกแลลฐานข้อมูลเลย ความยาวเลขบัตรประชาชนก็ 13 หลักนะคะ เบอร์โทรศัพท์ก็ 10 หลัก อะไรแบบนี้ นามสกุลไม่ควรเกิน 35 ตัวอักษร เงินเดือนก็ เอาสักไม่เกิน 7 หลัก ประมาณนี้นะคะ รูปแบบข้อมูลบางประเทศมันไม่เหมือนประเทศเรา เขาจะเอาเดือนขึ้นก่อนตามด้วยเดือน ตามด้วยวัน ตามด้วยปี คุรก็สามารถกไหนดได้เหมือนกันแบบของเราเพื่อดูง่าย ๆ ก็เป็น วัน เดือน ปี ตามกันอย่างนี้ก็ได้นะคะ กับค่าที่อนุญาตโดยเฉพาะเช่น ทุกวันที่ 1 กับ 16 ของเดือนเป็นวันหยุด คุณก็สามารถตั้งได้ว่าในฐานข้อมูล คือ ลูกค้า ต้องการจะจองคิวทำอะไรก็ตาม ถ้าเป็นวันที่ 1 กับวันที่ 16 จะไม่อนุญาตให้จอง แบบนี้ก็ได้นะคะ อันนี้ก็ต้องตั้งแต่เราออกแบบเลย ว่าข้อตกลงของเราควรจะเป็นอย่างไรนะคะ อันนีก็อธิบายไปแล้วนะ กับอีกอัน 1 สำคัญความเป็นหนึ่งเดียว ก็คืออย่างเช่นรหัสนักศึกษา ต้องกำหนดเลยว่าต้องเป็นค่าที่ซ้ำ ซ้ำกันไม่ได้ เราอาจจะกรอกเลขผิดไปตัวหนึ่ง ระบบอาจจะเตือนต้องแจ้งเตือนว่าคุณเลขนี้ใช้ไม่ได้มันซ้ำไปแล้ว กับ การเป็นค่านัล คุณไม่กรอกข้อมูลได้ไหม บางระบบจะบอกว่าไม่ได้ ถ้าใครเคยกรอกจะเห็นว่าบางช่องของการกรอกข้อมูลเขาจะมีดอกจันสีแดงกำหนดไว้อยู่ เป็นข้อมูลที่เขาต้องการ คุณจะเว้นว่างไม่ได้นะคะ หรือถ้าต้องการจะเว้นว่าง หรือไม่ตอบเขาจะเรียกอีกอันหนึ่งว่าค่า Default ปริยาย ถ้าไม่ตอบว่าเงินเดือนเป็นเท่าไร ค่าเริ่มต้นคือ 0 แต่เป็นค่าว่างไม่ได้ ไม่ตอบไม่ได้ เพราะฉะนั้นเราใส่ไปเลย 0 บาท แบบนี้ก็ได้ แต่ส่วนมากทุกคนก็ต้องกรอกอยู่แล้วนะคะ ขั้นตอนสุดท้าย ก็มาวิเคราะห์ดูว่าแผนภาพที่เราออกแบบนี่ มันสามารถปรับปรุงแก้ไข หรือว่าขยายตัวในอนาคตได้หรือเปล่า เพราะว่าการออกแบบที่ดีนี่ต้องคำนึงถึงการเปลี่ยนแปลงด้วย ไม่ใช่ว่าตายตัวไปตลอด เกิดสมมติว่าวันนี้คุณอาจเปแิดร้าน ลูกค้าอาจจะไม่ถึง 100 คน แต่ใครจะร๔อนาคตคุณอาจจะเป็นธุรกิจที่มันเติบโตมีสาขาไปอีกเป็นร้อยสาขา มีลูกค้าอีกเป็นหมื่นคนแต่ฐานข้อมูลคุณ fix ไว้ว่ารหัสลูกค้าแค่ 1-100 มันเป็นไปไม่ได้ค่ะ นะคะ ต้องวิเคราะห์ด้วยว่ารหัสลูกค้านี่ มันจะต้องเป็นการเพิ่มขึ้นอย่างอัตโนมัติไปได้เรื่อย ๆ หรือเปล่า หรือคุรจะเป็นคนกรอกเองนะคะ อันนี้ก็ต้องคิดด้วย ไม่ใช่ว่าระบบฉันใช้แค่ 10 คนนี่ล่ะ บางที่อนาคตอย่างจะไม่ใช่อย่างนั้นนะคะ โดยการสร้างแบบจำลองข้อมูลหรือการวาดแผนภาพนี่ มันจะต้องวิเคราะห์ของข้อมูงต้องเก็บในระบบนะคะ อาจจะเกี่ยวกับข้อมูลที่เราจำเป็นต้องเรียกใช้ โครงสร้างที่มีการเพิ่มลบแก้ไขข้อมูลจะต้องทำที่ตารางไหน ถ้าสมมติว่าในตารางนั้นถูกลบไปมันจะไปกระทบกับข้อมูลในตารางอื่นหรือเปล่านะคะ เช่น วันดีคืนดีอาจารย์ลบชื่อสาขาที่คุณเรียนออก มันจะกระทบกับพวกคุณไหม เป็นนักศึกษาไม่มีสังกัด ทำได้ไหม ไม่ได้นะคะ ก็ต้องดูด้วย เขาเรียกว่ากฎการคงสภาพของข้อมูล อยู่ดี ๆ อยากลบไม่ได้ เหมือนอาจเปลี่ยนเลขบัตรประชาชนบัตรประชาชนให้เดชมงคลได้ไหม ไม่ได้ เลขมันไม่สวย เลข 9 ลงท้าย มันไม่ได้ แต่ชื่อเปลี่ยนได้ไหมเปลี่ยนได้ แต่บางอย่างมันเปลี่ยนไม่ได้นะคะ เช่น เลขบัตรประชาชนอย่างนี้ เราต้องวิเคราะห์ด้วย ไม่ใช่ว่าออกแบบไปแล้วใครอยากเปลี่ยนเลขบัตรประชาชนตอนไหนก็ได้แบบนี้เป็นต้น โดยการเขียนแผนภาพ ER นี่ มันก็จะอธิบายภาพรวมทั้งหมดนะคะ อย่างที่บอกตอนต้น ก็คือมันต้องเข้าใจง่ายนะคะ อาจจะไม่ต้องรู้ว่าข้อมูลที่เรากำลังจะเก็บนี่ เก็บที่ไหนเก็บอย่างไร ไม่จำเป็น แค่วาดออกมาให้ดูก่อนว่า ในฐานข้อมูลต้องมนะคะ ในแต่ละตารางมีความสัมพันธ์กันอย่างไร ข้อมูลมันจะซ้ำซ้อนกันไหมนะคะ นะคะแล้วก็เขียนออกมาให้ออกมาดูง่ายที่สุด อย่างที่อาจารย์บอกตคอนแรก แผนภาพการวาดรูปนี่มันมีหลาย... เขาเรียกว่าอะไรล่ะ หลายมาตรฐานก็แล้วกัน แต่ละเล่มก็เลือกมาใช้ไม่เหมือนกันนะคะ มีทั้งแบบ Modeแบบ Craw foot จะคล้าย ๆ กับรอยเท้าของนก รอยเท้าอีกา เขาก็เรียกเป็นรูปแบบรูปแบบหนึ่งนะคะ แต่ที่เราจะใช้กันบ่อย ๆ นะคะ จะเป็นแบบของเชนโมเดล เราจะเลือกตัวใช้แบบนี้ เพราะว่ามันเขียนง่าย อ่านง่ายที่สุดนะคะ แต่ถ้าคุณไปเจอหนังสือเล่มอื่น คุณใช้ปืดอยู่ที่เขาจะเลือกใช้แบบไหนแค่นั้นเองนะคะ สัญลักษณ์ที่ต้องใช้ในการวาดรูปนะคะ สัญลักษณ์สี่เหลี่ยมผืนผ้ามันจะหมายถึงชื่อตารางนะคะ แบบสี่เหลี่ยมข้าวหลามตัดมันจะบอกถึงความสัมพันธ์ของตารางแต่ละตารางนะคะ แล้วคอลัมน์ในแต่ละตารางล่ะนะคะ เราก็จะใส่เป็นรูปวงรี ถ้าคอลัมน์นั้น ๆ เป็นคีย์หลักที่ห้ามซ้ำกัน ในรูปวงรีจะต้องขีดเส้นใต้ด้วย ส่วนด้านข้างอันนี้จะไม่ค่อยพบเห็นบ่อย แต่จะเจอในข้อสอบแน่ ๆ นะคะ อันแรกเป็นสี่เหลี่ยมผืนผ้าซ้อนกัน 2 อัน มันหมายถึงตารางนั้นน่ะอ่อนแอ หรือ Weak Entity จะต้องพึ่งค่าตารางอื่น นเพื่อให้ตารางของมันมีความหมายนะคะ กับต่อมา สี่เหลี่ยมข้าวหลามตัดซ้อนกัน 2 อัน ก้เช่นกันคึ่ะ เขาจะเรียกว่า "ความสัมพันธ์แบบอ่อนแอ" มันจะต้องไปดึงค่าหรือความสัมพันธ์อื่น ๆ มาทำให้ตัวมันมีความหมายขึ้นมานะคะ วงรซ้อนกัน 2 วง ก็คือในตารางนี้น่ะ ไอ้ในคอลัมน์นี้หรือในข้อมูลนั้น ๆ นี่ มันจะมีข้อมูลได้มากกว่า 1 ข้อมูล เช่น คุณอาจจะมีเบอร์โทรศัพท์ 3 เบอร์ หรือว่ามีชื่อเล่น พ่อเรียกชื่อหนึ่ง แม่เรียกชื่อหนึ่งก็บอกได้ มีสัตว์เลี้ยงมากกว่า 2 ตัว แต่ละตัวมีชื่อว่าอะไรบ้างอย่างนี้ก็ได้นะคะ กับวงรีที่เป็นเส้นประ มันหมายถึงว่า ค่าข้อมูลในนี้นี่จะได้มาจากการคำนวณของข้อมูลอื่น ๆ ที่พบบ่อยที่สุดก็คือ อายุ อายุจะได้มาจากการคำนวณวันเกิดไอ้เส้นวงรีประ ๆ พวกนี้ อายุของเราได้มาจากการกรอกวัน เดือน ปีเกิด นั่นเองนะคะ ให้มันคำนวณให้อัติโนมัติ ผู้ใช้งานไม่ต้องบอกเองว่าอาให้เลย อายุ 18 ปี 11 เดือน 10 วันอะไรก็ว่าไปนะคะ อันนี้คือสัญลักษณ์ที่เราใช้บ่อยรูปเดียวกันกับรูปเมื่อกี้นะคะ อันนี้จะอธิบายโดยละเอียด Entity หรือว่าชื่อของตารางนะคะ ก็จะเป็นส่วนในการเก็บข้อมูลรายการแต่ละรายการที่ระบบจัดการฐานข้อมูลหรือเรากำลังจะสร้างระบบขึ้นมานะคะ เช่น สัญลักษณ์ Entity จะเป็นสี่เหลี่ยมผืนผ้า มีชื่อตารางหรือชื่อ Entity อยู่ข้างใน เราจะต้องวาดแบบนี้ทุกครั้งนะคะ โดยตัวอย่าง เช่น ตารางบุคคล บุคคลคืออะไรบ้าง ตารางพนักงาน ตารางผู้ป่วย ตารางนักศึกษา ตารางลูกค้า อาจจะเป็นข้อมูลเกี่ยวกับสถานที่ก็จะเป็นตารางเก็บจังหวัด เก็บข้อมนะคะ ตารางที่เกี่ยวกับวัตถุ อาจจะเป็นรถยนต์ อาคาร เครื่องจักร สินค้าก็ได้หรืออาจจะเป็นเหตุการณ์ต่าง ๆ ที่เกิดขึ้น การซื้อ การขาย การรักษาโรค การซื้อการขาย สัญลักษณ์อย่างที่บอกเป็นสี่เหลี่ยมผืนผ้า มีชื่อตารางหรือ Entity อยู่ข้างในนะคะ ประเภทของ Entity ก็มีอยู่ 2 ประเภทนะคะ แต่ส่วนใหญ่ที่เราใช้กัน จะเป็น Entity ทั่วไนะคะ เป็น Regula เป็นตารางที่ข้อมูลในนั้นสามารถแยกข้อมูลแต่ละแถวออกได้นะคะ กับอีกอันหนึ่งคือ Entity อ่อนแอ มันจำเป็นจะต้องใช้ข้อมูลอื่น มาช่วยทำให้ข้อมูลในแถวนั้น ๆ มีคุณค่าหรือมีความหมายขึ้นมานะคะ อันนี้เป็นตัวอย่างEntity ทั่วไปหรือตารางทั่วไปนะคะ จะสังเกตได้ว่า อย่างข้างบนนี่อาจารย์เขียนไว้ว่า Entity Student ก็คือตารางตารางหนึ่งที่มีข้อมูลเกี่ยวกับนักเรียนอยู่ที่เราจะเอามาวาดแผนภาพ มันไม่ใช่กรอบสี่เหลี่ยมนี้นะคะ เราจะเอามาแต่ชื่อ เช่น ตาราง student ก็คือ entity student เก็บข้อมูลอะไรบ้าง ก็คือตัวนี้ เราจะวาดแค่นี้ค่ะ เอาสี่เหลี่ยมข้างล่้างมาวาด แล้วก็บอกด้วงยว่าชื่อตารางอะไรนะคะ อันนี้เป็นตัวอย่างของ Entity อ่อนแอนะคะ อันนี้ก็คือเป็นข้อมูลเกี่ยกับการลงเวลาทำงาน เวลาออกจากงาน เหมือนเวลาใครไปทำงานก็จะมีใครมาทำงานกี่โมงกลับบ้านกี่โมงตารางนี้นะคะ Time stamp ก็คือลงเวลา ตรางน้จะไม่มีความหมายเลย ถ้่าขาดข้อมูลที่เข้าทำงาน แล้วก็เวลากลับบ้าน เพราะฉะนั้น 2 ตัวนี้จะต้องเชื่อมโยงกัน อยู่แล้วถ้าขาดอันใดอันหนึ่งไป ตารางนี้จะไม่มีความหมายเลยก็คือมีแต่เวลามาทำงาน แล้วกลับบ้านตอนไหน ไม่รู้ อย่างนี้ไม่ได้นะคะ ก็คือมาทำงาน ก็ต้องมีเวลากลับบ้าน หรือมีแต่เวลากลับบ้าน ไม่มีเวลาทำงาน ก็ไม่ได้ ไม่อย่างนั้นจะรู้ได้อย่างไรว่าคุณมาทำงานกี่โมงนะคะ อันนี้เป็นตัวอย่างของตารางที่ถ้าขาดข้อมูลใดข้อมูลหนึ่งไปจะทำให้ข้อมูลในตารางนั้นนี่ ไม่สมบูรณ์ มีปัญหานั่นเองนะคะ อย่างเช่น อันนี้เป็นตัวอย่างถ้าเป็นตารางทั่วไปตารางนักเรียน กับตารางรายวิชานะคะ มีนักศึกษา 2 คน มี 2 วิชา อันนี้เป็นตารางทั่วไป แต่ตารางการลงทะเบียน สมมติว่ามีแต่รหัสนักศึกษา มีปีการศึกษา แต่ไม่รู้เลยเขาลงทะเบียนวิชาอะไร ได้ไหม ไม่ได้ ไม่อย่างนั้นจะรู้ได้อย่างไรว่า เทอมนี้หรือนะคะ รู้รายวิชา รู้ปีการศึกษาแต่ไม่รู้เลยว่าใครลงทะเบียนเรียน ได้ไหม ก็ไม่ได้อีกนะคะ เพราะฉะนั้นในตารางการลงทะเบียนถ้าขาดข้อมูลใดข้อมูลหนึ่งไปตารางนั้นจะเป็นตารางที่ไม่สมบูรณ์ โดดยข้อมูลที่ดึงมาก็ไปดึงข้อมูลมาจากคนอื่นทั้งนั้น อันนี้คือตารางอ่อนแอนะคะ ก็คือไม่มีความหมายในตัวเองต้องมีข้อมูลจากตารางอื่นมาช่วยนั่นเองนะคะ ต่อมา Attribute ก็คือพูดง่าย ๆ ก็คือคอลัมน์ในแต่ละตารางน่ะค่ะ ว่าในตารางนั้นมีคอลัมน์อะไรบ้างก็คือหัวของคอลัมน์นะคะ นะคะ นี่แบบนี้ เพราะฉะนั้นAttrib นะคะ สัญลักของ Attrib เป้นงนะคะ อย่างข้อมูลพนักงานต้องมีอะไรบ้าง ก็ต้องมีฐานข้อมูลพนักงาน ชื่อ นามสกุล มีเพศ มีเงินเดือนนะคะ สัญลักษณ์จะเป็นแบบนี้นะคะ ข้อมูลพนักงานอันนี้ก็คือ Entity ใช่ไหมคะของตาราง คอลัมน์ คอลัมน์ ซึ่งใน Attribute นี่ก็แบ่งไปอีกเป็น 6 ประเภทนะคะ ก็ใช้เป็นวงรีนี่ล่ะ แต่อาจจะมีสิ่งที่เปลี่ยนไปนิดหนึ่งนะคะ โดย Atribute นี่ ประเภทที่ 1 คือ Attribute ที่แบ่งย่อยไม่ได้อีกแล้ว เช่น เพศ คุณก็ตอบได้แค่เพศเดียว คุณเป็นเพศอะไรคุณก็ตอบเพศนั้นตอบได้ค่าเดียว คุรไม่จำเป็นต้องบอกว่าเงินเดือนเดือนที่ 1 เงินเดือนเดือนที่ 2 เงินเดือนเดือนที่ 3 ไม่ใช่ เงินเดือนปัจจุบันเราเท่าไรนะคะ บัตรประชาชนตอบได้ค่าเดียวรหัสนักศึกษาตอบได้ค่าเดียว อันนี้คือเป็น Attribute โดยทั่วไปนะคะ ต่างจาก Attribute ประเภทที่ 2 คือ Attribute ที่แบ่งย่อยได้ เช่น ชื่อนามสกุล เราแยกกันกรอกได้ไหม ไพด้ แบ่งเป้นชื่อ คอลัมน์ 1 นามสกุลคอลัมน์ 1 ก็ได้นะคะ ต่อมาเป็น Key Attribute นะคะก็เป็นค่าเอกลักษณ์ จะต้องไม่ซ้ำกันในตารางนั้น ๆ ค่านี้ เราตจ้องไม่ซ้ำกัน ดดยลักษณะเฉพาะของคีย์นะคะ มันจะมีการขีดเส้นใต้เพื่อแสดงว่ามันเป็นค่าที่ซ้ำกันไม่ได้ เหมือนเวลาเราเรียนวิืชาใด ๆ ก้ตาม ถ้าอันไหนมีการขีดเส้นใต้ มันเป็นการเน้นใช่ไหมคะ ในวิชาอื่น ๆ ในการวาดรูปก็เหมือนกัน วาดรูปในฐานข้อมูลก็เหมือนกันค่านั้นน่ะ เป็นจุดเน้นที่เราจะต้องให้ความสำคัญกับมันนะคะ กับข้อมูลนะคะ ที่มีเพียงค่าเดียวเท่านั้น เช่น การที่จะระบุว่าคุณจะเป็นเพศไหน คุณระบุมา อาจจะไม่มีแค่ชขายหรือหญิง ตอนนี้คุรเป็นเพศอะไร ก็ระบุมานะคะ หรือค่าที่มีได้หลายค่า อย่างเช่น เบอร์บ้าน ถ้าแต่ละที่ก็จะมีรหัสพื้นที่ไม่เหมือนกัน กรุงเทพก็เป็น 02 สกลยครก็เป้ฯ 04ขอนแก่นก็ 043 อุบลฯ ก็ 042 ใช่ไหมคะ มันก็ต้องระบุด้วยอย่างนี้นะคะ ถ้าค่าไหนมีได้หลายค่า อย่าลืมเป็นวงรี 2 เส้น กับค่าของข้อมูลที่ได้จากการคำนวณ เราจะใช้วงรีที่เป็นเส้นประ เช่น อายุที่ได้มาจากวันเกิดนะคะ หรือว่าวันเข้าทำงานจนถึงปัจจุบัน คุณทำงานมาแล้วกี่ปี อย่างนี้ก็ได้นะคะ ค่าที่ได้มาจากการคำนวณนั่นแหละ อันนี้เป็นตัวอย่าง Simple Attribute แยกให้ออกนะคะ อันไหนเป็น Attribute Atriตัวนี้ ตัวนี้ ตัวนี้ แล้วในสี่เหลี่ยมคืออะไร สี่เหลี่ยมคือ Entity นะคะ ตัวอย่างของ Attribute ที่แยกย่อยไปได้ เช่น ชื่อ นามสกุล อาจารย์ก็แยกออกมาเป็น FirstName LastName ที่อยู่ บางคนอาจจะกรอกบรรทัดเดียวเลยก็ได้ หรือคุณอาจจะออกแบบให้มันบ้านเลขที่บรรทัดหนึ่ง ถนนบรรทัดหนึ่ง ตำบลบรรทัดหนึ่ง อำเภอ จังหวัด แยกออกเลยก็ได้ ถามว่าใช้สัญลักษณะแตกต่างกันไหม ไม่นะคะ ไม่ เหมือนกันแต่ถามว่าเราลบอันนี้ออกได้ไหม ก็ได้นะคะ มัรจะได้ไม่เปลืองเนื้อที่อย่างนี้ก็ได้ แล้วคุณก็กรอกไปเลยชื่ออันหนึ่ง นามสกุลอันหนึ่งอย่างนี้ก็ได้นะคะ คีย์ Attribute ค่าที่ห้ามซ้ำกันก็คือตารางนักเรียนอะไรที่ห้ามซ้ำกันก็คือรหัสนักเรียน อันนี้มันย่อมาจาก student id นะคะ student id ทID ทำไมถึงรู้ว่าเป็น Student IDเพราะคำย่อแบบนี้ หรือชื่อทุกอย่างนี้ จะต้องจดไว้ในพจข้อมูลด้วยถามว่าอันนี้มันง่ายมันเข้าใจง่ายมาจากอะไร แต่ถ้าเป็นคนที่ไม่มีความรู้พื้นฐานเลย เขาจะรู้ไหม คืออันนี้เดี๋ยวอีกเรื่องหนึ่ง เป็นอีกเรื่องหนึ่ง ถ้าเอาทุกอย่างมารวมกันใน 1 ตาราง สามารถมี Attribute หรือมีรูปแบบข้อมูลได้ทุกรูปแบบก็ได้นะคะ มีทั้งคีย์หลัก มีทั้ง Attribute ที่สามารถแบ่งย่อยได้ มีทั้ง Attribute ที่ได้มาจากการคำนวณคืออายุจะได้ค่ามาจากวัน เดือน ปีเกิด เบอร์โทรศัพท์เป็น Multi Value มีได้หลายค่า อันนี้คือตัวอย่างนะคะ ตัวอย่างของ Attribute แต่เดี๋ยวเราอาจจะยังไม่เข้าใจ วาดรูปก็น่าจะเข้่าใจได้มากขึ้น ต่อมา ความสัมพันธ์นะคะ มันเป็นความสัมพันธ์ของตาราง 2 ตารางขึ้นไป โดยความสัมพันธ์นี่อาจจะมีข้อมูลที่ใช้ร่วมกัน สัญลักษณ์คือ ี่เกลนะคะ เช่น ตารางพนักงาน อันนี้พนักงานนะคะ พนักงาน Work in แปลว่า ทำงานอยู่าในแผนกอะไร ก้คือ Dipartma=entโดยความสัมพันธ์ตัวนี้นี่จะต้องสามารถอ่านไปข้างหน้า อ่านย้อนหลังก็ได้อย่างเช่น ตัวอย่างก็คือพนักงานทำงานอยู่ในแผนกอะไร หรือในแผนกนั้น ๆ มีใครทำงานอยู่บ้าง มันจะต้องเข้าใจได้แบบนี้นะคะ หรือ การสั่งสินค้าอยู่ในใบสั่งสินค้าตัวไหนนะคะ สินค้าชนิด นั้น ๆ อยู่ในอะไร ก็ต้องดูได้ สินค้า อย่างเช่น power bank อาจจะอยู่ได้ภายในหลายใบสั่งซื้อ ก็ได้เพราะสินค้าเรามีหลายตัวนะคะ ไม่ใช่ว่าขายให้แค่คนเดียว ขายในได้หลายคนนะคะ ความสัมพันธ์แบบ 1 ต่อ 1 จะต้องเป็นความสัมพันธ์ที่มีสมาชิกคนเดียว มีความสัมพันธ์ไปอีกสมาชิกหนึ่งของอีกตารางหนึ่งเท่านั้นนะึคะ เช่น เจ้าของรถเป็นเจ้าของรถยนต์ได้ 1 คันนะคะ อันนี้สมมติ ๆ นะคะ คน 1 คน เป็นเจ้าของรถยนต์ได้หนึ่งคัน ใช่ไหม ใครเคยเห็นในทะเบียนรถยนต์ ใบทะเบียนรถยนต์ นะ ตัวอย่าง แต่ถ้าเปลี่ยนเป็นความสัมพันธ์แบบ 1 และมากกว่า 1 ล่ะนะคะ เช่นคนหนึ่งคน มีรถยนต์ได้หลายคัน ใช่ไหม อยู่บ้านบางคนอาจจะมีรถยนต์มากกว่า 1 คน อาจจะมีรถเก๋ง มีรถกระบะ มีรถ 6 ล้อ พ่อเป้นเจ้าของรถหมดเ้ลย ก็ได้แต่ในบรรดารถทุกคนจะต้องมีเจ้าของคนเดียวอันนี้คือสิ่งที่เราต้องคิดด้วยนะคะ คน ๆ หนึ่ง มีรถได้หลายคนก็จริง แต่่รถคนนั้นมีเจ้าของได้คนเดียว กับความสัมพันธ์ที่มากกว่า 1 เช่นลุกค้าหลายคน ลูกค้า 1 คน สมมติเราไปซื้อของ ต้องซื้อกับ แคชเชียร์คนนี้เวลาจ่ายเงิน แต่แคชเชียร์คนนี้ก็สามารถรับลูกค้าได้หลายคนเหมือนกัน ลุกคนไปจ่ายกับแคชเชียนะคะ ไม่จำเป็นต้องจ่ายเฉพาะคนนี้เท่านั้น เหมือนเวลาเราไปเดินห้างซื้อของใน Super วันวันหนึ่งเขามีลูกค้าหลายคนไหม มีหลายคน คนคิดเงินก็มีหลายคนไหม เหมือนกัน เพราะฉะนั้น วันนี้เราอาจจะเจอพนักงานคนหนึ่ง พรุ่งนี้อาจจะเจอคนใหม่ก็ได้ เขาก็ไม่ได้เจอเราคนเดียว เขาอาจจะเจอคนใหม่ก็ได้อันนี้เป็นความสัมพันธ์ที่มากกว่า 1 ภาษาอังกฤษเรียกว่า Many-to-Many อันนี้เป็นตัวอย่างความสัมพันธ์แบบ 1 ต่อ 1 จะเห็นได้ว่า เส้นที่เชื่อมความสัมพันธ์จะเป็นเส้นตรง จะมีเลขกกำกับเห็นไหมคะ จะมีตัวเลขกำกับด้วยเพราะฉะนั้น เวลาเราลากเส้นเชื่อมความสัมพันธ์ใด ๆ ก็ตาม จะต้องมีตัวเลข หรือตัวอักษรกำกับทุกครั้งนะคะ อันี้เป็นความสำคัญแบบ 1 ต่อ 1 ขายสินค้า ดูแลลูกค้าได้ 1 คน จริงไหม อาจจะไม่จริงเสมอไป ตัวแทน 1 คนอาจจะดูแลลูกค้าได้หลายคนก็ได้ ถ้าเป้นลูกค้าหลายคน เราจะแทนด้วยตัว M ก็ได้นะคะ M หรือ N ก็ได้ แต่ต้องใส่ ถ้าว่าถูกต้องหรือยัง ตัวแทน 1 คน ดูแลลูกค้าได้หลายคน ถูก ลุกค้าหลาย ๆ คน ก็ได้รับการดูแลจากหลาย ๆ คนก็ได้รับการดูแลจากตัวแทน 1 คน ก็ถูกนะคะ แบบนี้เป็นต้นมีการใส่คีย์หลัก มีการขีดเส้น อันนี้เป็นความสำคัญก้คือเขาดุแลกัน ต้องใส่ ต้องระบุนะคะ แต่ถ้าเป็นความสัมพันธ์ที่มากกว่า 1 ทั้ง 2 ด้าน จะต้องใส่เป็น M กับ N เท่านั้น เราจะใส่เป็น M M แบบนี้ไม่ได้นะคะ ไม่ได้ เป็น N กับ N แบบนี้ได้ไหม ก็ไม่ได้ ต้องเป็น M กับ N เพื่อให้สื่อความหมายได้ถูกว่ามันเป็นความสัมพันธ์กันระหว่างเส้น 2 เส้นนี้นะคะ อันนี้เป็นตัวอย่างเดี๋ยวพอวาดง่าย ๆ ก่อน น่าจะเข้าใจง่ายขึ้น กับอันนี้ออกสอบง่ายมาก อาจารย์อาจจะมีรูปภาพให้ แล้วให้พวกคุณเปลี่ยนเป็นตาราง ง่ายมากเลยนะคะ ก็คือข้อมูลที่อยู่ในกรอบสี่เหลี่ยมมันคือชื่อตารางใช่ไหมคะ คุณก็เอากรอบสี่เหลี่ยมออก แล้วก็เขียนชื่อตาราง วงรี คือ Attribute ก็เป็นคอลัมน์ของตาราง เสร็จแล้ว หรือถ้าอาจารย์ให้วาดรูป ทำอย่างไร จากตารางข้างล่าง ชื่อตรางใช่ไหมคะ ชื่อตารางก็เอามาใส่กรอบสี่เหลี่ยม คอลัมน์แต่ละคอลัมน์ก็เอามาใส่ในวงรี วางเส้น เสร็จ แค่นั้นเอง อันนี้ออกสอบด้วยนะ นะคะ อาจจะไม่ง่ายอย่างนี้ แต่หลักการมีประมาณนี่ล่ะ กับถ้าสมมติว่า มันมีข้อมูลที่มันสามารถแบ่งแยกออกได้นะคะ จะเห็นว่าตอนก่อนหน้านี้ ที่อาจารย์ตัดตรงนี้ออก ใช่ไหมเวลาเราเอามาเขียนในรูปแบบของตาราง อันนี้เราจะไม่ใส่ เราจะดุเฉพาะAttribute ที่อยู่ขอบนอกสุดเท่านั้นนะคะ เราจะเอาเฉพาะข้างนอกสุดมาเขียนลงเป็นตาราง อันนี้เป็น ดุดี ๆ นะ ข้อกำหนดแต่ละอันนะคะ กับถ้าตารางไหนมีข้อมูลที่สามารถมีได้หลายค่า เห็นไหม วงรีซ้อนกัน 2 วง เราจะเอาข้อมูลนั้นแยกมาเป็นอีก 1 ตาราง แต่คีย์หลักจะเอามาจากตารางเดิมนะคะ เพื่อให้เ 2 ตารางนี้ มันเชื่อมกัน อันนี้เป็นข้อสังเกตก่อนนะ อันนี้ยังเป็นกฎที่ต้องใช้อยู่นะคะ กับอันไหนที่เป็นค่า ที่เป็น Weak Entity ที่เป็น Weak Entity หรือความสัมพันธ์แบบอ่อนแอ เราต้องดูด้วยว่า มันมีความสัมพันธ์กับตารางไหนนะคะ เราจะเอาคีย์หลักของตารางที่มนมีความสำคัยด้วย มาใส่ด้วยอย่างเช่น... เดี๋ยวลบอันนี้ออกก่อน ทำไมถึงบอกว่าตารางด้านขวามือเป็นตารางอ่อนแอ เพราะในตารางนี้มีเวลาทำงาน มีเวลากลับบ้าน มีวันที่ แต่ถามว่าเป็นของใคร ใครน่ะมาทำงาน 7 โมง กลับ 16.00 น. ใครมาทำงาน 8.00 น. กลับ 2.00 ไม่รู้ เพราะฉะนั้นต้องไปดูด้วยว่าพนักงานรหัสคนไหนที่เขามาแสกนนิ้วทำงาน หรือตอกบัตรทำงาน แต่ถามว่าในตารางนี้ทำไมเราไม่ให้กรอกรหัสพนักงานด้วยเลยล่ะ มันก็เป็นการซ้ำซ้อนในเมื่อเรามีรหัสพนักงานอยู่แล้ว เราก็เรียกใช้ได้เลย เราไม่จำเป็นต้องมาเพิ่มตรงนี้ก็ได้ นี่เป็นการออกแบบที่ดี ถ้าอันไหนซ้ำซ้อนกันเราจะไม่ใช้ เราจะดึงข้อมูลมันมาใช้เลย อันนี้คือข้อดีของการออกแบบฐานข้อมูลนะคะ อันนี้คือตัวอย่างอย่างหนึ่ง กับการเปลี่ยนให้เป็นตาราง ถ้าเมื่อกี้นี้ในรูปนี้อาจารย์ไม่ได้ใส่ความสัมพันธ์ใช่ไหมคะ ยังไม่มีเส้นเชื่อมโยงไปตารางอื่นใช่ไหม แต่ถ้ามันมีเส้นเชื่อมโยงไปตารางอื่นล่ะ นะคะ อันนี้เป็นความสัมพันธ์แบบ 1 ต่อ 1 เราจะต้องเอาคีย์หลักไอ้ที่ขีดเส้นใต้นี่ ของตารางด้านข้อง ที่เรามีความสัมพันธ์ด้วย มาใส่ในตารางเรา แต่ความสัมพันธ์แบบ 1 ต่อ 1 จะมีข้อได้เปรียบอย่างหนึ่งคือ ในตารางแรกอาจจะเอารหัสลูกค้ามาเป็นคีย์เพื่อเชื่อมต่อกันก็ได้ หรืออาจจะเอ่รหัสตัวแทนนะคะ มาเป็นตัวเชื่อมต่อกันก็ได้ อันนี้เป็นความพิเศษเฉพาะ ตารางแบบ 1 ต่อ 1 แต่จะต้องเอาคีย์หลักที่เรามีความสัมพันธ์ด้วย อาจจะเป็น เลือกมาตารางไหนก็ได้ แต่ต้องมี นะคะ ต้องมี มันสามารถยืดหยุ่นได้นั่นเอง เฉพาะตารางแบบ 1 ต่อ 1 แต่ถ้าเป็นความสัมพันธ์แบบ 1 ต่อ กลุ่ม จะต้องเอาคีย์หลักของฝั่งที่มีความสัมพันธ์แบบ 1 ต่อ 1 มาใส่ในตารางที่มีความสัมพันธ์แบบกลุ่มเท่านั้น อันนี้เป็นลักษณะเฉพาะนะคะ ลักษณะเฉพาะของความสัมพันธ์แบบ 1 ต่อกลุ่ม แต่ถ้าเป็นความสัมพันธ์แบบกลุ่มต่อกลุ่มล่ะเห็นไหมคะ เป็น M กับ N เราจะไม่เอาตาราง... เอ้ย ไม่เอาค่าคีย์หลักมาใส่ในตาราง แต่เราจะสร้างตารางใหม่ขึ้นมาขึ้นมาโดยใช้คีย์หลักของทั้ง 2 ตารางที่มีควาสัมพันธ์กัน มาสร้างเป็นตารางใจำลักษณะ 3 อย่างนี้ให้ดีนะคะ 1 ต่อ 1 1 ต่อ กลุ่ม การเอามาสร้างเป็นตารางลักษณธเฉพาะมมี 3 แบบ แบบแรกคือเอาลักษณฝั่งไหนก็ได้ แบบที่ 2 ก็คือเอาเฉพาะคีย์หลักของความสัมพันธ์ที่เป็น 1 เท่านั้น เอาคีย์หลักของทั้ง 2 ความสัมพันธ์มาสร้างตารางใหม่เลยนะคะ อันนี้คือลักษณะเฉพาะของการเปลี่ยนรูปภาพให้เป็นตารางนะคะ เดี๋ยวจะมีให้ทำด้วย บางคนจะจำไม่ได้ การออกแบบนะคะ อันนี้พูดไปแล้ว เราจะมาลองวาดรูปกัน ให้น่าจะเคยไปร้านหนังสือกัน หรืออาจจะเคยเห็นหนังสืออยู่แล้วนะนะคะ ในหนังสือ 1 เล่ม จะมีอะไรบ้าง แน่นอน ข้อมูลหนังสือแต่ละเล่มก็จะมีรหัสหนังสือนะ มีชื่อหนังสือ มีรหัสผู้แต่งรหัสสำนักพิมพ์ อันนี้คือข้อมูลที่อาจารย์ให้ก่อนนะ เดี๋ยวเรามาวาดรูปกัน ในข้อมูลในผู้แต่งหนังสือมีอะไรบ้าง ก็จะมีรหัสของผู้แต่งคนนั้นนะคะ มีชื่อผู้แต่งหนังสือ ในข้อมูลสำนักพิมพ์ ก็จะมีรหัสสำนักพิมพ์ มีชื่อสำนักพิมพ์ มีที่อยู่ มีเบอร์โทรศัพท์นะคะ ขั้นตอนแรก ศึกษาก่อนในระบบร้านหนังสือ ก็คือข้อมูลที่อาจารย์ให้เมื่อกี้ มีข้อมูลหนังสือ มีข้อมูลคนแต่ง มีข้อมูลสำนักพิมพ์ มีกรนะดาษใช่ไหมพลอย โอเค ขั้นตอนต่อมา กำหนด Entity เดี๋ยวจะให้ทำเอง ก็คือในข้อมูลที่อาจารย์ให้อันนี้ มันจะต้องมีกี่ Entity หรือกี่ตาราง ทำสิ ใช้สัญลักษณ์ให้ถูกด้วยนะคะ เดี๋ยวอาจารย์จะเดินดู ทำเลยนี่ จากข้อมูลนี้ ข้อมูลตัวหนังสือสีดำ ๆ นี่ ดำ ๆ เข้ม ๆ นี่ เราควรมีกี่ตารางวาดรูปนี่ วาดรูปแบบนี้ จะให้วาดแบบนี้ ง่าย ๆ วาดแบบนี้ให้วาดรูป ให้เอาข้อมูลน่ะมาวาดแบบนี้ แต่อย่างแรกเลย ดูก่อนว่าข้อมูลที่อาจารย์ให้นี่มันควรจะมีกี่ตาราง ดูสิว่ามันต้องมีกี่ตารางสัญลักษณ์ของตารางหรือ Entity ก็คือ สี่เหลี่ยมผืนผ้า ลองวาดสิ สี่เหลี่ยมมันควรจะมีสี่เหลี่ยมผืนผ้ากี่อัน แล้วในสี่เหลี่ยมผืนผ้า จะต้องเขียนว่าอะไร ลองทำดู อันนี้ยังไม่ยาก สรุปแล้วมีกี่ตาราง อันนี้ง่ายมาก ดูจากที่อาจารย์เน้น เข้มไว้ เราจะได้ 3 ตาราง ในกรอบสี่เหลี่ยม มีตารางผู้แต่ง มีตารางหนังสือ มีตารางสำนักพิมพ์ ก็คือ 3 Entity นั่นเองนะคะ จากโจทย์ที่อาจารย์กำหนดให้นะ ที่อาจารย์เน้นให้ อันนี้จะให้ทำเอง หลังจาก เราได้ตารางหรือ Entity แล้วนะคะ มันจะต้องกำหนดความสัมพันนี่ ความสัมพันธ์ก็คือ เส้นที่โยง 3 อันนี้เราจะโยงเส้นมันอย่างไร โดยความสัมพันธ์ของแต่ละอัน มันควรจะเป็นอย่างไร สิ่งที่มันควรจะเป็นก็คือหนังสือแต่ละเล่ม จะถูกพิมพ์จากสำนักพิมพ์ใดสำนักพิมพ์หนึ่งเท่านั้นใช่ไหม แต่ว่าใน 1 สำนักพิมพ์ เขาก้สามารถพิมพืหนังสือได้หลายเล่มนะ อันนี้คือเงื่อนไข เงื่อนไข หนังสือแต่ละเล่ม แต่ละเล่มกำหนดว่าจะต้องมีคนแต่งคนเดียวเท่านั้น แต่ในโลกของความเป็นจริง หนังสือนี่มันอาจจะมีคนแต่งช่วยกันก็ได้นะ แต่ในโจทย์ของที่อาจารย์ให้หนังสือ 1 เล่ม มีคนแต่งแค่คนเดียวเท่านั้น อันนี้คือโจทย์ที่อาจารย์กำหนดนะคะ แต่ว่าผู้แต่งหนังสือแต่ละคน เขาก็สามารถแต่งหนังสือได้หลายเล่มเหมือนกันอันนี้คือข้อกำหนดที่อาจารยืกำหนดให้นะคะ แล้วเราจะให้ความสัมพันธ์แต่ละอันอย่างไร ก็คือการวาดนี่ ๆ วาดแบบนี้ นี่ มันจะมีการวาดแบบนี้นะคะ ความสัมพันธ์จะเป็นแบบนี้ อันนี้คือความสัมพันธ์ที่นักศึกษาต้องวาดจากโจทย์ตัวนี้นะคะ จากโจทย์ตัวนี้ไอ้ 3 อันนี้มันจะต้องสัมพันธ์กันอย่างไร ลองวาดดูสิลองวาดดู รูปมันจะต้องออกมาเป็นอย่างนี้นะคะ แต่รูปว่าอย่างไรลองใส่ดู เดี๋ยวให้เวลา 5 นาที ลองดูสิว่า จะเข้าใจโจทย์อาจารย์ไหมเข้าใจหรือเปล่า 5 นาทีเดี๋ยวดูกันเดี๋ยวเอาตัวอย่างให้ดูเลย ที่เหลือจะได้ลองทำดูนะคะ เดี่ยวลบอันนี้ก่อนให้ตัวอย่าง 1 อันก่อน ให้วาดแบบนี้ค่ะ เช่น ผู้แต่ง 1 คน ดจทย์ที่อาจารย์บอกแต่งหนังสือ 1 เล่มใช่ไหมคะ แต่หนังสือ... ก็มีผู้แต่งได้แค่คนเดียว แต่เขาแต่งได้หลายเล่มใช่ไหม ความสัมพันธ์ ก็คือผู้แต่ง 1 คน สามารถแต่งหนังสือได้หลายเล่ม แต่ถ้าเราอ่านย้อนกลบัหนังสือหลาย ๆ เล่มนี่มีผู้แต่งได้แค่ 1 คน อันนี้ยกตัวอย่างให้ 1 อันแล้ว ที่เหลือ ลองวาดดูสิ ให้มันได้เหมือนของอาจารย์นี่ ที่เหลือมันควรจะเป็นอย่างไร ลองดูสิ เริ่มให้แล้ว 1 อันที่เหลือลองทำดูก่อน ที่เหลือ หนังสือหลาย ๆ เล่ม จะต้องถุกพิมพ์จาก 1 สำนักพิมพ์เท่านั้นใช่ไหม อันนี้ตามโจทย์ที่อาจารย์กำหนดนะคะ ถ้าเราเอามารวมกันในความสัมพันธ์นะคะ มันอาจจะเขียยนได้เป็นแบบนี้นะคะ ผู้แต่ง 1 คน แต่งหนังสือได้หลายเล่ม และหนังสือหลาย ๆ เล่มจะต้องถูกจัดพิมพ์จาก 1 สำนักพิมพ์เท่านั้น อันนี้คือรูปความสัมพันธ์ที่เกิดขึ้นนะคะ อันนี้ยังง่ายอยู่ พอเห็นภาพขึ้นบ้างไหมนะคะ อันนี้ยังง่าย อันนี้พอเราอ่าน ถ้าเป้นคนที่ไม่มีความรู้ด้านคอมพิวเตอร์มาอ่านงจะเข้าใจนะคะ อันนี้คือการวาดรูป มันเลยจะทำให้เราเข้าใจมากขึ้น จะระเบียบได้ว่าสิ่งที่มันควรจะเป็นในฐานข้อมูลมันควรจะเป็นอย่างไรนะคะ ต่อมา ง่ายแล้วอันนี้ยิ่งง่าย พอเราได้ความสัมพันธ์เราได้ Entity แล้วเราต้องมาเขียนว่าในแต่ละตาราง มันควรจะมีข้อมูลอะไร แล้วอะไรจะเป็นคัแล้วอะไรจะเป็นคีย์หลัก ก็คือค่าที่ห้ามซ้ำกัน ที่เราขีดเส้นน่ะค่ะ เอามาจากตรงไหน มาจากตรงนี้ เรารู้แล่วว่าอันไหนคือชื่อตาราก็คือชื่อ Entity แล้วข้อมูลมีอะไรบ้าง มันก็แค่ เอาข้อมูลที่อาจารย์กำหนดให้นี่ค่ะ ไปใส่ในรูปวงรี ใช่ไหม คือ Attribute แต่มันจะยากก๋คือในแต่ละข้อมูล อะไรจะเป็นคีย์หลัก ก็คือค่าที่ห้ามซ้ำกัน ลองวาดดูอาจารย์เอาให้หมดแล้ว 3 อันนี้ จะต้องมีข้อมูลอะไรบ้าง กำหนดอยู่อันยากก็คือเราจะขีดข้อมูลเส้นใต้ตัวไหน อันนี้ ทำเอง ลองดูสิ มันจะได้รูปเหมือนกับของอาจารย์ไหม ลองทำดู แค่เอาข้อมูลที่อาจารย์กำหนดให้ในสไลด์ก่อนหน้านี้ค่ะ มาใส่ แค่นั้นเอง เดี๋ยวให้ลองทำเองดูว่าเหมือนกันไหม 5 นาทีเหมือนเดิม เดี่ยววันนี้ไม่เสร็จ ให้ 1 ตัวอย่างก่อน มันต้องแบบนี้ อีก 2 อันที่เหลือทำเอง เอาตัวอย่างให้ดูก่อน ได้ตารางหนังสือแล้ว เหลือตารางสำนักพิมพ์กับตารางผู้แต่ง ลองทำดูสอีก 2 อันที่เหลือให้รูปมันออกมาเป็นแบบนี้ ต้องทำอย่างไร ยกตัวอย่างให้ก่อนเดี๋ยวไม่เข้าใจเห็นไหมว่าอาจารย์กำหนดคีย์ด้วยก็คือเราขีดเส้นใต้รหัสหนังสือน่ะ ห้ามซ้ำกัน อีก 2 อันที่เหลือ ต้องห้ามซ้ำกัน แล้วทำไมตารางหนังสืออาจารย์ถึงมีสำนักพิมพ์ด้วย ทำไมต้องมี ต้องมีเพราะว่าเราจะได้รู้ว่าหนังสือเล่มนี้สำนักพิมพ์ไหนเอามาขาย ใช่ไหม อันนี้ไอ้รหัสสำนักพิมพ์นี่คือคีย์นอก ซึ่งเอาไว้เชื่อมโยงไปดูว่าสำนักพิมพ์ชื่ออะไร อยู่ที่ไหน เบอร์โทรศัพท์เบอร์อะไร ไม่มาทั้งหมด เอามาแค่รหัวก็พอ ในการเชื่อมโยงกัน 2 ตารางนะ ลองวาดดูสิ อีก 2 อันที่เหลือในผู้แต่งต้องมีอะไร ในสำนักพิมพ์ต้องมีอะไร ลองวาดดูสิผู้แต่งได้หรือยังเหมือนกันหรือเปล่าอันนี้ง่ายมากเลย ก็เอาข้อมูลที่อาจารย์ให้มาวาดแค่นั้นเองใช่ไหม สำนักพิมพ์ก็เป็นแบบนี้ เพราะอาจารย์ให้ข้อมูลไปหมดแล้ว พอเราวาดเสร็จ ได้องค์ประกอบทุกอย่างรูปที่สมบูรณ์มันเลยเป็นแบบนี้ใช่ไหมจากข้อมูลที่อาจารย์ให้ทั้งหมด พอมาวาดรูปเหมือนกันเลย แค่เอาข้อมูลที่ได้น่ะค่ะ จากตัวหนังสือเป็นยาว ๆ เฟื้อย ๆ เราก็เอามาวาดเป็นรูปแล้วมันจะได้เช็กได้ว่าเราขาดข้อมูลตรงไหนหรือเปล่านะคะ ข้อมูลมันยังสามารถเติมตรงไหนได้อีก มันเป็นไปอย่างที่เราเข้าใจไหม ในตัวของสมมติว่า เขามาจ้างให่้เราออกแบบข้อมูลเข้าใจตรงกันหรือเปล่านะคะ หรือเขาอยากให้เอาข้อมูลอะไรเข้ามาอีก แต่ถ้าเป็นการออกแบบฐานข้อมูลจริง ๆ ที่ใช้กันในชีวิตประจำวัน ถามว่าแค่นี้พอไหม ไม่พอนะคะ อันนี้เป็นแค่ตัวอย่างที่อยากให้คุณทำ ฐานข้อมูลจริง ๆ มันจะเป็นอย่างไร มันจะเป็นแบบนี้เลย เห้นไหมคะว่า ร้านหนังสือร้านหนึ่งมันไม่ได้มีแค่เมื่อกี้ เมื่อกี้มันน้อยมาก แต่ถ้าเราทำงานจริง ๆ ข้อมูลมันจะเยอะขนาดนี้เลยนะคะ ข้อมูลจะเยอะขนาดนี้เลยเพราะฉะนั้น วันนี้มีสิ่งที่ให้นักศึกษาไปทำ อาจารย์กำหนดข้อมูลให้แล้วด้วย ให้วาดรูปเหมือนเมื่อกี้นี้ค่ะที่อจะเป็นการขายคอมพิวเตอร์นะคะ โดยข้อกำหนด คือลูกค้ามีได้หลายคน แล้วก็สามารถวื้อสินค้าได้หลายชิ้นนะคะ แล้วก็ 1 ใบเสร็จรับเงินก็มีสินค้าได้หลายชิ้นเหมือนกันมีชิ้นเดียวได้ไหม ได้ แต่มีมากกว่า 1 ชิ้นก็ได้เหมือนกันนะคะ ในแต่ละใบเสร็จจะต้องมีแคชเชียร์หรือพนังานขายแค่คนเดียวเท่านั้น อันนี้คือเรื่องทั่วไปเลยนะคะ เหมือนเวลาเราไปซื้อของในห้อง คนคิดเงินให้เราก็มีคนเดียวใช่ไหม แล้วก็ต้องมีการแยกประเภทสินค้าด้วยนะคะ เช่นเหมือนเวลาเราไปห้างมันก็จะมีเครื่องครัวอยู่ที่ 1 ของกินอยู่ที่หนึ่ง ใช่ไหม ของกินอยุ่ที่หนึ่ง อันนี้คือการแยก คอมพิวเตอร์ก็เหมือนกันนะคะ โดยที่อาจารย์กำหนดให้แล้วนะคะ ว่ามันควรจะมีตารางอะไรบ้าง มี 5 ตารางนะคะ 5 ตาราง ก็จะเป็นตารางลูกค้า ตารางพนักงานขายตารางรายละเอียดของสินค้า ตารางประเภทสินค้า ตารางใบเสร็จ อันนี้อาจารย์กำหนดให้แล้วนะคะ ว่าควรจะมีข้อมูลอะไรบ้าง ให้เราไปวาดรูปมาทำเอง ใช้หลักการเดียยววกันกับที่อาจารย์ยกตัวอย่างไปนะคะ ลองวาดดูสิว่ารูปที่ได้จะเป็นอย่างไรนะ อันนี้เป็นการบ้าน สำหรับวันนี้ไม่มีอะไรวันนี้ก็ปวดหัวมากแล้ว ถ้าใครจะนั่งวาดรูปต่อก็ได้ แต่ต้องส่ต้องส่งนะคะ ต้องส่ง วันนี้ก็ประมาณนี้ มาครบทุกคน เดี๋ยวให้ไปปวดหัววาดรูปต่อนะ ปกติวาดรูปไม่เคยปวดหัวเท่านี้มาก่อนเลย วันนี้ลองดูที่แน่ ๆ มีกี่ตารางนี่ 5 ตาราง ไปวาดมาสิ ตารางมันควรมีอะไรบ้าง จากที่อาจารย์กำหนดให้ ลองกำหนดเองสิว่ามันต้องมีอะไร แล้วทำส่งอาจารย์ ใส่กระดาษนั่นล่ความสัมพันธ์ให้ครบด้วย อันไหนเป็นค่าที่ห้ามซ้ำกันอย่าลืมขีดเส้นให้อาจารย์ด้วยนะคะ วันนี้ก็ประมาณนี้ค่ะ ขอบคุณมากค่ะ ขอบคุณล่ามด้วย ขอบคุณถอดความด้วยนะคะ โอเคค่ะ เจอกันสัปดาห์หน้าค่ะ