(อาจารย์เกวลี) โอเค สวัสดีค่ะ โอเคค่ะ วันนี้จะเป็นบทที่ 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 กับ Secondary key นะคะ หลังจากที่เราได้ตารางต่าง ๆ แล้วนะคะ ขั้นตอนต่อไป ก็คือในตารางเราจะต้องเก็บข้อมูลหรือ Attribute อะไรบ้าง เช่น ตารางนักศึกษา ต้องเก็บข้อมูลอะไรบ้างเกี่ยวกับนักศึกษา ถ้าพอจำได้ ก็คือตอนเราเข้ามาเรียนเรากรอกข้อมูลเยอะมากตั้งแต่ใบสมัครเลยนะคะ อันนั้นคือ Attribute ที่มหาวิทยาลัยต้องการ ชื่ออะไร นามสกุลอะไร บัตรประชาชนเลขอะไร เกิดวันที่เท่าไร บ้านอยู่ไหน พ่อแม่ชื่ออะไร จบจากโรงเรียนอะไร เกรดเฉลี่ยเท่าไร ปัจจุบันที่ไหน ใครเป็นคนส่งเรียน ได้เงินเดือนเดือนละเท่าไรนะคะ ที่... ใครเป็นผู้ปกครอง เบอร์ผู้ปกครองเบอร์อะไร บางคนผู้ปกครองไม่ใช่พ่อหรือแม่ อาจจะเป็นคุณตาคุณยายนะคะ ที่อยู่ปัจจุบันอยู่ไหน แล้วมาเรียนราชภัฏพักที่ไหน กรอกให้หมด เกรดเฉลี่ยตั้งแต่ ม.4 ม.5 ม.6 เป็นอย่างไร อันนี้คือสิ่งที่มหาวิทยาลัยต้องการรู้เกี่ยวกับพวกคุณ ซึ่งก็คือ Attribute นั่นเองนะคะ โดยหัวของแต่ละคอลัมน์ หรือ Attribute นี่ ควรกำหนดเป็นคำสั้น ๆ ง่าย ๆ อาจจะเป็นตัวย่อก็ได้ แต่ต้องสื่อความหมายนะคะ แล้วก็หลีกเลี่ยงการตั้งชื่อเหมือนกันนะคะ อาจจะเป็นชื่อ ชื่อนี่ บางคนไม่เข้าใจ สรุปใส่ชื่อเล่นหรือชื่อจริง เพราะฉะนั้นต้องกำหนดไปเลยว่าคุณต้องการอะไร ชื่อจริงก็ใส่ชื่อจริง ชื่อเล่นก็ใส่ชื่อเล่น ไม่ใช่คำว่า "ชื่อ" เฉย ๆ แล้วเขาจะรู้ไหมว่าต้องใส่อะไร เขาอาจจะใส่ชื่อเล่นก็ได้นะคะ กำหนดคีย์ภายนอก หรือว่า Foreign Key เป็น Key ที่เอาไว้เชื่อมโยงแต่ละตารางเข้าไว้ด้วยกันนะคะ อย่างเช่น นักศึกษากับอาจารย์นี่ จะเชื่อมโยงกันได้อย่างไร เชื่อมโยงโดยรหัสวิชา เช่น รหัสวิชานี้ใครเรียนบ้าง ใครสอนบ้าง แค่กรอกรหัสเข้าไปก็รู้ได้เลย อันนี้คือการเชื่อมโยงกันของอาจารย์กับนักศึกษาในวิชานั้น ๆ นะคะ โดยที่คีย์นอก หรือ Foreign Key นี่ มันอาจจะเป็นคีย์หลักของตารางอื่นก็ได้นะคะ เดี๋ยวพอวาดรูปก็จะเข้าใจมากขึ้น อันนี้ตอนพูดนี่ อาจจะไม่ค่อยเข้าใจเท่าไร ว่า เอ๊ะ ทำไมมันถึงเชื่อมโยงกันได้นะคะ ขั้นที่ 5 พิจารณาขอบเขตค่าแต่ละค่าที่อยู่ในแต่ละข้อมูลที่เราต้องการนะคะ ก็คือขอบเขตของข้อมูลนั่นล่ะ เช่น ชนิดของข้อมูล เราจะกำหนดเป็นอะไร วันเกิดควรกำหนดเป็นอะไร เงินเดือน มันควรเป็นจำนวนเต็มไหม คุณอยากได้ทศนิยหรือเปล่านะคะ อย่างชื่อ ก็ควรกำหนดเป็นรับข้อมูลเฉพาะตัวอักษรเท่านั้น กรอกเป็นตัวเลขไม่ได้ อันนี้คือสิ่งที่เราต้องกำหนดตั้งแต่ตอนที่ออกแบบฐานข้อมูลเลยนะคะ ความยาวเลขบัตรประชาชนก็ 13 หลักนะคะ เบอร์โทรศัพท์ก็ 10 หลักอะไรแบบนี้ นามสกุลไม่ควรเกิน 35 ตัวอักษร เงินเดือนก็เอาสักไม่เกิน 7 หลัก ประมาณนี้นะคะ รูปแบบข้อมูล บางประเทศมันไม่เหมือนประเทศเรา เขาจะเอาเดือนขึ้นก่อน ตามด้วยวัน ตามด้วยปี คุณก็สามารถกไหนดได้เหมือนกัน เราอยากให้แบบของเราเพื่อดูง่าย ๆ ก็เป็น วัน เดือน ปี ตามกัน อย่างนี้ก็ได้นะคะ กับค่าที่อนุญาตโดยเฉพาะ เช่น ทุกวันที่ 1 กับ 16 ของเดือนเป็นวันหยุด คุณก็สามารถตั้งได้ ว่าในฐานข้อมูล คือ ถ้าสมมติลูกค้า ต้องการจะจองคิวทำอะไรก็ตาม ถ้าเป็นวันที่ 1 กับวันที่ 16 จะไม่อนุญาตให้จอง แบบนี้ก็ได้นะคะ อันนี้ก็ต้องตั้งแต่เราออกแบบเลย ว่าข้อตกลงของเราควรจะเป็นอย่างไรนะคะ อันนี้ก็อธิบายไปแล้วนะ กับอีกอันหนึ่ง สำคัญ ความเป็นหนึ่งเดียว ก็คืออย่างเช่นรหัสนักศึกษาต้องกำหนดเลยว่าต้องห้ามเป็นค่าที่ซ้ำ ซ้ำกันไม่ได้ เราอาจจะกรอกเลขผิดไปตัวหนึ่ง ระบบอาจจะต้องแจ้งเตือน ว่าคุณเลขนี้ใช้ไม่ได้มันซ้ำไปแล้ว กับการเป็นค่า Null ค่า Null ในที่นี้ คือ คุณไม่กรอกข้อมูลได้ไหม บางระบบจะบอกว่าไม่ได้ ถ้าใครเคยกรอกข้อมูลในอินเทอร์เน็ต จะเห็นว่าบางช่องของการกรอกข้อมูลเขาจะมีดอกจันสีแดงกำหนดไว้อยู่ นั่นคือเป็นข้อมูลที่เขาต้องการ คุณจะเว้นว่างไม่ได้นะคะ หรือถ้าต้องการจะเว้นว่าง หรือไม่ตอบเขาจะเรียกอีกอย่างหนึ่งว่า "ค่า Default ปริยาย ถ้าไม่ตอบว่าเงินเดือนเป็นเท่าไรค่าเริ่มต้นคือ 0 แต่เป็นค่าว่างไม่ได้ไม่ตอบไม่ได้ เพราะฉะนั้นเราใส่ไปเลย 0 บาท แบบนี้ก็ได้ แต่ส่วนมากทุกคนก็ต้องกรอกอยู่แล้วนะคะ ขั้นตอนสุดท้าย ก็มาวิเคราะห์ดูว่าแผนภาพที่เราออกแบบนี่ มันสามารถปรับปรุง แก้ไข หรือว่าขยายตัวในอนาคตได้หรือเปล่า เพราะว่าการออกแบบที่ดีนี่ ต้องคำนึงถึงการเปลี่ยนแปลงด้วย ไม่ใช่ว่าตายตัวไปตลอด เกิดสมมติว่าวันนี้คุณอาจเปิดร้านลูกค้าอาจจะไม่ถึง 100 คน แต่ใครจะไปรู้อนาคตคุณอาจจะเป็นธุรกิจที่มันเติบโต มีสาขาไปอีกเป็นร้อยสาขา มีลูกค้าอีกเป็นหมื่นคน แต่ฐานข้อมูลคุณ fix ไว้ว่า อย่างรหัสลูกค้า แค่ 1-100 มันเป็นไปไม่ได้ค่ะ นะคะ ต้องวิเคราะห์ด้วยว่ารหัสลูกค้านี่ มันจะต้องเป็นการเพิ่มขึ้นอย่างอัตโนมัติไปได้เรื่อย ๆ หรือเปล่า หรือคุณจะเป็นคนกรอกเองนะคะ อันนี้ก็ต้องคิดด้วยไม่ใช่ว่าระบบฉันใช้แค่ 10 คนนี่ล่ะ บางที่อนาคตอาจจะไม่ใช่อย่างนั้นนะคะ โดยการสร้างแบบจำลองข้อมูล หรือการวาดแผนภาพนี่ มันจะต้องวิเคราะห์ถึงข้อมูลต้องเก็บในระบบนะคะ อาจจะเกี่ยวกับข้อมูลที่เราจำเป็นต้องเรียกใช้ โครงสร้างที่ รวมถึงถ้ามันมีการเพิ่ม ลบ แก้ไขข้อมูล จะต้องทำที่ตารางไหน ถ้าสมมติว่าข้อมูลในตารางนั้นถูกลบไป มันจะไปกระทบกับข้อมูลในตารางอื่นหรือเปล่านะคะ เช่น วันดีคืนดีอาจารย์ลบชื่อสาขาที่คุณเรียนออก มันจะกระทบกับพวกคุณไหม เป็นนักศึกษาไม่มีสังกัด ทำได้ไหม ไม่ได้นะคะ ก็ต้องดูด้วย เขาเรียกว่า "กฎการคงสภาพของข้อมูล" อยู่ดี ๆ อยากลบ ไม่ได้ เหมือนอยากเปลี่ยนเลขบัตรประชาชนบัตรประชาชนให้เดชมงคลได้ไหม ไม่ได้ เลขมันไม่สวย อยากได้เลข 9 ลงท้ายอะไรอย่างนี้ มันไม่ได้ แต่ชื่อเปลี่ยนได้ไหม เปลี่ยนได้ แต่บางอย่างมันเปลี่ยนไม่ได้นะคะ เช่น รหัสนักศึกษา เลขบัตรประชาชนอย่างนี้ เราต้องวิเคราะห์ด้วย ไม่ใช่ว่าออกแบบไป แล้วใครอยากเปลี่ยนเลขบัตรประชาชนตอนไหนก็ได้ แบบนี้เป็นต้น โดยการเขียนแผนภาพ ER นี่ มันก็จะอธิบายภาพรวมทั้งหมดนะคะ อย่างที่บอกตอนต้น ก็คือมันต้องเข้าใจง่ายนะคะ อาจจะไม่ต้องรู้ว่าข้อมูลที่เรากำลังจะเก็บนี่ เก็บที่ไหน เก็บอย่างไร ไม่จำเป็น แค่วาดออกมาให้ดูก่อนว่า ในฐานข้อมูลต้องมีนะคะ ในแต่ละตารางมีความสัมพันธ์กันอย่างไร ข้อมูลมันจะซ้ำซ้อนกันไหมนะคะ แล้วก็เขียนให้ออกมาดูง่ายที่สุด อย่างที่อาจารย์บอกตคอนแรก แผนภาพการวาดรูปนี่ มันมีหลาย... เขาเรียกว่าอะไรล่ะ หลายมาตรฐานแล้วกัน หนังสือแต่ละเล่มก็เลือกมาใช้ไม่เหมือนกันนะคะ มีทั้งแบบ Chain Model แบบ Craw foot จะคล้าย ๆ กับรอยเท้าของนก รอยเท้าอีกา เขาก็เรียกเป็นรูปแบบรูปแบบหนึ่งนะคะ แต่ที่เราจะใช้กันบ่อย ๆ นะคะ จะเป็นแบบของ Chain Model ตัวช่องสีเหลือง เราจะเลือกตัวใช้แบบนี้ เพราะว่ามันเขียนง่าย มันอ่านง่ายที่สุดนะคะ แต่ถ้าคุณไปเจอหนังสือเล่มอื่น เข้าใช้แบบอื่น ผิดไหม ไม่ผิด อยู่ที่เขาจะเลือกใช้แบบไหนแค่นั้นเองนะคะ สัญลักษณ์ที่ต้องใช้ในการวาดรูปนะคะ สัญลักษณ์สี่เหลี่ยมผืนผ้ามันจะหมายถึงชื่อตารางนะคะ แบบสี่เหลี่ยมข้าวหลามตัดมันจะบอกถึงความสัมพันธ์ของตารางแต่ละตารางนะคะ แล้วคอลัมน์ในแต่ละตารางล่ะนะคะ เราก็จะใส่เป็นรูปวงรี ถ้าคอลัมน์นั้น ๆ เป็นคีย์หลักที่ห้ามซ้ำกัน ในรูปวงรีจะต้องขีดเส้นใต้ด้วย ส่วนด้านข้าง อันนี้จะไม่ค่อยพบเห็นบ่อย แต่เจอในข้อสอบแน่ ๆ นะคะ อันแรกเป็นสี่เหลี่ยมผืนผ้าซ้อนกัน 2 อัน มันหมายถึงตารางนั้นน่ะ เป็นตารางอ่อนแอ หรือ Weak Entity จะต้องพึ่งค่าตารางอื่นเพื่อให้ตารางของมันมีความหมายนะคะ กับต่อมาสี่เหลี่ยมข้าวหลามตัดซ้อนกัน 2 อัน ก็เช่นกันเดียวกันค่ะ เขาจะเรียกว่า "ความสัมพันธ์แบบอ่อนแอ" มันจะต้องไปดึงค่าหรือความสัมพันธ์อื่น ๆ มาทำให้ตัวมันมีความหมายขึ้นมานะคะ วงรีซ้อนกัน 2 วง ก็คือในตารางนี้นี่ ในคอลัมน์นี้หรือในข้อมูลนั้น ๆ นี่ มันอาจจะมีข้อมูลได้มากกว่า 1 ข้อมูล เช่น คุณอาจจะมีเบอร์โทรศัพท์ 3 เบอร์ หรือว่ามีชื่อเล่นพ่อเรียกชื่อหนึ่ง แม่เรียกชื่อหนึ่งก็บอกได้ มีสัตว์เลี้ยงมากกว่า 2 ตัว แต่ละตัวมีชื่อว่าอะไรบ้าง อย่างนี้ก็ได้นะคะ กับวงรีที่เป็นเส้นประ มันหมายถึงว่าค่าข้อมูลในนี้นี่ จะได้มาจากการคำนวณของข้อมูลอื่น ๆ ที่พบบ่อยที่สุด ก็คืออายุ ายุจะได้มาจากการคำนวณวันเกิด ใช่ไหมคะ ะนั้น ไอ้เส้นวงรีปะ ๆ พวกนี้ อายุของเราได้มาจากการกรอกวัน เดือน ปีเกิด นั่นเองนะคะ ให้มันคำนวณให้อัติโนมัติ ผู้ใช้งานไม่ต้องบอกเองว่าอายุเท่าไร ให้ระบบคำนวณให้เลย อายุ 18 ปี 11 เดือน 10 วัน อะไรก็ว่าไปนะคะ อันนี้คือสัญลักษณ์ที่เราใช้บ่อย รูปเดียวกันกับรูปเมื่อกี้นะคะ อันนี้จะอธิบายโดยละเอียด Entity หรือว่าชื่อของตารางนะคะ ก็จะเป็นส่วนในการเก็บข้อมูล รายการแต่ละรายการที่ระบบจัดการฐานข้อมูล หรือเรากำลังจะสร้างระบบขึ้นมานะคะ เช่น สัญลักษณ์นะคะ Entity จะเป็นสี่เหลี่ยมผืนผ้า มีชื่อตารางหรือชื่อ Entity อยู่ข้างในนะคะ เราจะต้องวาดแบบนี้ทุกครั้งนะคะ โดย ตัวอย่าง เช่น ตารางบุคคล บุคคลคืออะไรบ้าง เป็นตารางพนักงาน ตารางผู้ป่วย ตารางบุคลากร ตารางนักศึกษา ตารางลูกค้า อาจจะเป็นข้อมูลเกี่ยวกับสถานที่ ก็จะเป็นตารางเก็บจังหวัด เก็บข้อมูลจังหวัด เก็บข้อมูลอำเภอนะคะ ตารางที่เกี่ยวกับวัตถุ อาจจะเป็นรถยนต์ อาคาร เครื่องจักร สินค้าก็ได้หรืออาจจะเป็นเหตุการณ์ต่าง ๆ ที่เกิดขึ้น เช่น การซื้อ การขาย การรักษาโรค การซื้อการขาย สัญลักษณ์ อย่างที่บอก เป็นสี่เหลี่ยมผืนผ้า มีชื่อ Entity หรือว่าชื่อตารางอยู่ข้างในนะคะ ประเภทของ Entity ก็มีอยู่ 2 ประเภทนะคะ แต่ส่วนใหญ่ที่เราใช้กัน นี่ จะเป็น Entity ทั่วไปนะคะ เป็น Regular ก็ คือ เป็นตารางที่ข้อมูลในนั้นสามารถแยกข้อมูลแต่ละแถวออกได้นะคะ กับอีกอันหนึ่ง คือ Entity อ่อนแอ มันจำเป็นจะต้องใช้ข้อมูลอื่นมาช่วยทำให้ข้อมูลในแถวนั้น ๆ มีคุณค่า หรือมีความหมายขึ้นมานะคะ อันนี้เป็นตัวอย่าง Entity ทั่วไป หรือตารางทั่วไปนะคะ จะสังเกตได้ว่า อย่างข้างบนนี่ อาจารย์เขียนไว้ว่า Entity Student ก็คือตาราง ตารางหนึ่ง ที่มีข้อมูลเกี่ยวกับนักเรียนอยู่ แต่สิ่งที่เราจะเอามาวาดแผนภาพ มันไม่ใช่กรอบสี่เหลี่ยมนี้นะคะ เราจะเอามาแต่ชื่อ เช่น ตาราง Student ก็คือ Entity Student เก็บข้อมูลอะไรบ้าง ก็คือตัวนี้ เราจะวาดแค่นี้ค่ะ เอาสี่เหลี่ยมข้างล่างมาวาด แล้วก็บอกด้วยว่าชื่อตารางอะไรนะคะ อ่อนแอนะคะ อันนี้ก็คือเป็นข้อมูลเกี่ยกับการลงเวลาทำงาน เวลาออกจากงานอันนี้เป็นตัวอย่างของ Entityตารางนี้นะคะ Time stamp ก็คือการลง ข้อมูลที่เข้าทำงาน แล้วก็เวลากลับบ้าน เพราะฉะนั้น 2 ตัวนี้จะต้องเชื่อมโยงกันอยู่แล้ว ถ้าขาดอันใดอันหนึ่งไป เวลา ตารางนี้จะไม่มีความหมายเลย ก็คือมีแต่เวลามาทำงาน แล้วกลับบ้านตอนไหน ไม่รู้ อย่างนี้ไม่ได้นะคะ ก็คือมาทำงาน ก็ต้องมีเวลากลับบ้านตารางนี้จะไม่มีความหมายเลยไม่อย่างนั้นจะรู้ได้อย่างไร ว่าคุณมาทำงานกี่โมงนะคะ อันนี้เป็นตัวอย่างของตารางที่ถ้าขาด หรือมีแต่เวลากลับบ้าน ๆ นี่ ไม่สมบูรณ์ มีปัญหานั่นเองนะคะ อย่างเช่น อันนี้เป็นตัวอย่างข้อมูลใดข้อมูลหนึ่งไป ตารางนักเรียนกับตารางรายวิชานะคะ มีนักศึกษา 2 คน มี 2 วิชา อันนี้เป็นตารางทั่วไป แต่ตารางการลงทะเบียน นักศึกษา มีปีการศึกษา แต่ไม่รู้เลยเขาลงทะเบียนวิชาอะไร ได้ไหม ไม่ได้สมมติว่ามีแต่รหัสเรียนอะไรบ้าง หรือนะคะ รู้รายวิชา รู้ปีการศึกษาไม่อย่างนั้นจะรู้ได้อย่างไรว่า เทอมนี้นะคะ เพราะฉะนั้น ในตารางการลงทะเบียน ถ้าขาดข้อมูลใดข้อมูลหนึ่งไป ตารางนั้นแต่ไม่รู้เลยว่าใครลงทะเบียนเรียน ได้ไหม ก็ไม่ได้อีกนตารางนี่ ก็ไปดึงข้อมูลมาจากคนอื่นทั้งนั้น อันนี้คือตารางอ่อนแอนะคะ ก็คือไม่มีความหมายในตัวเอง จะต้องมีข้อมูลจากตารางอื่นมาช่วยนั่นเองจะเป็นตารางที่ไม่สมบูรณ์ ก็คือพูดง่าย ๆ ก็คือคอลัมน์ในแต่ละตารางน่ะค่ะ ว่าในตารางนั้นมีคอลัมน์อะไรบ้าง ก็คือหัวของคอลัมน์นะคะ นะคะนะคะ นี่แบบนี้ เพราะฉะนั้นนะคะ Attribute นะคะ พนักงาน ชื่อ นามสกุล มีเพศ มีเงินเดือนนะคะ สัญลักษณ์จะเป็นแบบนี้นี่นะคะ ข้อมูลพนักงาน อันนี้ก็คืออย่างข้อมูลพนักงานต้องมีอะไรบ้าง ก็ต้องมีฐานข้อมูลหัวตาราง คอลัมน์ คอลัมน์ คอลัมน์ ซึ่งใน Attribute นี่ก็แบ่ง Entity ใช่ไหมคะ นี่แหละ แต่อาจจะมีสิ่งที่เปลี่ยนกันนิดหนึ่งนะคะ โดย Atribute นี่ ประเภทที่ 1 คือไปอีกเป็น 6 ประเภทนะคนะคะ ช่น เพศ คุณก็ตอบได้แค่เพศเดียว คุณเป็นเพศอะไรคุณก็ตอบตัวนั้น เงินเดือนเดือนที่ 1 เงินเดือนเดือนที่ 2 เงินเดือนเดือนที่ 3 ไม่ใช่ เราตอบค่าเดียว เงินเดือนปัจจุบันเราเท่าไรนะคะ เลขบัตรประชาชนตอบได้ค่าเดียว รหัสนักศึกษาตอบได้ค่าเดียว คุรไม่จำเป็นต้องบอกว่า หรือเป็นข้อมูลโดยทั่วไปนะคะ ต่างจาก Attribute ประเภทที่ 2 คือ Attribute ที่สามารถแบ่งย่อยได้ เช่น ชื่อ นามสกุล เราแยกกันกรอกได้ไหม ตอบได้ค่าเดียว นะคะ ต่อมาเป็น Key Attribute นะคะ ก็เป็นค่าเอกลักษณ์ไพด้ แบ่งเป้นชื่อ คอลัมน์ 1 นามสกุลคอลัมน์ 1 ก็ได้นี้ จะต้องไม่ซ้ำกัน โดยลักษณะเฉพาะของคีย์นะคะ มันจะมีการขีดเส้นใต้ เพื่อแสดงว่ามันเป็นจะต้องไม่ซ้ำกันในตารางนั้น ๆ เหมือนเวลาเราเรียนวิชาใด ๆ ก็ตาม ถ้าอันไหนมีการขีดเส้นใต้ มันเป็นการเน้นใช่ไหมคะ ในวิชาอื่น ๆ ในการวาดรูปก็เหมือนกัน วาดรูปในฐานข้อมูลก็เหมือนกัน ค่าที่ซ้ำกันไม่ได้กับมันนะคะ กับข้อมูลนะคะ ค่านั้นน่ะ เป็นจุดเน้นที่เราจะต้องให้ความสำคัญเพศ คุณจะเป็นเพศไหน คุณระบุมา อาจจะไม่มีแค่ชายหรือหญิง ตอนนี้คุณเป็นเพศอะไรก็ระบุมานะคะ หรือค่าที่มีได้หลายค่าที่มีเพียงค่าเดียวเท่านั้นแต่ละที่ก็จะมีรหัสพื้นที่ไม่เหมือนกัน อย่างเช่นขอนแก่นก็ 043 อุดรธานีก็ 042 ใช่ไหมคะ มันก็ต้องระบุด้วยอย่างนี้นะคะ ถ้าค่าไหนมีได้หลายค่า กรุงเทพฯ ของข้อมูลที่ได้จากการคำนวณเราจะใช้วงรีที่เป็นเส้นปะ เช่น อายุที่ได้มาจากวันเกิดนะคะ หรือว่าวันเข้าทำงาน อย่าลืมเป็นวงรี 2 เส้น กับค่า อย่างนี้ก็ได้นะคะ ค่าที่ได้มาจากการคำนวณนั่นแหละ อันนี้เป็นตัวอย่าง จนถึงปัจจุบันอันไหนเป็น Attribute Attribute คือวงรี ตัวนี้ ตัวนี้ ตัวนี้ แล้วในSimple Attribute แยกให้ออกนะคะ นะคะ ก็คือชื่อตารางนั่นเองนะคะ ตัวอย่างของ Attribut eที่แยกย่อยไปได้ เช่น ชื่อ นามสกุล อาจารย์ก็แยกออกมาเป็น FirstName LastNameสี่เหลี่ยมคืออะไรบรรทัดเดียวเลยก็ได้ หรือคุณอยากจะออกแบบให้มัน บ้านเลขที่บรรทัดหนึ่ง ถนนบรรทัดหนึ่ง ตำบลบรรทัดหนึ่ง อำเภอ จังหวัด แยกออกเลยก็ได้ที่อยู่ บางคนอาจจะกรอกไม่ เหมือนกัน แต่ถามว่าเราลบอันนี้ออกได้ไหม ก็ได้นะคะ เพราะว่ามันจะได้ อย่างนี้ก็ได้นะคะ คีย์ Attribute ค่าที่ห้ามซ้ำกัน ไม่เปลืองเนื้อที่อย่างนี้ก็ได้ แล้วคุณก็กรอกไปเลยชื่ออันหนึ่งรหัสนักเรียน อันนี้มันย่อมาจาก student id นะคะ studentก็คือตารางนักเรียนอะไรที่ห้ามซ้ำกัน ทำไมถึงรู้ว่าเป็น Student_ID เพราะคำย่อแบบนี้ หรือชื่อทุกอย่าง_id ถามว่าอันนี้มันง่ายมันเข้าใจง่ายนี้ว่ามันมาจากอะไร แต่ถ้าเป็นคนที่ไม่มีความรู้พื้นฐานเลย เขาจะรู้ไหมถ้าเอาทุกอย่างมารวมกัน ใน 1 ตาราง สามารถมี Attribute หรือมีรูปแบบข้อมูลได้ทุกรูปแบบก็ได้ อะไร อันนี้เดี๋ยวอีกเรื่องหนึ่ง Attribute ที่สามารถแบ่งย่อยได้ มีทั้ง Attribute ที่นะคะ มีทั้งคีย์หลัก วัน เดือน ปีเกิด เบอร์โทรศัพท์เป็น Multi Value ก็คือมีได้หลายค่าได้มาจากการคำนวณ Attribute แต่เดี๋ยวเราอาจจะยังไม่เข้าใจ เดี๋ยววาดรูปก็น่าจะเข้าใจได้มากขึ้นอันนี้คือตัวอย่างนะคะ ตัวอย่างของมันเป็นความสัมพันธ์ของตาราง 2 ตารางขึ้นไปนะคะ โดยความสัมพันธ์นี่ อาจจะมีข้อมูลนะคะ ต่อมา ความสัมพันธ์นะคะนะคะ เช่น ตารางพนักงาน อันนี้พนักงานนะคะ พนักงาน Work in แปลว่าที่ใช้ร่วมกัน โดยความสัมพันธ์ตัวนี้นี่ จะต้องสามารถอ่านไปข้างหน้า อ่านกลับย้อนหลังก็ได้ อย่างเช่น ตัวอย่าง ก็คือพนักงานทำงานอยู่ทำงานอยู่าในแผนกอะไร ก้คือ Dipartma=entใครทำงานอยู่บ้าง มันจะต้องเข้าใจได้แบบนี้นะคะ หรือการสั่งสินค้า อยู่ในใบสั่งสินค้าตัวไหนในแผนกอะไร ใบสั่งซื้ออะไรก็ต้องดูได้ สินค้าอย่างเช่น power bank อาจจะอยู่ได้ภายในหลายใบสั่งซื้อสินค้าก็ได้ เพราะสินค้าเรามีหลายตัวนะคะ นะคะความสัมพันธ์แบบ 1 ต่อ 1 จะต้องเป็นความสัมพันธ์ที่สมาชิกคนเดียว มีความสัมพันธ์ไปอีกไม่ใช่ว่าขายให้แค่คนเดียว ขายในได้หลายคนนะคะ เช่น เจ้าของรถเป็นเจ้าของรถยนต์ได้ 1 คัน นะคะ อันนี้สมมติ ๆ นะคะ สมาชิกหนึ่ง 1 คัน ใช่ไหมคน 1 คนจะต้องมีเจ้าของคนเดียวนะ ตัวอย่าง แต่ถ้าเปลี่ยนเป็นความสัมพันธ์แบบ 1 และมากกว่า 1 ล่ะ ใครเคยเห็นในทะเบียนรถยนต์ ใบทะเบียนรถยนต์ได้หลายคันใช่ไหม อยู่บ้าน บางคนอาจจะมีรถยนต์มากกว่า 1 คัน อาจจะมีรถนะคะ เช่น คน 1 คน พ่อเป้นเจ้าของรถหมดเลย ก็ได้ แต่ในบรรดารถทุกคัน จะต้องมีเจ้าของคนเดียว อันนี้คือสิ่งที่เราต้องคิดด้วยเก๋ง มีรถกระบะ ๆ จะต้องมีเจ้าของได้คนเดียว กับความสัมพันธ์ที่มากกว่า 1 นะคะ คน ๆ หนึ่ง มีรถได้หลายคนก็จริง แต่่รถคนนั้นลูกค้า 1 คน สมมติเวลาเราไปซื้อของ เราจะต้องซื้อกับแคชเชียร์คนนี้ใช่ไหม เวลาจ่ายเงิน แต่แคชเชียร์คนนี้ก็สามารถเช่นลุกค้าหลายคนรับลูกค้าได้หลายคนเหมือนกัน เหมือนเวลาเราไปเดินห้าง ซื้อของใน Super วัน ๆ หนึ่งเขามีลูกค้านะคะ ไม่จำเป็นต้องจ่ายเฉพาะคนนี้เท่านั้น มีหลายคนเหมือนกัน เพราะฉะนั้นวันนี้เราอาจจะเจอพนักงานคนหนึ่ง พรุ่งนี้หลายคนไหม็เจอลูกค้าหลายคน อันนี้เป็นความสัมพันธ์ที่มากกว่า 1 ภาษาอังกฤษเรียกว่า "Many-to-Many" อันนี้เป็นตัวอย่างอาจจะเจอคนใหม่ก็ได้ เขาก็ไม่ได้เจอเราคนเดียว ที่เชื่อมความสัมพันธ์จะเป็นเส้นตรง มีตัวเลขกำกับเห็นไหมคะ จะมีตัวเลขกำกับด้วย เพราะฉะนั้น เวลาเราลากเส้นเชื่อมความสัมพันธ์ใด ๆ ก็ตาม นะคะ อันนี้เป็นความสำคัญแบบ 1 ต่อ 1 ตัวแทนขายสินค้าดูแลลูกค้าได้ 1 คน จริงไหมจะต้องมีตัวเลข หรือตัวอักษรกำกับทุกครั้ง ตัวแทน 1 คน อาจจะดูแลลูกค้าได้หลายคนก็ได้ ถ้าเป้นลูกค้าหลายคน เราจะแทนด้วยตัว M หรือตัว N ก็ได้นะคะ M หรือ N ก็ได้ ถูกต้องหรือยัง ตัวแทน 1 คน ดูแลลูกค้าได้แต่ต้องใส่ ถ้าว่าหลาย ๆ คนก็ได้รับการดูแลจากตัวแทน 1 คน ก็ถูกนะคะ แบบนี้เป็นต้น มีการใส่คีย์หลัก มีการหลายคน ถูก ต้องใส่ ต้องระบุนะคะ แต่ถ้าเป็นความสัมพันธ์ที่มากกว่า 1 ทั้ง 2 ด้านขีดเส้น เราจะใส่เป็น M M แบบนี้ไม่ได้ ไม่ได้นะคะ ไม่ได้ เป็น N กับ N แบบนี้ได้ไหม ก็ไม่ได้ ต้องเป็น M กับ N กันระหว่างเส้น 2 เส้นนี้นะคะ อันนี้เป็นตัวอย่าง เดี๋ยวพอวาดง่าย ๆ ก่อน อันนี้ ออกสอบ ง่ายมาก อาจารย์อาจจะมีรูปภาพให้ แล้วให้พวกคุณเปลี่ยนเป็นตาราง ง่ายมากเลย น่าจะเข้าใจง่ายขึ้น สี่เหลี่ยมมันคือชื่อตารางใช่ไหมคะ คุณก็เอากรอบสี่เหลี่ยมออกแล้วก็เขียนชื่อตารางนะคะ เสร็จแล้ว หรือถ้าอาจารย์ให้วาดรูปทำอย่างไร จากตารางข้างล่าง ชื่อตรางใช่ไหมคะ วงรี คือ Attribute ก็เป็นคอลัมน์ของตารางแต่ละคอลัมน์ก็เอามาใส่ในวงรี โยงเส้น เสร็จ แค่นั้นเอง อันนี้ออกสอบด้วยนะ ชื่อตารางอย่างนี้ แต่หลักการมีประมาณนี่ล่ะนะคะ กับถ้าสมมติ ว่ามันมีข้อมูลที่นะคะตอนก่อนหน้านี้ ที่อาจารย์ตัดตรงนี้ออก ใช่ไหม เวลาเราเอามาเขียนในรูปแบบมันสามารถแบ่งแยกออกได้นะคะ Attribute ที่อยู่ขอบนอกสุดเท่านั้นนะคะ เราจะเอาเฉพาะข้างนอกสุดมาเขียนลงเป็นตารางของตาราง อันนี้เราจะไม่ใส่ นะคะ กับถ้าตารางไหนมีข้อมูลที่สามารถมีได้หลายค่า เห็นไหม วงรี อันนี้เป็น ดูดี ๆ นะ แยกมาเป็นอีก 1 ตาราง แต่คีย์หลักจะเอามาจากตารางเดิมนะคะ ซ้อนกัน 2 วงเชื่อมโยงกัน โดยค่าคีย์หลักเชื่อมกัน อันนี้เป็นข้อสังเกตก่อนนะ อันนี้ยังเป็นกฎที่ต้องใช้อยู่นะคะ เพื่อให้เ 2 ตารางนี้ มันกับอันไหนที่เป็นค่า เราต้องดูด้วย ว่ามันมีความสัมพันธ์กับตารางไหน ของตารางที่มันมีความสัมพันธ์ด้วยมาใส่ด้วยนะคะถึงบอกว่าตารางด้านขวามือเป็นตารางอ่อนแอ เพราะในตารางนี้อย่างเช่น... เดี๋ยวลบอันนี้ออกก่อน ทำไมวันที่ แต่ถามว่าเป็นของใคร ใครล่ะมาทำงาน 7 โมง กลับมีเวลาทำงาน มีเวลากลับบ้าน ทุ่ม ไม่รู้ เพราะฉะนั้น ต้องไปดูด้วยว่าพนักงานรหัสคนไหนที่เขามาแสกนนิ้วทำงาน หรือตอกบัตรทำงานโมงเย็นรหัสพนักงานด้วยเลยล่ะ มันก็เป็นการซ้ำซ้อนกันไงค่ะ ในเมื่อเรามีรหัสพนักงานอยู่แล้ว เราก็เรียกใช้ได้เลย แต่ถามว่าในตารางนี้ทำไมเราไม่ให้กรอก ถ้าอันไหนซ้ำซ้อนกันเราจะไม่ใช้ เราจะดึงข้อมูลมันมาใช้เลย อันนี้คือข้อดีของการออกแบบฐานข้อมูลนะคะ อันนี้คือตัวอย่างอย่างหนึ่ง เราไม่จำเป็นต้องมาเพิ่มตรงนี้ก็ได้ ถ้าเมื่อกี้นี้ ในรูปนี้อาจารย์ไม่ได้ใส่ความสัมพันธ์ใช่ไหมคะ ยังไม่มีเส้นเชื่อมโยงไปตารางอื่นใช่ไหม แต่ถ้ามันมีเส้นเชื่อมโยงไปตารางอื่นล่ะ กับการเปลี่ยนให้เป็นตารางเราจะต้องเอาคีย์หลัก ไอ้ที่ขีดเส้นใต้นี่ ของตารางด้านข้าง ที่เรามีความสัมพันธ์ด้วย มาใส่นะคะ อันนี้เป็นความสัมพันธ์แบบ 1 ต่อ 1ได้เปรียบอย่างหนึ่ง คือ ในตารางแรกอาจจะเอารหัสลูกค้ามาเป็นคีย์เพื่อเชื่อมต่อกันก็ได้ หรืออาจจะเอารหัสตัวแทนในตารางเรา อันนี้เป็นความพิเศษเฉพาะตารางแบบ 1 ต่อ 1 แต่จะต้องเอาคีย์หลักของตารางที่เรามีความสัมพันธ์ด้วย อาจจะเป็น เลือกมาตารางไหนก็ได้ แต่ต้องมีนะคะนั่นเอง เฉพาะความสัมพันธ์แบบ 1 ต่อ 1 นะคะ แต่ถ้าเป็นความสัมพันธ์แบบ 1 ต่อ กลุ่มนะคะ ต้องมีมาใส่ในตารางที่มีความสัมพันธ์แบบกลุ่มเท่านั้น อันนี้เป็นลักษณะเฉพาะ จะต้องเอาคีย์หลักของฝั่งแต่ถ้าเป็นความสัมพันธ์แบบกลุ่มต่อกลุ่มล่ะ เห็นไหมคะ เป็น M กับ N นะคะ ลักษณะเฉพาะ แต่เราจะสร้างตารางใหม่ขึ้นมา โดยใช้คีย์หลักของทั้ง 2 ตารางที่มีควาสัมพันธ์กันมาสร้างเป็นตารางใเราจะไม่เอาตาราง... หม่เลย กับ กลุ่ม ต่อ กลุ่ม การเอามาสร้างเป็นตารางลักษณะเฉพาะมี 3 แบบ แบบแรก คือ เอาลักษณ 3 อย่างนี้ให้ดีนะคะฝั่งที่่เป็นความสัมพันธ์ที่เป็น 1 เท่านั้นฝั่งไหนก็ได้ ตารางใหม่เลยนะคะ อันนี้คือลักษณะเฉพาะของการเปลี่ยนรูปภาพให้เป็นตารางนะคะ เดี๋ยวจะมีให้ทำด้วย บางคนจะจำไม่ได้ เราจะมาลองวาดรูปกัน ให้... น่าจะเคยไปร้านหนังสือกัน หรืออาจจะเคยเห็นหนังสืออยู่แล้วนะการออกแบบนะคะ อันนี้พูดไปแล้วจะมีอะไรบ้าง แน่นอนข้อมูลหนังสือแต่ละเล่ม ก็จะมีรหัสหนังสือนะ นะคะรหัสสำนักพิมพ์ อันนี้คือข้อมูลที่อาจารย์ให้ก่อนนะ เดี๋ยวเรามาวาดรูปกัน ในข้อมูลของคนแต่งมีชื่อหนังสือ นะคะ มีชื่อผู้แต่งหนังสือ ในข้อมูลสำนักพิมพ์ก็จะมีรหัสสำนักพิมพ์ มีชื่อสำนักพิมพ์มีที่อยู่ มีเบอร์โทรศัพท์นะคะ หนังสือมีอะไรบ้าง ในระบบร้านหนังสือ ก็คือข้อมูลที่อาจารย์ให้เมื่อกี้ มันจะมีข้อมูลหนังสือนะคะ มีข้อมูลคนแต่ง มีข้อมูลขั้นตอนแรก ศึกษาก่อน พลอย โอเค ขั้นตอนต่อมา กำหนด Entity เดี๋ยวจะให้ทำเอง ก็คือสำนักพิมพ์มีกี่ Entity หรือกี่ตาราง ทำสิ ใช้สัญลักษณ์ให้ถูกด้วยนะคะ เดี๋ยวอาจารย์จะเดินดู ทำเลย ในข้อมูลที่อาจารย์ให้ ข้อมูลตัวหนังสือสีดำ ๆ นี่ ดำ ๆ เข้ม ๆ นี่ เราควรมีกี่ตาราง วาดรูป นี่ วาดรูปนี่ จากข้อมูลนี้วาดแบบนี้ ให้วาดรูป ให้เอาข้อมูลน่ะ มาวาดเป็นรูปแบบนี้ แต่อย่างแรกเลย ดูก่อนว่าข้อมูลที่อาจารย์ให้นี่ มันควรแบบนี้ จะให้วาดแบบนี้ สัญลักษณ์ของตาราง หรือ Entityจะมีกี่ตาราง มันควรจะมีสี่เหลี่ยมผืนผ้ากี่อัน แล้วในสี่เหลี่ยมผืนผ้าจะต้องเขียนว่าอะไร ลองทำดู ก็คือ สี่เหลี่ยมผืนผ้า สรุปแล้วมีกี่ตาราง อันนี้ยังไม่ยากตัวหนังสือสีดำเข้มไว้ เราจะได้ 3 ตาราง ในกรอบสี่เหลี่ยม มีตารางผู้แต่ง มีตารางหนังสือ มีอันนี้ง่ายมาก นะคะ จากโจทย์ที่อาจารย์กำหนดให้นะ ที่อาจารย์เน้นให้ อันนี้จะให้ทำเองตารางสำนักพิมพ์ มันจะต้องกำหนดความสัมพันธ์นี่ ๆ ความสัมพันธ์ ก็คือ เส้นที่โยง 3 อันนี้ เราจะโยงเส้นมันอย่างไร หลังจาก เราได้ตารางหรือ Entity แล้วนะคะอย่างไร สิ่งที่มันควรจะเป็น ก็คือหนังสือแต่ละเล่มจะถูกพิมพ์จากสำนักพิมพ์ใดสำนักพิมพ์หนึ่งเท่านั้น ใช่ไหม โดยความสัมพันธ์ของแต่ละอัน มันควรจะเป็นพิมพ์ เขาก็สามารถพิมพ์หนังสือได้หลายเล่มนะ อันนี้คือเงื่อนไข ๆ หนังสือแต่ละเล่มแต่ว่าใน 1 สำนักคนเดียวเท่านั้นแต่ในโลกของความเป็นจริงนี่ หนังสือนี่ มันอาจจะมีแต่ละเล่มกำหนดว่าจะต้องมีคนแต่งอาจารย์ให้ อาจารย์ให้หนังสือ 1 เล่ม มีคนแต่งแค่คนเดียวเท่านั้น อันนี้คือโจทย์ที่อาจารย์กำหนดนะคะ แต่ว่าผู้แต่งหนังสือแต่ละคนคนแต่งช่วยกันก็ได้นะ อันนี้คือข้อกำหนดที่อาจารย์กำหนดให้นะคะ เขาก็สามารถแต่งหนังสือได้หลายเล่มเหมือนกันให้ความสัมพันธ์แต่ละอันอย่างไร ก็คือการวาดนี่ ๆ วาดแบบนี้ แล้วเราจะความสัมพันธ์มันจะเป็นแบบนี้นี่ จากโจทย์ตัวนี้นะคะ จากโจทย์ตัวนี้ อันนี้คือความสัมพันธ์ลองวาดดูสิ ไอ้ 3 อันนี้ มันจะต้องสัมพันธ์กันอย่างไรลองวาดดูว่าอย่างไร ลองใส่ดู เดี๋ยวให้เวลา 5 นาทีจะต้องออกมาเป็นแบบนี้นะคหรือเปล่า 5 นาทีเดี๋ยวดูกัน ลองดูสิว่า สิ นะคะ เดี๋ยวลบอันนี้ก่อน ให้ตัวอย่าง 1เดี๋ยวเอาตัวอย่างให้ดูเลย ที่เหลือจะได้ลองทำดูผู้แต่ง 1 คน ในโจทย์ที่อาจารย์บอก แต่งหนังสือ 1 เล่มใช่ไหมคะ แต่หนังสือ... นี่ ก็มีผู้แต่งได้แค่คนเดียว แต่เขาแต่งได้หลายเล่มใช่ไหม อันก่อน ให้วาดแบบนี้ค่ะ แต่งหนังสือได้หลายเล่ม แต่ถ้าเราอ่านย้อนกลับ หนังสือหลาย ๆ เล่มนี่ มีผู้แต่งแค่ 1 คนความสัมพันธ์ ก็คือผู้แต่ง 1 คน สามารถ ที่เหลือ ลองวาดดูสิ ให้มันได้เหมือนของอาจารย์นี่ ที่เหลือมันควรจะเป็นอย่างไร ลองดูสิ เริ่มให้แล้ว 1 อัน ที่เหลือลองทำดูก่อน หนังสือหลาย ๆ เล่ม จะต้องถูกพิมพ์จาก 1 สำนักพิมพ์เท่านั้น ใช่ไหม อันนี้ตามโจทย์ที่อาจารย์กำหนดที่เหลือมารวมกันในความสัมพันธ์นะคะ มันอาจจะเขียนได้เป็นแบบนี้นะคะ ผู้แต่ง 1 คน แต่งหนังสือได้หลายเล่มนะคะถูกจัดพิมพ์จาก 1 สำนักพิมพ์เท่านั้น อันนี้คือรูปความสัมพันธ์ที่เกิดขึ้นนะคะ อันนี้ยังง่ายอยู่ อันนี้ยังง่าย อันนี้พอเราอ่านถ้าเป็นคนที่ไม่มีความรู้ด้านคอมพิวเตอร์มาอ่านพอเห็นภาพขึ้นบ้างไหมมันเลยจะทำให้เราเข้าใจมากขึ้น จะระเบียบความคิดของเราได้ว่า สิ่งที่มันควรจะเป็นในฐานข้อมูลมันควรจะเป็นอย่างไรนะคะ เขาก็จะเข้าใจนะคะ อันนี้ยิ่งง่าย พอเราได้ความสัมพันธ์ เราได้ Entity แล้ว เราต้องมาเขียนว่าในต่อมา แล้วอะไรจะเป็นคีย์หลัก ก็คือค่าที่ห้ามซ้ำกันที่เราขีดเส้นน่ะค่ะ เอามาจากตรงไหน มาจากแต่ละตาราง มันควรจะมีข้อมูลอะไร ง ก็คือชื่อ Entity แล้วข้อมูลมีอะไรบ้าง มันก็แค่เอาข้อมูลที่อาจารย์กำหนดให้นี่ค่ะ ไปใส่ในรูปวงรีตรงนี้ในแต่ละข้อมูล อะไรจะเป็นคีย์หลัก ก็คือค่าที่ห้ามซ้ำกัน ลองวาดดู อาจารย์เอาให้หมดแล้วใช่ไหม คือ Attribute อันยาก ก็คือเราจะขีดข้อมูลเส้นใต้ตัวไหน อันนี้ บอกไปแล้ว ทำเอง3 อันนี้ จะต้องมีข้อมูลอะไรบ้าง กำหนดอยู่กับของอาจารย์ไหม ลองทำดู แค่เอาข้อมูลที่อาจารย์กำหนดให้ในสไลด์ก่อนหน้านี้ค่ะ ลองดูสิเหมือนกันไหม 5 นาที เหมือนเดิม มาใส่ แค่นั้นเอง มันต้องแบบนี้ อีก 2 อันที่เหลือทำเอง เอาตัวอย่างให้ดูก่อน ได้ตารางหนังสือแล้วเดี่ยววันนี้ไม่เสร็จ ให้ 1 ตัวอย่างก่อนอีกสิ อีก 2 อันที่เหลือให้รูปมันออกมาเป็นแบบนี้ ต้องทำอย่างไรยกตัวอย่างให้ก่อน เดี๋ยวไม่เข้าใจ เหลือตารางสำนักพิมพ์กับตารางผู้แต่ง ก็คือเราขีดเส้นใต้ รหัสหนังสือน่ะ ห้ามซ้ำกัน อีก 2 อันที่เหลือเห็นไหมว่าอาจารย์กำหนดคีย์ด้วยด้วย ทำไมต้องมี ต้องมีเพราะว่าเราจะได้รู้ว่าหนังสือเล่มนี้สำนักพิมพ์ไหนเอามาขาย อันไหนต้องห้ามซ้ำกัน คือคีย์นอก ซึ่งเอาไว้เชื่อมโยงไปดู ว่าสำนักพิมพ์ ใช่ไหม จำเป็นต้องเอาข้อมูลมาทั้งหมด เอามาแค่รหัสก็พอ ในการเชื่อมโยงกัน 2 ตารางนะ ลองวาดดูสิ อีก 2 อันที่เหลือ ในผู้แต่งชื่ออะไร อยู่ที่ไหน เบอร์โทรศัพท์เบอร์อะไรต้องมีอะไร ในสำนักพิมพ์ต้องมีอะไร เหมือนกันหรือเปล่า อันนี้ง่ายมากเลย ก็เอาข้อมูลที่อาจารย์ให้มาวาดแค่นั้นเอง ใช่ไหม สำนักพิมพ์ผู้แต่งได้หรือยัง เพราะอาจารย์ให้ข้อมูลไปหมดแล้ว พอเราวาดเสร็จได้องค์ประกอบทุกอย่าง ก็เป็นแบบนี้มันเลยเป็นแบบนี้ใช่ไหม จากข้อมูลที่อาจารย์ให้ทั้งหมด พอมาวาดรูป เหมือนกันเลย แค่เอาข้อมูลรูปที่สมบูรณ์เราก็เอามาวาดเป็นรูป แล้วมันจะได้เช็กได้ ว่าเราขาดข้อมูลตรงไหนหรือเปล่านะคะ ข้อมูลมันยังสามารถเติมตรงไหนที่ได้น่ะค่ะ จากตัวหนังสือ ไหม ในตัวของ... สมมติว่าเขามาจ้างให้เราออกแบบ ข้อมูลเข้าใจตรงกันหรือเปล่านะคะ หรือเขาอยากให้เอาข้อมูลอะไรเข้ามาอีกได้อีกการออกแบบฐานข้อมูลจริง ๆ ที่ใช้กันในชีวิตประจำวัน ถามว่าแค่นี้พอไหม ไม่พอนะคะ อันนี้เป็นแค่ตัวอย่างที่อยากให้คุณทำ ฐานข้อมูลจริง ๆ มันจะเป็นอย่างไร ร้านหนังสือร้านหนึ่งมันไม่ได้มีแค่เท่าเมื่อกี้นี้ เมื่อกี้มันน้อยมาก แต่ถ้าเราทำงานจริง ๆ ข้อมูลมันจะมันจะเป็นแบบนี้เลย เห้นไหมคะว่า เพราะฉะนั้น วันนี้มีสิ่งที่ให้นักศึกษาไปทำ อาจารย์กำหนดข้อมูลให้แล้วด้วย เยอะขนาดนี้เลยนะคะ ข้อมูลจะเยอะขนาดนี้เลยอาจารย์ยกตัวอย่าง แต่คราวนี้จะเป็นการขายคอมพิวเตอร์ แต่ข้อกำหนด นะคะ โดยข้อกำหนด คือ ให้วาดรูปเหมือนเมื่อกี้นี้ค่ะ สามารถซื้อสินค้าได้หลายชิ้นนะคะ แล้วก็ 1 ใบเสร็จรับเงินก็มีสินค้าได้หลายชิ้นเหมือนกัน มีชิ้นเดียวได้ไหม ลูกค้ามีได้หลายคนนะคะ ในแต่ละใบเสร็จจะต้องมีแคชเชียร์หรือพนังานขายแค่คนเดียวเท่านั้นได้ ซื้อของในห้าง คนคิดเงินให้เราก็มีคนเดียวใช่ไหม แล้วก็ต้องมีการแยกประเภทสินค้าด้วย อันนี้คือเรื่องทั่วไปเลยนะคะมันก็จะแยกกัน เครื่องครัวอยู่ทีหนึ่ง ของกินนะคะ เช่น อันนี้คือการแยก คอมพิวเตอร์ก็เหมือนกันนะคะ โดยที่อาจารย์กำหนดให้แล้วนะคะ อยู่ที่หนึ่ง ใช่ไหม มี 5 ตารางนะคะ 5 ตาราง ก็จะเป็นตารางลูกค้า ตารางพนักงาน ขาย ตารางรายละเอียดของสินค้า ว่ามันควรจะมีตารางอะไรบ้างอาจารย์กำหนดให้แล้วนะคะ ว่าควรจะมีข้อมูลอะไรบ้าง ให้เราไปวาดรูปมาตารางประเภทสินค้า ตารางใบเสร็จ เมื้อกี้นี้นะคะ ลองวาดดูสิ ว่ารูปที่ได้จะเป็นอย่างไรนะ อันนี้เป็นการบ้าน ทำเองแล้ว ถ้าใครจะนั่งวาดรูปต่อก็ได้ แต่ต้องส่งนะคะ ต้องส่ง วันนี้ก็ประมาณนี้ มาครบทุกคน เดี๋ยวสำหรับวันนี้ไม่มีอะไร วาดรูปไม่เคยปวดหัวเท่านี้มาก่อนเลย วันนี้ลองดู ที่แน่ ๆ มีกี่ตารางนี่ 5 ตาราง ไปวาดมาสิให้ไปปวดหัววาดรูปต่อนะลองกำหนดเองสิว่ามันต้องมี ว่าในตารางมันควรมีอะไรบ้างนแหละ วาดมา ใส่ความสัมพันธ์ให้ครบด้วย อันไหนเป็นค่าที่ห้ามซ้ำกันอย่าลืมขีดเส้นให้อาจารย์ด้วยนะคะ วันนี้ก็อะไร แล้วทำส่งอาจารย์ถอดความด้วยนะคะ โอเคค่ะ เจอกันสัปดาห์หน้าค่ะ ประมาณนี้ค่ะ ขอบคุณมากค่ะ ขอบคุณล่ามด้วย ขอบคุณ