(อาจารย์เกวลี) วันนี้จะเป็นเนื้อหาบทที่ 2 นะคะ จะเกี่ยวข้องกับสถาปัตยกรรมของฐานข้อมูล แล้วก็ทฤษฎีเกี่ยวกับแบบจำลองข้อมูลนะคะ ข้อมูลที่เราใช้อยู่ปัจจุบันนี่ บางทีทุกคนก็จะ ไม่รู้ว่าทำไมเราต้องเก็บ เหมือนนักศึกษา 1 คนทำไมต้องถามด้วยล่ะ ว่าเราชื่ออะไร นามสกุลอะไร เรียนจบที่ไหนมานะคะ เกรดเฉลี่ยตอนจบ ม.6 หรือจบสายอาชีพ ได้เกรดเฉลี่ยเท่าไร เทอมที่แล้วเราเรียนไปกี่วิชานะคะ ได้คะแนนเท่าไร ได้เกรดเท่าไร ทำไมต้องดเก็บแบบนี้นะคะ ทุกอย่างก็จะมีเหตุมีผล เพราะว่า ข้อมูลทุกรูปแบบนี่ มันก็จะมีเนื้อหาความสำคัญ ของชุดข้อมูลนั้น ๆ อยู่นะคะ โดยที่เราจะเรียกสิ่งนั้น ๆ ว่า แนวคิดเกี่ยวกับการออกแบบฐานข้อมูล หรือว่าสถาปัตยกรรมของฐานข้อมูลนะคะ มันก็จะเป็นข้อกำหนด แล้วก็ข้อตกลง รวมถึง ขอบเขต หรืออาจจะเป็นกรอบความคิดนะคะ ในการบรรยายว่าฐานข้อมูลนั้น ๆ ควรจะเป็นอย่างไรนะคะ โครงสร้าง ก็คือข้อมูลที่เราจะเก็บมีอะไรบ้าง ส่วนประกอบที่เอามาประกอบกัน จนเป็นระบบฐานข้อมูลมีอะไรนะคะ โดยที่สถาปัตยกรรมฐานข้อมูลนี่ มันจะมีส่วนประกอบสำคัญอยู่ 3 ส่วนนะคะ ก็คือ ในตัวของสถาปัตยกรรมระบบเองนะคะ และก็ความเป็นอิสระของข้อมูลนะคะ เดี๋ยวจะอธิบายว่าแต่ละอันคืออะไร กับภาษาที่ใช้ในการจัดการฐานข้อมูลนะคะ 3 อย่างนี้จะต้องทำงานร่วมกัน โดยสถาปัตยกรรมของฐานข้อมูลนี่ มันจะเป็นเหมือนกับขอบเขตนะคะ หรือกรอบ ถ้าเป็นภาษาทางเชิงวิชาการ เรียกว่า "กรอบ" ที่ใช้ประโยชน์ในการบรรยายว่า ทำไมเราถึงสร้างฐานข้อมูลแบบนี้ ทำไมเราถึงเก็บข้อมูลแบบนี้ และในฐานข้อมูลนี่ เรามีโครงสร้างเก็บข้อมูลแบบไหนบ้างนะคะ ซึ่งหลัก ๆ แล้วนี่ โครงสร้างที่ใช้ในการสร้าง ฐานข้อมูลนี่ มันจะมีอยู่ 3 ระดับนะคะ มีระดับภายนอก ระดับภายใน แล้วก็ระดับแนวคิด เดี๋ยวจะอธิบายไปทีละอย่างทีละอย่างนะคะ ความเป็นอิสระของข้อมูลคืออะไรนะคะ ก็คือการที่ผู้ใช้งานสามารถเปลี่ยนแปลงข้อมูล อาจจะเป็นในระดับของการออกแบบฐานข้อมูล หรือระดับ ถึงขั้นการเก็บข้อมูลแล้วก็ได้ โดยที่ถ้าเรามีการเปลี่ยนข้อมูล หรือเปลี่ยนแปลงรูปแบบการจัดเก็บข้อมูล โปรแกรมที่ใช้งาน จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนะคะ โปรแกรมก็อยู่ส่วนของโปรแกรม ข้อมูลก็อยู่ส่วนของข้อมูล จะแยกออกจากกันนะคะ โดยที่ผู้ใช้งานนี่จะมองเห็นแค่ว่า การเก็บข้อมูลระดับภายนอก ก็คือเราเก็บข้อมูลอะไรบ้างนะคะ เหมือนเวลาคุณอยากเล่น TikTok อยากเล่น Facebook อยากเล่น Instagram เขาจะถามว่าคุณชื่ออะไร มีอีเมลหรือเปล่ มีเบอร์โทรศัพท์ไหม มีรูปโปรไฟล์เป็นรูปอะไร อันนี้คือ ข้อมูลระดับภายนอก ที่ผู้ใช้งานอย่างเรา ๆ นี่ เป็นคนให้ข้อมูลไป แล้วก็เป็นสิ่งที่เราเป็นคนเห็นเองว่า ข้อมูลที่กรอกลงไปนี่มีข้อมูลอะไรบ้างนะคะ แต่ถามว่าเราอยากเปลี่ยนแปลงได้ไหม ว่านอกจากรูปภาพนี่ อยากให้เขาขอเกี่ยวกับ อะไรดีล่ะ สถานะการเรียน เราจะไปบอกเขาว่าอยากบอก อยากให้เพิ่มเมนูตรงนี้ได้ไหม เราทำไม่ได้นะคะ เพราะอันนั้นเป็นระดับโครงสร้าง ระดับแนวคิด ระดับภายใน ซึ่งผู้ใช้งานธรรมดานี่จะแก้ไขไม่ได้นะคะ โดยที่ เพราะฉะนั้นนี่ สมมติเรามีการเปลี่ยนแปลงข้อมูล เราจะเรียกว่าเปลี่ยนแปลงข้อมูลในระดับที่ต่ำ ก็คือข้อมูลส่วนตัวเรานี่แหละนะคะ ถ้าเราเปลี่ยนแปลงเฉพาะข้อมูลเราตัวเองนี่ มันจะไม่กระทบกับคนอื่น รวมถึงไม่ได้กระทบกับ Facebook ไม่ได้กระทบกับ Instagram TikTok เขาก็ยังใช้งานปกติได้ ถึงแม้ว่าคุณจะบอกว่า เปลี่ยนแปลง อาจจะเปลี่ยนแปลงรูปโปร์ไฟล์ ถามว่าโปรแกรมมันจะพังไหม ไม่นะคะ อันนี้คือการเปลี่ยนแปลงระดับต่ำ ก็คือเป็นการเปลี่ยนแปลง ของผู้ใช้งานโดยตรงนะคะ ความเป็นอิสระของข้อมูลเชิงตรรกะ ก็คือการเปลี่ยนแปลงมุมมองของผู้ใช้งาน อย่างเช่น คุณอยากจะ วันนี้เราอัปรูปไป 4 รูปนะคะ คุณอยากจะสลับตำแหน่งนะคะ ย้ายจากรูปสุดท้ายมารูปที่ 1 ถามว่า โปรแกรมนั้นจะพังไหม ไม่พังนะคะ เพราะมันเป็นถือว่าเป็นการเปลี่ยนแปลงภายนอก ไม่ได้เปลี่ยนแปลง Code โปรแกรม ไม่ได้บอกให้ผู้ดูแลระบบลบเมนูตรงนี้ออก ไม่ใช่นะคะ อันนี้ก็คือถ้าผู้ใช้งาน อยากเปลี่ยนแปลง ข้อมูลส่วนตัวของตัวเองอย่างนี้ ก็ใช้งานได้เลยนะคะ ไม่กระทบกับคนอื่น ไม่กระทบกับระบบโดยรวมนะคะ รวมถึง ความเป็นอิสระของข้อมูลเชิงกายภาพนะคะ ถ้าสมมติว่าวันหนึ่ง Facebook ย้ายเครื่องคอมพิวเตอร์ในการเก็บข้อมูลคนใช้งาน ถามว่าย้ายจากเครื่องหนึ่งไปอีกเครื่องหนึ่ง ถามว่าเรายังใช้ Facebook ได้ไหม ใช้ได้ มันไม่กระทบกับเรานะคะ มันถือว่าเป็นโครงสร้าง ของข้อมูลระดับภายใน ก็คือผู้ให้บริการ เขาอาจจะมีการปรับเปลี่ยน ย้ายจากเครื่อง A ไปยังเครื่อง B แต่ผู้ใช้งานก็ยังสามารถทำงานได้ตามปกติ ไม่ได้รู้สึกถึงความผิดปกติใด ๆ อาจจะมีช่วงที่แบบ Restart เครื่องของ ตัว Server ของเขาบ้าง อะไรอย่างนี้นะคะ แต่ถามว่า Facebook เราหายไปไหม ไม่หายนะคะ อันนี้คือตัวอย่างคร่าว ๆ ว่าเชิงตรรกะเป็นอย่างไร เชิงกายภาพเป็นอย่างไร ต่อมา ภาษาหลักของระบบจัดการฐานข้อมูลนะคะ ก็จะมีอยู่ 3 ภาษาหลัก ๆ นะคะ อันนี้หมายถึงว่าภาษาเชิงโครงสร้างที่ใช้นะคะ ไม่ได้หมายถึงชื่อภาษาทางโปรแกรม อันแรก คือ ภาษาสำหรับนิยามข้อมูลนะคะ ก็จะเป็นภาษาที่ใช้ในการกำหนดโครงสร้าง ของฐานข้อมูลนะคะว่า ระดับแนวคิดก็คือคุณวางแผนไว้ว่าอย่างไร อย่างเช่น อาจารย์อาจจะ พอคุณเรียนปีสูง ๆ ขึ้น จะต้องได้ทำ Project อาจจะเขียนโปรแกรมเป็นของตัวเอง สมมติว่าได้ทำโพรเจกต์เกี่ยวกับร้านขายหนังสือ ในร้านหนังสือร้านหนึ่ง เราจะต้องเก็บข้อมูลอะไรบ้าง เราต้องเขียนออกมาให้ได้นะคะ สิ่งนี้เราจะเรียกว่า "ระดับแนวคิด" เราจะมาให้ความหมายว่าในฐานข้อมูลเรานี่ ระหว่างผู้ใช้งาน สมาชิก เจ้าของร้าน สามารถทำอะไรได้บ้าง สิ่งเหล่านี้ จะเรียกว่า "View" นะคะ หรือว่ามุมมองของผู้ใช้งานแต่ละคน เอาง่าย ๆ ยกตัวอย่างอีกแล้ว Facebook Facebook ในหน้าที่คุณดู กับหน้าที่เพื่อนดูอาจจะไม่เหมือนกัน ใน Facebook เราสามารถกำหนดได้ว่า รูปนี้ฉันจะเก็บไว้ดูคนเดียว หรือรูปนี้จะให้เพื่อนดูได้ รูปนี้จะให้ใครก็ได้มาดู ไม่ได้ปิดกั้น อย่างนี้ก็มี อันนี้คือการกำหนดสถานะ ของมุมมองในการดูข้อมูลของเรานะคะ เราจะกำหนดตั้งแต่ การกำหนดโครงสร้างของฐานข้อมูลเลยว่า ผู้ใช้งานแต่ละคนดูข้อมูลส่วนไหนได้บ้างนะคะ ต่อมาเป็นภาษาในการจัดการข้อมูล อันนี้จะเป็นภาษาเชิง Programming ซึ่งไว้สำหรับการจัดการข้อมูล ภายในฐานข้อมูลนะคะ ก็จะเป็นตั้งแต่การค้นหาข้อมูล การเพิ่ม การลบ การแก้ไขข้อมูลในฐานข้อมูลนะคะ อันนี้ก็จะสามารถทำได้ตามสิทธิ์ ของผู้ใช้งานแต่ละคน บางคนค้นหาได้ แต่เพิ่มไม่ได้ บางคนเพิ่มได้ แต่ห้ามลบนะคะ อันนี้ก็เป็นคำสั่งที่ใช้ภายในฐานข้อมูล ต่อมา เป็นภาษาควบคุมนะคะ มันจะเป็นภาษาที่เอาไว้สำหรับ การควบคุมความถูกต้องของข้อมูล เช่น อะไรบ้าง อย่างเช่น อาจารย์ให้คุณ กรอกชื่อนะคะ กรอกชื่อ แต่ว่านักศึกษาบางคนลืมเปลี่ยนภาษา หรือลืมเปลี่ยนปุ่ม หรือเปิดปุ่มตัวเลขไว้นะคะ กลายเป็นว่าพิมพ์ชื่อตัวเองเป็นตัวเลข ภาษาระดับควบคุม ก็คือ มันจะเป็นการตรวจสอบว่าข้อมูลที่นักศึกษาใส่มา ถูกหรือผิด เช่น อาจารย์กำหนดให้ กรอกได้เฉพาะตัวหนังสือเท่านั้น ใส่ตัวเลขไม่ได้นะคะ หรือการเกิดภาวะพร้อมกัน อย่างเช่น จองตั๋วคอนเสิร์ต ดังมาก เข้ามาจองพร้อมกันสัก 50,000 คน เราจะมีการจัดการคน 50,000 คน อย่างไรนะคะ ให้สามารถทำงานได้ อันนี้คือการเกิดภาวะพร้อมกัน ก็คือ เข้ามาใช้งานระบบพร้อม ๆ กันทั้งหมดนะคะ โดยสถาปัตยกรรมฐานข้อมูลนี่ มันก็จะมีการศึกษาทั้งโครงสร้าง องค์ประกอบหลักของระบบ นะคะ ทั้งฐานข้อมูล หน้าที่แต่ละองค์ประกอบ แต่ละคน แต่ละผู้ใช้งานนะคะ รวมถึงการเขียนโปรแกรมเพื่อสื่อสาร แล้วก็ติดต่อกับส่วนอื่น ๆ นะคะ ในระบบฐานข้อมูลอาจจะไม่ได้ มีแค่โปรแกรมเดียวที่ทำงานนะคะ อาทิตย์ที่แล้วเคยบอกแล้วว่าระบบบัญชี ระบบบุคคล ระบบการเงิน ก็ใช้ฐานข้อมูลร่วมกันนะคะ โดยที่ถ้าสมมติว่า เรามีการเปลี่ยนแปลงโปรแกรมนะคะ โครงสร้างของฐานข้อมูลจะยังอยู่นะคะ ข้อมูลจะไม่หายไปไหน เพราะเราเปลี่ยนแค่ตัวโปรแกรม เราไม่ได้เปลี่ยนทั้งโครงสร้างนะคะ ถ้าสมมติว่าเปลี่ยนโปรแกรมใหม่ มันก็จะมีการเชื่อมต่อที่ทำให้ ข้อมูลมันสามารถทำงานได้นะคะ โดยระบบฐานข้อมูลนี่ มันก็จะเป็นการเอาข้อมูลที่มีอยู่ในองค์กร หรือข้อมูลที่เราต้องการจะเพิ่มเติมนะคะ ที่มีความเกี่ยวข้องกันมารวมไว้ที่เดียวกันนะคะ โดยผู้ใช้งานในฐานข้อมูลนี่ จะมองมุมมองหรือ View ที่แตกต่างกันไปตามสิทธิ์ของการใช้งานนะคะ โดยที่ผู้ใช้งานนี่ไม่จำเป็นต้องรู้ว่าเรา... ถ้าสมมติว่าคุณเป็นผู้ใช้งานทั่วไป เขาจำเป็นจะต้องรู้ไหมว่า โปรแกรมเมอร์เขียนโปรแกรมอย่างไร โปรแกรมเมอร์ใช้วิธีอะไรในการแสดงภาพ โปรแกรมเมอร์ทำอย่างไรให้เราดู YouTube ได้ อันนี้ไม่จำเป็นต้องรู้นะคะ โดยที่ของสิ่งเหล่านี้มันสามารถ ซ่อนรายละเอียดไว้ได้ แต่ถามว่า ให้แสดงออกมาได้ไหม แสดงได้ แต่ User หรือผู้ใช้งานไม่จำเป็นต้องรู้ เพราะฉะนั้น เราก็ซ่อนไว้ได้นะคะ ยกเว้นบางอย่างนี่ ไอ้เป็นภาษาโปรแกรมนี่ เหมือนเวลาเราใช้ Google Chrome หาข้อมูลนี่ เราก็สามารถดูได้ว่า โค้ดโปรแกรม ที่ผู้ดูแลระบบเขาเขียนไว้นี่ เขาเขียนไว้ว่าอย่างไรบ้าง ก็ดูได้นะคะ แต่ถามว่าพ่อแม่เราจะอยากรู้ไหม ว่า Google เขียนโปรแกรมอย่างไร ก็คงไม่นะคะ ไม่จำเป็นต้องเปิด ไม่จำเป็นต้องเปิดดู แต่ถามว่าเปิดดูได้ไหม ก็บางส่วนก็เปิดดูได้นะคะ โดยสถาปัตยกรรมฐานข้อมูลนี่ มีอยู่ 3 ระดับนะคะ เหมือนที่พูดไปตอนต้น ก็คือมีระดับภายนอก ระดับแนวคิด และก็ระดับภายในนะคะ มี 3 ระดับ โดยแสดงเป็นแผนภาพแบบนี้นะคะ เดี๋ยวขีดเส้นให้ดู อันนี้ระดับภายนอกนะคะ เดี๋ยวเติมเส้นแบบนี้ ระดับภายนอกก็คือ เราอาจจะมีผู้ใช้งาน 1 คน 2 คน หรือหลายคน แต่ละคนอาจจะใช้ระบบเดียวกัน แต่หน้าจอที่ดูอยู่ ไม่เหมือนกันก็ได้นะคะ อย่างเช่น นักศึกษาเข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรด คนที่ 2 พิมพ์ใบลงทะเบียน คนที่ 3 อาจจะค้นหาคำอธิบายรายวิชา ถามว่าเขาใช้โปรแกรมเดียวกันไหม ระบบเดียวกันไหม ใช่ ระบบเดียวกัน แต่เขาอาจจะทำงานไม่เหมือนกันก็ได้นะคะ คุณอยากดูตรงไหนก็ได้ หรืออาจจะดูเหมือนกันก็ได้ แต่จะต้องเป็นข้อมูลของตัวเอง อย่างเช่น เกรด คุณจะดูของเพื่อนไม่ได้ เพราะแต่ละคนมีสิทธิ์ของตัวเองเท่านั้นนะคะ จะไปละเมิดความเป็นส่วนตัวของคนอื่นไม่ได้นะคะ อันนี้ก็มันจะมีกฎหมายอยู่ เวลาเราจะดูข้อมูลใคร หรือโพสต์รูปใคร หรือพิมพ์ถึงใคร มีกฎหมายกำหนดนะคะ ต่อมา เป็นในระดับแนวคิด ก็จะดูแล้วว่าโครงสร้างฐานข้อมูลที่เราออกแบบไว้ สำหรับการทำงาน มันจะเป็นเหมือนตัวที่ไว้จัดการว่า User หรือผู้ใช้งานแต่ละคนนี่ เรียกข้อมูลอะไรขึ้นไปดู เป็นตัวจัดการ หลังจากนั้นก็จะทำหน้าที่เชื่อมต่อกับระบบภายใน เพื่อดึงข้อมูลจากฐานข้อมูลไปแสดงผลนะคะ การทำงานจะมีส่วนหลัก ๆ 3 ส่วนแบบนี้นะคะ ที่เราใช้งานกัน แต่ถามว่า User จำเป็นต้องรู้เกี่ยวกับแนวคิดระดับภายในไหม ไม่จำเป็นนะคะ เขาก็จะดูแต่เฉพาะข้อมูลที่ตนเองสนใจ ในระดับภายนอกเท่านั้นนะคะ เหตุผลที่ว่าทำไมเราต้องแยกออกเป็น 3 ระดับ แยกออกจากกัน ทำไมไม่รวมกันไว้นะคะ อันแรก ก็คือผู้ใช้งานแต่ละคนนี่ ก็อาจจะเข้าถึงข้อมูลเดียวกันได้ แต่อาจจะเรียกดูผลไม่เหมือนกัน เหมือนบางคน อย่างที่บอกค่ะ เข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรด คนหนึ่งลงทะเบียน คนหนึ่งค้นหาคำอธิบายรายวิชา หน้าตาแตกต่างกัน แต่ก็ใช้ฐานข้อมูลเดียวกันนะคะ ผู้ใช้งานจะไม่สามารถเข้าถึงข้อมูลโดยตรงได้ ก็คือคุณจะไม่สามารถ พิมพ์หรือเรียกใช้ข้อมูลในฐานข้อมูลได้โดยตรง จะต้องผ่านระบบจัดการฐานข้อมูลเท่านั้นนะคะ Admin นะคะ ในฐานข้อมูลก็คือ ผู้บริหารฐานข้อมูล หรือว่า Database Admin นี่ ตัวย่อก็คือ DBA สามารถแก้ไขโครงสร้างของฐานข้อมูลได้ เข้าไปดูข้อมูลที่เก็บไว้ได้นะคะ แต่จะต้องไม่สร้างผลกระทบให้กับผู้ใช้งาน ก็คือตอนที่คุณอาจจะปรับปรุง เปลี่ยนแปลงฐานข้อมูลอยู่ ผู้ใช้งานก็ยังต้องสามารถทำงานได้ปกตินะคะ โครงสร้างระดับภายในฐานข้อมูลนะคะ จะไม่ได้รับผลกระทบ ถ้าคุณมีการเปลี่ยนแปลงโปรแกรม ซึ่งจะอยู่ในลักษณะของเชิงกายภาพนะคะ ถ้าเปลี่ยนโปรแกรมปึ๊บ เปลี่ยนจากโปรแกรม A ไปใช้โปรแกรม B ข้อมูลจะต้องไม่หายไปไหน อันนี้คือเหตุผลที่ 3 ส่วนนี้ เราจำเป็นจะต้องแยกออกจากกันนะคะ มาดูรายละเอียดเพิ่มเติมนะคะ สำหรับระดับภายใน ก็จะเป็นระดับที่จัดเก็บข้อมูล อยู่ในลักษณะโครงสร้างที่เราออกแบบไว้แล้วนะคะ ถ้าเราเก็บข้อมูลได้ดี มันก็จะมีผลต่อความเร็วและก็ประสิทธิภาพ ในการเรียกใช้ข้อมูลนะคะ ในระดับภายในนี่ มันก็จะเป็นการดูว่า เรามีการสำรองข้อมูลหรือเปล่า เราเก็บข้อมูลอย่างไรนะคะ ส่วนมาก ข้อมูลในฐานข้อมูลนี่ อาจจะเก็บข้อมูลอยู่ในฮาร์ดดิสก์ก็ได้นะคะ มีการทำงานร่วมกับระบบปฏิบัติการ สามารถอ่านเขียนข้อมูลได้ ร่วมกับระบบปฏิบัติการด้วย ทำไมถึงบอกว่าการจัดเก็บข้อมูลที่ดี มีผลต่อความเร็วแล้วก็ประสิทธิภาพ ในการเข้าถึงข้อมูลนะคะ เวลาเราเก็บข้อมูลนี่ จะเห็นได้ว่า ทำไม เราต้องเรียงลำดับตามรหัสนักศึกษาด้วย เอา 207 ขึ้นก่อน 201 ได้ไหม ได้ แต่ถามว่า เวลาเราค้นหาข้อมูล ถ้าเราเรียงตามลำดับ แน่นอนมันค้นหาข้อมูลเร็วกว่า เราก็มาตกลงกันเลยว่า เราจะเรียงลำดับนักศึกษาในห้องนี้อย่างไร อย่างเช่น ซึ่งมาตรฐานทั่วไป ก็จะเรียงตามรหัสนักศึกษา จากน้อยไปมากใช่ไหมคะ แต่ถ้าเราไม่มีรหัสนักศึกษาล่ะ โดยหลักทั่วไปก็จะเรียงตาม ก ไก่ ถึง ฮ นกฮูก ใช่ไหมคะ แล้วแต่ว่าเราทำข้อตกลงอย่างไร หรือบางฐานข้อมูลก็จะบอกว่าเรียงตามอายุ ใครอายุมากขึ้นก่อน หรืออะไรอีกล่ะ เพศชายขึ้นก่อน เพศหญิงตามมา คนเกิดวันอาทิตย์ขึ้นก่อน หรือคนเกิดวันจันทร์ขึ้นก่อน แล้วแต่โครงสร้างที่เรากำหนดไว้ ทำไม เพื่อให้มันหาข้อมูลได้เร็ว เพราะเรารู้แล้วว่า เกณฑ์ในการจัดเรียงข้อมูล มันคืออะไร เพราะว่าข้อมูลที่เก็บอยู่ในฮาร์ดดิสก์ มันไม่เรียง 1 2 3 4 5 ให้เรานะคะ มันจะเก็บแบบกระจัดกระจาย อยู่ตรงไหนก็ได้ ที่มันมีพื้นที่ว่าง แต่มันจะใช้เลขแทนตำแหน่ง อย่างเช่น สินสมุทร อาจารย์กำหนดให้เป็น 001 001 ในฮาร์ดดิสก์อาจจะเก็บตรงไหนก็ได้ แต่ถ้าสมมติอาจารย์ไม่ใส่ 001 ล่ะ ใส่คำว่า "สินสมุทร" มันจะค้นหาข้อมูลเร็วขึ้นไหม ถ้าแทนด้วยตัวเลข เรียงตามลำดับ มันก็จะค้นหาข้อมูลได้เร็วขึ้น เหมือนอาจารย์เรียงลำดับรหัสนักศึกษ าจากน้อยไปหามาก เวลาเช็กชื่อ อาจารย์ก็เช็กได้เร็วขึ้น ว่ารหัสคนไหนหายไป หรืออาจารย์บางท่าน ห้องนี้นักศึกษาไม่เยอะ มันก็ง่าย แต่บางวิชาอาจารย์สอน 50-60 คนขึ้นไป จำไม่ได้ จำไม่ไหวนะคะ การเรียงลำดับจากน้อยไปหามาก ก็ทำให้อาจารย์เช็กได้ง่ายขึ้นว่า ใครมาใครขาดนะคะ เพราะฉะนั้น อีกอย่างหนึ่งก็คือ เวลาเราทำกิจกรรมใด ๆ ก็ตามทำไมเวลา... เหมือนสอบบรรจุก็ได้ค่ะ สอบบรรจุคุณครู ทำไมเขาถึงไม่เรียงลำดับตามคะแนน เพราะมันก็จะมีข้อสังเกตหรือข้อสงสัยเกิดขึ้น เขาก็เลยตัดปัญหา โดยการเรียงลำดับตามเลขที่สมัคร เพื่อให้มันค้นหาข้อมูลของผู้สมัครคนนั้นได้ง่าย และก็ประกาศผลได้ก็ง่ายนะคะ แต่ว่า แต่ก็แล้วแต่ ถ้ามีผู้ดูแลระบบ เขาอยากดูข้อมูลแบบไหน ก็แล้วแต่สิ่งที่เขาจะเรียกขึ้นมาดูนะคะ อันนี้คือระดับภายใน ต่อมา ระดับแนวคิด ก็จะเป็นโครงสร้างของฐานข้อมูลโดยรวม เราต้องดูว่า เราจะเก็บข้อมูลอะไรในฐานข้อมูลของเรา แต่ละข้อมูลมีส่วนอะไรที่มีความสัมพันธ์กัน เกี่ยวข้องกันบ้างนะคะ โดยการกระทำใด ๆ ก็ตาม ที่เกิดขึ้นในระดับแนวคิดนะคะ จะทำอยู่บนโครงสร้างฐานข้อมูล ที่กำหนดไว้แล้วเท่านั้นนะคะ ในระดับแนวคิด จะมีอะไรเกิดขึ้นบ้างนะคะ อย่างเช่น จำนวน Entity Entity ก็คือส่วนของคอลัมน์นะคะ อย่างเช่น นักศึกษา 1 คนจะมีทั้งหมด กี่ Entity ที่เข้ามาเกี่ยวข้องนะคะ ก็จะมี Entity ของอาจารย์นะคะ เป็นคอลัมน์อาจารย์... ไม่ใช่สิ เป็นตารางของอาจารย์ ตารางนักศึกษา ตารางรายวิชา มาเกี่ยวข้องกัน ใน 1 ตาราง จะประกอบไปด้วย Attribute คือตัวนี้นะคะ คือ คอลัมน์ นักศึกษา 1 คน จะมีกี่ Attribute อาจารย์ดูง่าย ๆ เลย อาจจะมีประมาณ สมมติว่าจะมี 3 คอลัมน์ 3 Attribute คอลัมน์ที่ 1 รหัสนักศึกษา คอลัมน์ที่ 2 ชื่อ-นามสกุล คอลัมน์ที่ 3 อาจจะเป็นที่อยู่ หรือเบอร์โทรศัพท์ หรือชื่อเล่นก็ได้นะคะ โดยแต่ละตาราง หรือแต่ละ Entity จะต้องมีความสัมพันธ์ระหว่างกัน หรือว่า Relationship นะคะ เช่น ทำไมตารางอาจารย์กับตารางนักศึกษา จะต้องมีความสัมพันธ์กัน เช่น อาจารย์สอนวิชานี้ ในใบลงทะเบียนเรียน ของทุกคนมีไหม มี แล้วลงทะเบียนวิชานี้มีชื่ออาจารย์ไหม มี อาจารย์ก็สามารถดูได้เหมือนกันว่าวิชานี้ มีใครลงทะเบียนเรียนไว้บ้าง เพราะฉะนั้น อาจารย์กับนักศึกษา จะต้องมีความเกี่ยวข้องกันอย่างน้อย 3 ตาราง ก็คือตารางอาจารย์ ก็คือจะเก็บข้อมูลอาจารย์ ตารางนักศึกษาก็จะเก็บข้อมูลนักศึกษา ตารางการลงทะเบียนเรียนก็จะรู้แล้วว่า เทอมนี้อาจารย์สอนวิชาอะไรบ้าง นักศึกษาลงเรียนวิชาอะไรบ้างนะคะ อันนี้ก็เป็นความสัมพันธ์แบบง่าย ๆ นะคะ อันนี้ก็เหมือนกัน ระดับภายนอก จะเป็นส่วนที่ผู้ใช้งาน เรียกดูข้อมูลนะคะ ผู้ใช้งานแต่ละคนอาจจะดูข้อมูลเหมือนกัน หรือต่างกันก็ได้นะคะ โดยที่ฐานข้อมูลนี่สามารถมีมุมมอง หรือเค้าร่างภายนอกได้หลายรูปแบบ แล้วแต่นะคะ อย่างเช่นตัวอย่างนี้ มีผู้ใช้งาน 3 คน นะคะ เรียกดูข้อมูลในฐานข้อมูลเดียวกัน แต่อาจจะเป็นคนละตาราง เพราะว่าใน 1... ในฐานข้อมูล 1 ฐานข้อมูลนี่ มันจะมีตารางได้เยอะมากนะคะ แต่ทุกตารางจะต้องมีความสัมพันธ์กัน อย่าง User หรือผู้ใช้งานคนที่ A อาจจะเรียกดูแค่ชื่อ กับเบอร์โทรศัพท์เท่านั้นก็ได้นะคะ User หรือผู้ใช้งานคนที่ B อาจจะขอดูข้อมูลรหัสนักศึกษา ชื่อ ที่อยู่ เบอร์โทรศัพท์ก็ได้ แล้วแต่นะคะ คนที่ C อาจจะไม่อยากดูข้อมูลของทุกคน อาจจะอยากดูว่า เทอมนี้มีวิชาอะไรเปิดสอนบ้าง รหัสวิชาอะไร ชื่อวิชาอะไร มีกี่หน่วยกิตก็ได้ จากในฐานข้อมูลเดียวกัน แต่แค่เอามาจากคนละตารางแค่นั้นเองนะคะ ประโยชน์ของสถาปัตยกรรมทั้ง 3 ระดับนะคะ ระดับภายใน ระดับภายนอก แล้วก็แนวคิด แน่นอน มุมมองของผู้ใช้งานแต่ละคนก็สามารถ ทำงานได้โดยอิสระ แยกจากกันนะคะ อาจจะมีการนำข้อมูล หลาย ๆ ตารางมารวมกันนะคะ เพื่อให้สามารถครอบคลุมในการเรียกดูข้อมูลได้ อาจจะมองคนละมุมกัน แต่ใช้ฐานข้อมูลเดียวกันได้ แล้วก็ ผู้ใช้งานไม่จำเป็นต้องรู้ว่าข้อมูลที่เก็บไว้นี่ อยู่ตำแหน่งไหนของฮาร์ดดิสก์ ไม่จำเป็นต้องรู้ รู้แค่ว่า ฉันอยากเรียกข้อมูลขึ้นมาดูได้ก็ต้องดูได้นะคะ โดยที่ Admin นี่ จะเป็นคนดูแลเองว่า ข้อมูลที่เราเก็บที่ถูกเก็บไว้นี่ จะต้องจัดเก็บอยู่ตรงไหน แล้วก็เป็นคนที่ดึงข้อมูลนั้น ๆ เข้ามา ให้ผู้ใช้งานสามารถใช้งานได้นะคะ ประโยชน์ข้อต่อมา คือความเป็นอิสระของข้อมูล อย่างที่บอกก็คือ ถ้ามีการเปลี่ยนแปลงข้อมูล หรือมีการเปลี่ยนแปลงโปรแกรม ทุกอย่างจะต้องไม่ถูกได้รับผลกระทบนะคะ งานต้องยังสามารถเก็บได้ หรือโปรแกรมก็ยังต้องทำงานได้ ถ้ามีการเปลี่ยนแปลงของข้อมูลนะคะ ไม่ใช่ว่ามีคนหนึ่งเปลี่ยนนามสกุล ฐานข้อมูลทั้งมหาวิทยาลัยผิดพลาดหมดเลย อันนี้ไม่ได้นะคะ หรือบางคนเพิ่มที่อยู่ กลายเป็นว่าที่อยู่เหมือนกันทั้งมหาวิทยาลัยอย่างนี้ ก็ไมได้นะคะ ข้อมูลจะต้องเป็นอิสระจากกัน หรือว่าวันนี้อาจารย์บอกว่า ฐานข้อมูลอาจารย์อยากใช้ Microsoft Access วันดีคือดีบางคนอยากบอกว่า เปลี่ยนไปใช้โปรแกรมอื่นได้ไหม ต้องเปลี่ยนได้นะคะ ไม่ใช่ว่าใช้โปรแกรมเดียวไปตลอด ไม่ได้ ถ้าสมมติมีโปรแกรมที่ดีกว่า แล้วเราอยากเปลี่ยน เราก็ต้องเปลี่ยนได้ โดยที่ข้อมูลเราไม่หายนะคะ อันนี้คือความเป็นอิสระของข้อมูล อันนี้พูดไปแล้วนะคะ อันนี้พูดไปแล้วนะ เดี๋ยวนะ Mapping อันนี้พูดไปแล้ว ต่อมา แบบจำลองข้อมูลนะคะ แบบจำลองข้อมูลนี่ มันก็จะเป็นแบบจำลอง ที่ไว้ใช้สำหรับการอธิบาย แล้วก็การจัดการข้อมูลที่จะเกิดขึ้นในฐานข้อมูล ความสัมพันธ์ระหว่างข้อมูลแต่ละตาราง จะเกิดขึ้นอย่างไรบ้าง ข้อบังคับของข้อมูลในระบบที่จะมี การเพิ่ม ลบ เปลี่ยนแปลง แก้ไขใด ๆ จะต้องมีกฎเกณฑ์ใด ๆ บ้างนะคะ ทั้งนี้ก็เพื่อ ใช้สำหรับการเป็นข้อตกลง แล้วก็สื่อสารระหว่างคนออกแบบฐานข้อมูล กับคนที่ใช้งานฐานข้อมูล ให้เข้าใจตรงกันนะคะ ว่าถ้าเรามีระบบนี้คุณจะสามารถทำอะไรได้บ้าง ทำอะไรไม่ได้ เรียกดูข้อมูลแบบไหน แก้ไขข้อมูลอย่างไร ทำแบบไหนถึงจะบันทึกข้อมูลได้ ถ้าอยากลบรหัสนักศึกษาออกได้ไหม อยากเป็นนักศึกษาแต่ไม่มีรหัสนักศึกษาได้ไหม ไม่ได้ ก็ต้องเข้าใจตรงกันนะคะ อันแรกนะคะ แบบจำลองข้อมูลนี่ จะมีอยู่ 2 ประเภท ประเภทแรก ก็คือ เป็นแบบจำลองที่ใช้การบรรยายนะคะ บรรยายโดยรวมทั้งหมดของระบบ ว่ามีอะไรบ้างนะคะ ซึ่งจะนำเสนอในลักษณะของการวาดภาพ โดยที่ในฐานข้อมูล 1 ฐานข้อมูลนี่ จะหมายถึง การเก็บตารางกี่ตารางนะคะ ก็คือ Entity นี่แหละนะคะ กับแต่ละตารางมีความสัมพันธ์อะไรบ้าง เราจะต้องวาดรูป โยงเส้น ขีดเส้นใต้ ตีกรอบ เดี๋ยวอันนี้จะเป็น... ในครั้งถัด ๆ ไปจะเป็นการวาดรูป เดี๋ยวถ้าวันไหนจะวาดรูป อาจารย์จะให้ถือกระดาษ A4 มาด้วยนะคะ ถ้าใครเคยเรียนสมัยมัธยมได้วาด Mind map วาดแผนภาพ การวาดในฐานข้อมูลก็จะไม่ค่อยต่างกันค่ะ แต่ว่าสัญลักษณ์แต่ละสัญลักษณ์ ที่เอามาใช้ในการวาดรูปของเรา มันมีความหมายนะคะ ไม่ใช่อยากวาด อยากใส่วงรี อยากใส่สี่เหลี่ยม อยากใส่สามเหลี่ยม อยากใส่วงกลม นึกอยากใส่อะไรก็ใส่ไม่ได้นะคะ มันจะมีกฎอยู่ โดยการวาดแบบนี้นี่ หรือการสร้างแบบจำลองแบบนี้นี่ จะนำเสนอเพื่อให้เกิดความเข้าใจตรงกัน ระหว่างคนออกแบบกับคนใช้งาน ให้เห็นภาพคร่าว ๆ ว่าระบบที่เรากำลังจะทำขึ้นมานี่ มันทำงานอย่างไรนะคะ เก็บข้อมูลแบบไหน ใช้ข้อมูลอะไรได้บ้างนะคะ ต่อมาจะเป็นแบบจำลองที่ใช้เพื่ออธิบาย โครงสร้างของฐานข้อมูลนะคะ คุณสมบัติของแบบจำลองข้อมูลที่ดี จะต้องเป็นรูป หรือเป็นแบบจำลองที่ เอามาวาง แล้วถึงแม้ว่าเขาจะไม่มีความรู้ ทางด้านคอมพิวเตอร์เลย เขาก็จะเข้าใจนะคะ มีสาระสำคัญ ไม่มีการซ้ำซ้อนกันนะคะ ซึ่งในที่นี้ ก็คือในแต่ละตาราง มันไม่ควรจะมีการเก็บข้อมูลที่ซ้ำซ้อนกัน อย่างเช่น ตารางนี้เก็บข้อมูลนักศึกษาไปแล้ว อีกตารางหนึ่งก็ยังจะเก็บอีก อันนี้ไม่ทำนะคะ จะต้องไม่ซ้ำซ้อนกันของแต่ละตาราง แล้วก็มีความยืดหยุ่น ง่ายในการแก้ไขในอนาคตนะคะ และแบบจำลองของข้อมูล ไม่ควรจะ ตายตัวเลยว่าโปรแกรมที่เรา... หรือฐานข้อมูลที่เรากำลังจะออกแบบ ต้องใช้โปรแกรมนี้เท่านั้น เราจะไม่ทำแบบนี้นะคะ จะต้องเป็นฐานข้อมูล ที่สามารถทำร่วมกับโปรแกรมใดก็ได้นะคะ เพราะมันจะ... ไม่อย่างนั้น มันจะขัดกับกฎความเป็นอิสระของข้อมูลก็คือ ถ้าสมมติเปลี่ยนโปรแกรมแล้วระบบเราพังนี่ อันนี้ยอมรับไม่ได้นะคะ โดยแบบจำลองนี่ ก็จะมีหลายรูปแบบ แบบแรกจะเป็นเชิง Record ก็คือจะเป็น การเก็บเป็นแถว เป็นแถว ไปเรื่อย ๆ นะคะ แต่ละแถวก็ หรืออาจจะเรียกว่า "รายการข้อมูล" แต่ละแถวจะต้องไม่ซ้ำกัน จะต้องแตกต่างกันนะคะ ก็จะมีอยู่ 3 แบบ แบบจากบนลงล่าง แบบเครือข่าย และก็แบบมีความสัมพันธ์นะคะ กับแบบจำลองเชิงวัตถุนะคะ จะมองทุกอย่างให้เหมือนเป็นวัตถุ ตารางก็เป็นวัตถุชนิดหนึ่ง นักศึกษาก็เป็นวัตถุชนิดหนึ่ง นักศึกษา 1 คน จะมีวัตถุในตัวเอง เก็บอะไรบ้างนะคะ เช่น วัตถุที่ชื่อว่า รหัสนักศึกษา วัตถุที่ชื่อว่า ชื่อ-นามสกุล วัตถุที่มันหมายถึงเบอร์โทรศัพท์นะคะ ซึ่งส่วนใหญ่เวลาเราวาด หรือโครงสร้างฐานข้อมูลเราจะใช้ แบบจำลองเชิงวัตถุนะคะ ก็คือตัวแรกเลย สิ่งที่เราจะวาดเรียกว่า "ER Diagram" นะคะ ER Diagram อันนี้คือ อย่างน้อยทุกคนจะต้องวาดได้ เข้าใจสัญลักษณ์แต่ละอัน ว่ามันมีความสำคัญอย่างไรนะคะ ระดับปริญญาตรีนี่ วาด ER Diagram ได้ ก็ถือว่าเก่งมากแล้วนะคะ แบบจำลองข้อมูลจะมีส่วนประกอบอยู่ 3 ส่วนนะคะ ส่วนโครงสร้างก็จะเป็นส่วนประกอบที่เก็บสัญลักษณ์ รวมทั้งกฎระเบียบที่ทุกคนจะต้องตกลงร่วมกัน เพื่อใช้ในการสร้างฐานข้อมูลนะคะ มาตรฐานเลยก็คือข้อมูลทุกอย่างที่เราจะเก็บ จะอยู่ในรูปแบบของตาราง ในรูปแบบของแถวกับคอลัมน์ อันนี้น่าจะเคยใช้งาน Excel มาแล้ว รวมถึงรู้จักว่าตารางคืออะไร นะคะ ตารางก็จะเป็นแบบนี้ เหมือนเวลาเรา ใส่ข้อมูลทั่ว ๆ ไปอย่างนี้นะคะ เป็นตีเส้น ตีกรอบอย่างนี้ อันนี้คือตารางนะคะ มีแถวกับคอลัมน์ ส่วนของการปรับปรุงก็จะเป็นส่วนที่ ชนิดของการทำงานต่าง ๆ ตั้งแต่การปรับปรุงข้อมูล หรือการเรียกดูข้อมูลในฐานข้อมูล การเปลี่ยนแปลงโครงสร้างฐานข้อมูล เช่น เราอาจจะเพิ่มในส่วนของ Social Media ของนักศึกษาเข้ามา มหาวิทยาลัยอยากรู้ว่าชื่อ Facebook คุณชื่อว่าอะไร แต่จะต้องไม่กระทบกับฐานข้อมูลหลักนะคะ ซึ่งนิยมใช้ชุดคำสั่งของภาษา SQL อันนี้ก็เราก็จะเรียนเหมือนกันนะคะ ภาษา SQL ในการจัดการกับข้อมูล รวมถึงกฎของความคงสภาพ เพื่อใช้สำหรับควบคุมความถูกต้องของข้อมูล แล้วก็เพื่อให้มั่นใจว่าข้อมูลที่ได้มาถูกต้อง เช่น รหัสนักศึกษาจะต้องเป็นตัวเลขเท่านั้น เป็นตัวหนังสือไม่ได้นะคะ ความแน่นอนของข้อมูลที่ถูกต้อง ที่บันทึกลงในฐานข้อมูลนะคะ เวลาเราเรียกดูข้อมูลปึ๊บ เราจะได้มั่นใจได้ว่าข้อมูลที่เราได้มา เป็นข้อมูลที่ตรงกับความจริงที่เกิดขึ้นนะคะ นี่ก็จะซ้ำ ๆ กัน แบบจำลองฐานข้อมูลนะคะ ในการตัดสินใจ เลือกใช้แบบจำลองฐานข้อมูลนี่ มันก็จะเป็นสิ่งสำคัญมาก ๆ สำหรับการออกแบบฐานข้อมูลนะคะ ซึ่งเราก็จะแบ่งเป็นประมาณ 5 รูปแบบ เพื่อให้เราตัดสินใจว่า เราจะออกแบบฐานข้อมูล ด้วยแบบจำลองแบบไหนนะคะ อันแรกเลย เป็นแบบลำดับชั้นนะคะ เป็นรูปแบบสถาปัตยกรรมฐานข้อมูลที่เก่าแก่ที่สุด ใช้มานานมากนะคะ โครงสร้างของข้อมูลหรือไฟล์จะถูกจัดเก็บไว้ จากบนลงล่างนะคะ ลักษณะคล้าย ๆ กับรากของต้นไม้ นะคะ โดยไฟล์ต่าง ๆ จะต้องมีพ่อ ก็คือเป็น ถ้าเป็นภาษาอังกฤษก็คือ One Parent ก็คือมันจะออกจากข้อมูลเดียวเท่านั้น แล้วค่อย ๆ แตกสาขาออกไปนะคะ ความถูกต้องในการเก็บข้อมูลค่อนข้างที่จะสูง ความคงสภาพของข้อมูลก็คือ การเปลี่ยนแปลงข้อมูลมีน้อยมาก แต่ปัจจุบันไม่นิยมใช้ เพราะมันยากต่อการไล่ลำดับของข้อมูลนะคะ มันเวลาจะหาข้อมูลทีหนึ่งก็ต้องวิ่งไปข้างบน แล้วค่อยลงมาข้างล่างใหม่ จะหาข้อมูลทีหนึ่งก็ต้องเริ่มตั้งแต่ข้างบน แล้วค่อยมาข้างล่าง เหมือนเวลาคุณอะไรล่ะ สมมติตึกนี้มี 10 ชั้น อยากไปชั้น 3 คุณจะขึ้นจากข้างล่าง ไปชั้น 3 เลยไม่ได้ คุณต้องขึ้นไปชั้น 10 ก่อน แล้วค่อยเดินลงมาชั้น 3 ทุกครั้งนะคะ แบบจำลองข้อมูลตัวนี้ ถามว่าดีไหม ดี แต่ทำงานช้านะคะ ลักษณะก็จะเป็นแบบนี้นะคะ เริ่มจากตรงนี้ กว่าจะลงมาถึงตรงนี้ได้ ต้องผ่านทุกชั้นนะคะ ถ้าเราอยากดูข้อมูลตรงนี้เลยนี่ ตรงนี้ ที่อาจารย์วง ๆ ไว้นี่ เข้ามาตรงนี้เลยได้ไหม ไม่ได้ เพราะกฎของมันคือต้องเริ่มจากบนสุด ค่อยลงมาข้างล่าง มันดีค่ะ แต่มันช้านะคะ จะเป็นประมาณนี้นะคะ เป็น Root ลง มาตรงนี้ เหมือนข้อมูลแบบนี้ค่ะ อันนี้คือแบบจำลองที่เราวาดกันจริง ๆ นะคะ สมมติอาจารย์อยากดูข้อมูลของคนนี้นะคะ ระดับล่างสุดเลย อาจารย์จะเข้ามาดูข้อมูลคนนี้โดยตรงไม่ได้ อาจารย์จะต้องสั่งผ่านจากด้านบน ค่อย ๆ ลงมาตามลำดับชั้น ตามลำดับชั้นเรื่อย ๆ จนถึงตรงนี้ ถามว่าถ้าเราเป็นผู้ใช้งานจริงนี่ เราอาจจะไม่รู้สึกว่ามันหาข้อมูลช้า แต่ในทางการทำงานทางกายภาพ ของคอมพิวเตอร์นี่ มันทำงานโดยคิดเป็นหน่วยใหญ่ ๆ ก็คือเป็นวินาที ยิ่งใช้เวลาในการหาข้อมูลนานเท่าไร ก็ยิ่งมีค่าใช้จ่ายที่เพิ่มขึ้นตามไปด้วยนะคะ เพราะฉะนั้น เหมือนในยุคปัจจุบัน ทำไมทุกคนอยากได้คอมพิวเตอร์ที่เร็ว คิดเร็ว หาข้อมูลเร็วนะคะ ถามว่าอันนี้มันช้าจนเราทนไม่ได้ไหม ถ้าข้อมูลมันมีแค่นี้มันทนได้ค่ะ แต่ถ้าข้อมูลมันมากกว่านี้ล่ะ หลายลำดับชั้นกว่านี้ล่ะ แค่หาชื่อคน อาจจะรอเป็นชั่วโมงก็ได้ ถ้าจำนวนข้อมูลมันเยอะนะคะ อันนี้ก็เป็นแบบจำลองข้อมูลที่ถามว่าทำงานได้ดีค่ะ แต่ว่าอาจจะเสียเวลานะคะ ข้อดี ก็คือเข้าใจง่าย ลักษณะเหมือนรากของต้นไม้ อย่างที่บอกนะคะ ข้อมูลมีความสัมพันธ์แบบ 1 ต่อ มากกว่า 1 จริง ๆ อยากพูดภาษาอังกฤษมากกว่า เป็นความสัมพันธ์แบบ One-to-many ก็คือ พ่อ 1 คน มีลูกได้หลายคนประมาณนี้นะคะ ความสามารถในการควบคุมความถูกต้องของข้อมูล มีสูงนะคะ ข้อมูลที่เหมาะจะใช้งานในการแบบจำลองแบบนี้ ควรน่าจะเป็น ข้อมูลแบบที่เป็นการเรียงลำดับแบบต่อเนื่องนะคะ ที่จะเหมาะ ที่จะใช้ แต่มันก็มีข้อเสียอย่างที่บอกนะคะ มันไม่สามารถรองรับข้อมูล ที่มีความสัมพันธ์แบบ Many-to-Many ได้ เดี๋ยวเรื่อง One-to-One One-to-Many, Many-to-Many นะคะ 1 ต่อ 1, 1 ต่อหลายสิ่ง หรือหลายสิ่งต่อหลายสิ่งอะไรพวกนี้ เดี๋ยวเราจะเรียนในบทถัด ๆ ไปนะคะ บางคนก็ คืออะไรนะคะ เดี๋ยวจะอธิบายโดยละเอียด ในบทถัด ๆ ไป โดยแบบจำลองแบบลำดับชั้นนี่ ความยืดหยุ่นมันก็จะน้อยนะคะ การปรับเปลี่ยนโครงสร้างมีความยุ่งยาก เพราะทุกอย่างจะต้องเริ่มจากด้านบน ถ้าเปลี่ยนตรงใดตรงหนึ่ง ต้องไล่ดูทั้งหมด เพราะมันอาจจะกระทบกับอีกส่วนอื่นก็ได้นะคะ อย่างที่บอกค่ะ การค้นหาข้อมูลระดับล่าง ๆ จะต้องทำตั้งแต่บนลงล่างลงมา เข้าไปหาโดยตรงไม่ได้นะคะ เสียเวลา แล้วก็ทำให้การเขียนโปรแกรม ในอนาคตมันยาก เพราะทุกอย่างจะต้องวนกลับมาจุดเริ่มต้น วนกลับมาจุดเริ่มต้น เสียเวลามากนะคะ มันก็เลยมีการพัฒนา แบบจำลองข้อมูลแบบเครือข่ายขึ้นมานะคะ โดยแบบจำลองข้อมูลแบบเครือข่ายนี่ จะใช้ตัวชี้ตำแหน่ง ที่เรียกว่า "Pointer" ก็คือใช้ลูกศรนะคะ ใช้ลูกศร ก็จะมีการเชื่อมโยงความสัมพันธ์ ระหว่างข้อมูลในแต่ละแถวเข้าด้วยกันนะคะ ก็จะเป็นความสัมพันธ์ ที่สามารถเชื่อมโยงกันได้นะคะ ข้อมูลสามารถวิ่งผ่านกันได้ ไม่จำเป็นต้องจากบนลงล่างมา อาจจะเลี้ยวซ้ายเลี้ยวขวาได้แล้วคราวนี้นะคะ ลักษณะของแบบจำลองเชิงเครือข่าย ก็จะเป็นแบบนี้นะคะ แต่ก่อนเราจะเริ่มจากบนลงล่างใช่ไหมคะ คราวนี้ถ้าใบส่งของนี่ มันสามารถไปหาใครได้บ้าง ใบส่งของ 1 ใบ มีข้อมูลอะไรบ้าง ก็คือรายการในใบส่งของ ใครเป็นคนขาย ใครเป็นคนซื้อ เขาจ่ายเงินแบบไหน อันนี้ไม่ต้องจากบนลงล่างใช่ไหมคะ หรือจะดูว่าพนักงาน วันนี้ขายของอะไรได้บ้าง ก็สามารถดูได้ ลูกค้าคนนี้ อยู่ในใบส่งของไหน ใครเป็นคนขาย ลูกค้าจ่ายเงินอย่างไร ก็ดูได้ ดูได้ทุกตำแหน่งนะคะ โดยที่ไม่ต้องเริ่มจากบนลงล่าง สามารถเข้าไปดูได้โดยตรง ข้อดีแบบจำลองข้อมูลแบบเครือข่ายนะคะ ก็ความซ้ำซ้อนในการเกิดขึ้นของข้อมูล ก็น้อยกว่าลำดับชั้น เรียกดูข้อมูลแบบไป-กลับได้ง่ายนะคะ เพราะว่า การค้นหาข้อมูลทำได้ดีกว่า เพราะว่ามีตัวชี้ตำแหน่ง หรือว่า Pointer ในการเข้าถึงข้อมูลได้ในทันทีนะคะ แต่ถามว่าสิ่งที่มีข้อดี มันก็ต้องมีข้อเสียนะคะ ข้อเสียก็คือ การป้องกันความปลอดภัยของข้อมูลมีน้อย นะคะ แล้วก็สิ้นเปลืองพื้นที่ในการเก็บตัวชี้ตำแหน่ง ถ้าตารางข้อมูลมันมีแค่นี้น่ะค่ะ มันก็ไม่เปลืองหรอก แต่ถ้าสมมติว่ามันเป็นระดับห้างสรรพสินค้าล่ะ ร้านค้าใหญ่ ๆ ข้อมูลเกิดขึ้นแทบจะทุกนาที มันก็ต้องมีตัวชี้ตำแหน่งเก็บทุก ๆ ๆ ๆ สิ่งที่เกิดขึ้น ทำไมถึงบอกว่าเปลืองไม่ได้ เพราะถ้าในเชิงธุรกิจ อะไรที่เป็นสิ่งที่เราต้องจ่ายเพิ่ม เช่น การซื้อฮาร์ดดิสก์เพิ่มเพื่อเก็บข้อมูลทุกอย่าง เป็นต้นทุน หมายความว่า คุณจะต้องลงทุกเพิ่มขึ้น ในสิ่งที่อาจจะไม่ได้จำเป็นขนาดนั้นนะคะ แล้วก็การเปลี่ยนแปลงเชิงโครงสร้าง ก็อาจจะมีความยุ่งยาก เพราะหลาย ๆ อย่างมันเชื่อมต่อกันอยู่ เช่น อยู่ดี ๆ อาจารย์อยากบอกว่า อาจารย์อยากตัดใบส่งของออก แล้วพนักงานกับลูกค้าเขาจะเชื่อมโยงกันอย่างไร ผ่านสินค้าหรือ แล้วคุณไม่ต้องไปส่งของลูกค้าหรือ นะคะ อันนี้ก็จะมีข้อสงสัย กับข้อที่ต้องมาคิดตามเหมือนกันว่า ถ้าเราจะมีการเปลี่ยนแปลงตำแหน่งบางตำแหน่ง สำหรับการชี้ตำแหน่งนะคะ มันต้องทำอย่างไร มันก็เลยมีการพัฒนาขึ้นมาอีก เป็นแบบจำลองฐานข้อมูลเชิงสัมพันธ์นะคะ ก็จะเป็นแบบจำลองข้อมูล ที่ได้รับความนิยมมากในปัจจุบัน เพราะว่านำเสนอข้อมูลในลักษณะที่เป็นตาราง เข้าใจง่าย มีแถว มีคอลัมน์นะคะ สามารถแสดงให้เห็นถึงความสัมพันธ์ กับตารางอื่น ๆ ได้ง่ายนะคะ แต่เราจะใช้สิ่งที่เรียกว่า "กุญแจ "หรือ "Key" เพื่ออ้างอิงไปยังตารางอื่น ๆ เหมือนอย่างนี้ อันนี้คือตารางพนักงานขาย ตารางลูกค้าอะไรพวกนี้ค่ะ เราไม่รู้ว่าเราจะอ้างอิงด้วยอะไร ใช่ไหมคะ อย่างเช่นใบส่งของนี้ มีของอยู่ 5 อย่าง เราก็รู้ว่าแค่ 5 อย่าง ไม่ได้มีจุดสังเกตใด ๆ ให้รู้นะคะ มันก็เลยมีการพัฒนาสิ่งที่เรียกว่า "Key" หรือกุญแจขึ้นมานะคะ โดยกุญแจของ 1 คนนี่ มันสามาถเป็นได้ทั้ง กุญแจหลักหรือคีย์หลัก แล้วก็คีย์รองได้ เดี๋ยวรายละเอียดของคีย์หลักคีย์รอง คีย์ภายนอกนะคะ จะอธิบายโดยละเอียดในบทถัด ๆ ไปนะคะ อันนี้เอาให้เห็นคร่าว ๆ ก่อน อย่างเช่น นะคะ ตารางนี้ นะคะ อันแรกจะเป็นตารางเก็บข้อมูลเกี่ยวกับสาขา สมมติว่าเราเปิดร้าน... ร้านค้า มีตารางเกี่ยวกับเก็บข้อมูลสาขาที่เราเปิด กับตารางพนักงาน ทำไมรหัสสาขาอาจารย์ต้องขีดเส้นใต้ด้วย ทำไมรหัสพนักงานก็ต้องขีดเส้นใต้ด้วย ความสำคัญมีอยู่นะคะว่า ไม่ใช่ขีดเฉย ๆ เพื่อเน้นให้พวกคุณอ่าน ไม่ใช่ มันแสดงให้เห็นว่าในตารางนี้ สิ่งใดที่ขีดเส้นใต้ ข้อนั้น ข้อมูลในตารางนั้นจะซ้ำกันไม่ได้ เราเรียกสิ่งนี้ว่า "คีย์หลัก" นะคะ รหัสพนักงานขีดเส้นใต้ ก็แสดงว่ารหัสพนักงานแต่ละคนจะต้องไม่ซ้ำกัน เพราะรหัสพนักงานเป็นคีย์หลัก แต่ถ้าสังเกตดี ๆ ในตารางพนักงาน ทำไมมีรหัสสาขาโผล่ขึ้นมาตรงนี้ด้วย แล้วทำไมไม่ขีดเส้นใต้ล่ะ ในตารางนี้ เพราะในตารางพนักงาน รหัสสาขา ไว้สำหรับเป็นคีย์นอกในการเชื่อมต่อกันว่า 2 ตารางนี้ มันมีความสัมพันธ์กันอย่างไร นะคะ เดี๋ยวจะอธิบายอีกทีหนึ่ง ว่าทำไมต้องมีความสัมพันธ์กันล่ะ เอาง่าย ๆ เลยค่ะ พนักงานคนที่ 1 ถ้าอาจารย์ไม่มีรหัสสาขา คุณจะรู้ไหมว่า พนักงานคนนี้ทำงานที่สาขาไหน ไม่รู้เลย หรืออาจจะบอกว่าสาขาอุดรฯ มีใครทำงานบ้าง รู้ไหม ถ้าไม่เชื่อมกับตารางพนักงาน ก็ไม่รู้เลยนะคะ เดี๋ยวจะอธิบายอีกทีหนึ่ง ในบทของการวาดความสัมพันธ์นะคะ ข้อดีของแบบจำลองเชิงสัมพันธ์ที่เป็นตาราง อ่านง่าย เข้าใจง่าย เพราะนำเสนอในลักษณะของตาราง สามารถเลือกดูข้อมูลได้ตามสิ่งที่เราสนใจ ความซับซ้อนข้อมูลก็มีน้อย เพราะว่าข้อมูล ในเชิง 2 มิตินี่ พอมันมองนี่ มันมองง่าย ความปลอดภัยค่อนข้างดีนะคะ เพราะว่าผู้ใช้งาน ก็จะไม่รู้ว่าเราเก็บข้อมูลอย่างไร รู้แค่ว่าอยากเรียกใช้ข้อมูลอะไรได้บ้างนะคะ แล้วก็โครงสร้างของข้อมูล แน่นอน ถ้าเราเปลี่ยนโปรแกรม ก็ยังสามารถทำงานได้นะคะ แต่ข้อเสียของมันก็มีนะคะ ก็คือค่าใช้จ่ายค่อนข้างสูงนะคะ เพราะว่าทรัพยากรที่ใช้ในการจัดการนี่ ต้องมีสมรรถนะที่สูงนิดหนึ่ง ประมวลผลต้องเร็วนะคะ การปรับปรุงแก้ไขข้อมูลก็อาจจะมีความยุ่งยาก เพราะว่าไม่รู้ว่าข้อมูลภายในที่เก็บจริง ๆ แล้วนี่ มันเป็นอย่างไร มีคนเดียวที่รู้ ก็คือคนจัดการฐานข้อมูลเท่านั้น บางครั้งผู้ใช้งานนี่อาจจะคนที่ต้องคีย์ข้อมูลเข้าไป ก็อาจจะเริ่มงงว่า สรุปว่าฉันต้องกรอกข้อมูลอะไร ทำไมข้อมูลมันไม่ผ่าน นะคะ อย่างเช่น อาจจะไม่มี อันนี้มันก็จะเกี่ยวเนื่องไปถึงการออกแบบระบบด้วย เหมือนบางคนใส่เลขบัตรประชาชนไม่ครบ 13 หลัก ถ้าผู้ดูแลระบบออกแบบไม่ดี มันก็จะไม่มีแจ้งเตือน ว่าเลขบัตรประชาชนคุณน่ะไม่ครบ คนใช้งานก็จะเริ่มงงแล้วว่า เอ้า ฉันผิดอะไรนะคะ มันตั้งแต่การออกแบบเลย เพราะฉะนั้น คนดูแลระบบก็ต้องป้องกันสิ่งที่จะเกิดขึ้นด้วย คืออาจจะมีการแจ้งเตือนว่าเราผิดพลาดตรงไหน ข้อมูลจะเป็นอะไรได้บ้างนะคะ เหมือนการเก็บข้อมูลรูปภาพ รูปภาพต้องขนาดเท่าไร ต้องเป็นภาพสีไหม หรือต้องเป็นภาพขาวดำเท่านั้น จะต้องอธิบายให้ชัดเจนนะคะ เพราะว่า ถ้ามีการปรับปรุงข้อมูลทีหนึ่งนี่ บางทีถ้าผู้ใช้งานไม่เข้าใจ มันก็จะไม่สามารถบันทึกลงฐานข้อมูลได้นะคะ กับแบบจำลองข้อมูลเชิงวัตถุนะคะ ส่วนมากจะเป็นการออกแบบ เพื่อเขียนแอปพลิเคชัน นะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่งนะคะ มันก็จะมีการห่อหุ้มวัตถุนั้น ๆ ไว้ด้วยอะไรบ้างนะคะ อันนี้ก็พอเรียนปีสูงขึ้น ทุกคนก็จะได้เรียน การทำงานเชิงวัตถุมากขึ้นนะคะ อันนี้ปี 1 ก็ฐานข้อมูลเชิงสัมพันธ์นี้ก็เต็มที่แล้วนะคะ อันนี้อาจารย์เอามาให้รู้จักเฉย ๆ เพราะว่าถ้าเป็นฐานข้อมูล หรือการเขียนโปรแกรมเชิงวัตถุใด ๆ ก็ตาม มันจะทำงานซับซ้อนได้ดีกว่า มันเหมาะกับการทำงานเกี่ยวกับภาพกราฟิก การเก็บวีดิโอ เสียง อย่างเช่นเราเล่น Facebook มีหมดเลย ทั้งภาพ ทั้งวิดีโอ ทั้งเสียง ที่เราต้องเก็บข้อมูล แล้วก็สามารถเอาข้อมูลที่มีอยู่ หรือนานมาแล้วนี่ เรียกกลับมาใช้ซ้ำได้ ง่ายกว่ารูปแบบจัดการฐานข้อมูลชนิดอื่น ๆ แต่ข้อเสียของการทำงานเชิงวัตถุ ก็คือ จะต้องมีความชำนาญมาก ๆ แล้วก็เข้าใจ ในการมองโปรแกรม หรือมองข้อมูลนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่ง อาจจะต้องใช้ประสบการณ์ ในการจัดการกับข้อมูลที่มีความซับซ้อนมาก ๆ พอเราอายุเท่านี้ อาจจะยังไม่เห็นความซับซ้อนของข้อมูลนะคะ แต่ถ้ามันไปทำงานจริง ๆ นี่ ถ้าคุณต้องดูแลระบบใหญ่ ๆ ใด ๆ ก็ตามนี่ ข้อมูลมันก็จะเริ่มซับซ้อนขึ้น มีส่วนย่อย ๆ เกิดขึ้นมากมายนะคะ เพราะฉะนั้น การที่เราจะเป็นคนที่ออกแบบข้อมูล หรือดูแลฐานข้อมูลนี่ เราจะต้องมองภาพโดยรวมทั้งหมดให้ได้นะคะ เหมือนที่อาจารย์ยกตัวอย่างตอนแรก ครั้งหน้า ๆ ถ้ามี ให้วาดรูป อาจารย์ก็จะเริ่มถามแล้ว ว่าเคยไปห้องสมุดไหมนะคะ เคยยืมหนังสือหรือเปล่า การที่เราจะยืมหนังสือห้องสมุดได้ มันจะต้องเกี่ยวข้องกับอะไรบ้าง เช่น เราเป็นสมาชิกห้องสมุดไหมนะคะ แล้วเราไปห้องสมุด เราจะยืมหนังสือ มันจะต้องมีข้อมูลหนังสือที่เราจะยืมไหมนะคะ ชื่อหนังสืออะไร หนังสือมีรหัสหนังสือหรือเปล่า ยืมได้กี่วันนะคะ ใครเป็นคนแต่งหนังสือเล่มนั้น นี่แค่การยืมหนังสือเล่มเดียว ข้อมูลที่เกิดขึ้นก็มีเยอะแล้ว ใครเป็นคนยืม ใครเป็นคนแต่ง ยืมได้กี่วัน หนังสือชื่ออะไร เลขหนังสืออะไร นักศึกษาคนไหนเป็นคนยืม นะคะ อันนี้ก็แค่ยืมหนังสือเฉย ๆ ในข้อสอบหรือในชีวิตจริง พวกคุณจะต้องเจออะไรที่เยอะกว่านี้เยอะนะคะ กับอีกอันหนึ่งนะคะ เป็นแบบจำลอง ฐานข้อมูลแบบหลายมิตินะคะ ใครเคยเล่นรูบิกลักษณะหลาย ๆ มิติ จะเป็นแบบนั้นเลยนะคะ เป็นก้อน ๆ นะคะ เช่น การเก็บข้อมูลส่วนมาก จะเป็นเกี่ยวกับเชิงธุรกิจเสียมากกว่านะคะ อาจจะเป็นเกี่ยวกับการเก็บข้อมูลผลิตภัณฑ์สินค้า อาจจะเกี่ยวข้องกับขายที่ไหน วันที่เท่าไร มาประมวลผลเป็นตาราง เพราะว่าทุกอย่างจะทับซ้อนกันไปอีกเยอะมาก ขายอะไร ขายที่ไหน ขายเมื่อไร ในสินค้าชนิดเดียวนะคะ เหมือนข้อมูลเวลาเราซื้อของ วันหมดอายุเท่าไร ผลิตที่ไหน ส่วนประกอบอะไร หลาย ๆ ทุกอย่าง ข้อมูลหลาย ๆ ตาราง จะซ้อนกันเป็นมิติ เวลาเราดูขนม 1 ห่อ ส่วนประกอบมีอะไรนะคะ ผลิตที่ไหน ต้องบริโภควันที่เท่าไร ใครเป็นคนผลิต ใครเป็นคนนำเข้า หลาย ๆ อย่างซ้อนทับกัน จนเป็นหลาย ๆ มิตินะคะ ลักษณะคล้าย ๆ รูปทรงแบบนี้นะคะ แค่ของชิ้นเดียวเก็บข้อมูลเยอะมากนะคะ เป็นแบบนี้ จริง ๆ วันนี้ก็จะไม่มีอะไรมาก เพราะว่าเป็นแค่แนะนำ เพื่อปูทางในการวาดภาพ แผนภาพ ER ของเรา ในบทต่อไปนะคะ วันนี้ก็มีการบ้านเหมือนกันค่ะ 10 ข้อ เหมือนเดิม ทำใส่กระดาษรายงานส่งนะคะ เนื้อหาที่จะตอบ ก็อยู่ในสไลด์อาจารย์หมดแล้วนะคะ ก็ไม่น่าจะมีปัญหาอะไร มีอะไรสงสัยไหมคะ เดี๋ยวจะได้ปล่อยทำงาน ไม่มี อย่างนั้นเดี๋ยวจะให้นั่งทำงานนะคะ ก็เนื้อหาประมาณนี้ค่ะล่าม วันนี้เนื้อหาไม่เยอะ ขอบคุณมากนะคะวันนี้ โอเค ขอบคุณค่ะ [สิ้นสุดการถอดความ]