(อาจารย์เกวลี) วันนี้จะเป็นเนื้อหาบทที่ 2 เกี่ยวข้องกับสถาปัตยกรรมฐานข้อมูล แล้วก็ทฤษฎีเกี่ยวกับแบบจำลองข้อมูล ข้อมูลที่ใช้ปัจจุบันนี่ บางคนก็ไม่รู้ว่าทำไมเราต้องเก็บ เหมือนนักศึกษา 1 คนทำไมต้องถามด้วยล่ะ ว่าเราชื่ออะไร นามสกุลอะไร เรียนจบที่ไหนมานะคะ เกรดเฉลี่ยตอนจบ ม. 6 หรือจบสายอาชีพ ได้เกรดเฉลี่ยเท่าไร เทอมที่แล้วเราเรียนไปกี่วิชานะคะ ได้คะแนนเท่าไร ได้เกรดเท่าไร ทำไมต้องเก็บแบบนี้ทุกอย่างก็จะมีเหตุมีผล เพราะว่าข้อมูลทุกรูปแบบนี่มันก็จะมีเนื้อหาความสำคัญของชุดข้อมูลนั้น ๆ อยู่นะคะ โดยที่เราจะเรียกสิ่งนั้น ๆ ว่า "แนวคิดเกี่ยวกับการออกแบบฐานข้อมูล" หรือว่า "สถาปัตยกรรมฐานข้อมูล" นะคะ มันก็จะเป็นข้อกำหนดแล้วก็ข้อตกลง รวมถึงขอบเขตหรืออาจจะเป็นกรอบความคิดนะคะ ในการบรรยายว่าฐานข้อมูลนั้นควรจะเป็นอย่างไรนะคะ โครงสร้าง ก็คือข้อมูลที่เราจะเก็บมีอะไรบ้าง ส่วนประกอบที่เอามาประกอบกันไปจนเป็นระบบฐานข้อมูลมีอะไรนะคะ โดยที่สถาปัตยกรรมฐานข้อมูลนี่ มันจะมีส่วนประกอบสำคัญอยู่ 3 ส่วนนะคะ ก็คือในตัวสถาปัตยกรรมระบบเองนะคะ และก็ความเป็นอิสระของข้อมูลนะคะ เดี๋ยวจะอธิบายว่าแต่ละอันคืออะไร กับภาษาที่ใช้ในการจัดการฐานข้อมูลนะคะ 3 อย่างนี้จะต้องทำงานร่วมกัน สถานปัตยกรรมของฐานข้อมูลนี่กับขอบเขตนะคะ หรือกรอบ ถ้าเป็นภาษาทางวิชาการเรียกว่า "กรอบ" ที่ใช้ประโยชน์เชิงวิชาการเขาเรียกว่า "กรอบ" ที่ใช้ประโยชน์ในการบรรยายว่าทำไมเราถึงสร้างฐานข้อมูลแบบนี้ ทำไมเราเก็บข้อมูลแบบนี้ และในฐานข้อมูลนี่เรามีโครงสร้างเก็บข้อมูลแบบไหนบ้างนะคะ ซึ่งหลัก ๆ แล้วนี่ โครงสร้างที่ใช้ในการสร้างฐานข้อมูลนี่ มันจะมีอยู่ 3 ระดับนะคะ มีระดับภายนอก ระดับภายใน แล้วก็ระดับแนวคิด เดี๋ยวจะอธิบายไปทีละอย่าง ทีละอย่างนะคะ ความเป็นอิสระของข้อมูลคืออะไรนะคะ ก็คือการที่ผู้ใช้งานสามารถเปลี่ยนแปลงข้อมูล อาจจะเป็นในระดับของการออกแบบฐานข้อมูล หรือระดับถึงขั้นการเก็บข้อมูลแล้วก็ได้ โดยที่ถ้าเราเก็บข้อมูลหรือเปลี่ยนแปลง หรือเปลี่ยนแปลงรูปแบบการจัดเก็บข้อมูล โปรแกรมที่ใช้งานจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนะคะ โปรแกรมก็อยู่ส่วนของโปรแกรม ข้อมูลก็จะอยู่ส่วนของข้อมูล จะแยกออกจากกันนะคะ โดยที่ผู้ใช้งานนี่จะมองเห็นแค่ว่าการเก็บข้อมูลระดับภายนอก ก็คือเราเก็บอะไรบ้างนะคะ เหมือนเวลาคุณอยากเล่น TikTok อยากเล่น Facbook อยากเล่น Instargram เขาก็จะถามว่าคุณชื่ออะไร มีเบอร์โทรศัพท์ไหม มีโปรไฟล์ อันนี้คือข้อมูลระดับภายนอกที่ผู้ใช้งานอย่างเรา ๆ นี่เป็นคนให้ข้อมูลไป แล้วก็เป็นสิ่งที่เราเป็นคนเห็นเองว่าข้อมูลที่กรอกลงไปนี่มีอะไรบ้างนะคะ แต่ถามว่าถ้าเราอยากเปลี่ยนแปลงได้ไหม ว่านอกจากรูปภาพนี่ อยากให้เขาขอเกี่ยวกับอะไรดีล่ะ สถานะการเรียน เราจะไปบอกเขาว่าอยากบอก อยากให้เพิ่มเมนูตรงนี้ได้ไหม เราทำไม่ได้นะคะ เพราะอันนั้นเป็นระดับโครงสร้าง ระดับแนวคิด ระดับภายใน ซึ่งผู้ใช้งานธรรมดาจะแก้ไขไม่ได้นะคะ โดยที่เพราะฉะนั้นนี่ สมมติเรามีการเปลี่ยนแปลงข้อมูล เราจะเรียกว่ามีการเปลี่ยนแปลงข้อมูลส่วนตัวเรานี่ล่ะนะคะ ถ้าเราเปลี่ยนแปลงเฉพาะข้อมูลเราตัวเองนี่ มันจะไม่กระทบกับคนอื่น รวมถึงไม่ได้กระทบกับ Facebook ไม่ได้กระทบกับ Instagram TikTok เขาก็ยังใช้งานปกติได้ ถึงแม้คุณจะบอกว่าจะเปลี่ยนแปลงรูปโปร์ไฟล์ ถามว่าโปรแกรมมันจะพังไหม ไม่นะคะ อันนี้คือการเปลี่ยนแปลงระดับต่ำ ก็คือเป็นการเปลี่ยนแปลงของผู้ใช้งานโดยตรงนะคะ ความเป็นอิสระของข้อมูลเชิงตรรกะ ก็คือการเปลี่ยนแปลงมุมมองของผู้ใช้งาน อย่างเช่น คุณอยากจะ วันนี้เราอัปรูปไป 4 รูปนะคะ คุณอยากจะสลับตำแหน่งนะคะ ย้ายจากรูปสุดท้ายมารูปที่ 1 ถามว่าโปรแกรมนั้นจะพังไหม ไม่พังนะคะ เพราะมันถือว่าเป็นการเปลี่ยนแปลงภายนอก ไม่ได้เปลี่ยนแปลงโค้ดโปรแกรม ไม่ได้บอกให้ผู้ดูแลระบบลบเมนูตรงนี้ออก ไม่ใช่นะคะ อันนี้ก็คือถ้าผู้ใช้งานอยากเปลี่ยนแปลงข้อมูลส่วนตัวของตัวเองอย่างนี้ เปลี่ยนแปลงได้เลยนะคะ ไม่กระทบกับคนอื่น ไม่กระทบกับระบบโดยรวมนะคะ รวมถึงความเป็นอิสระของข้อมูลเชิงกายภาพนะคะ ถ้าสมมติว่าวันหนึ่ง Facebook ย้ายเครื่องคอมพิวเตอร์ในการเก็บข้อมูล คนใช้งานถามว่าย้ายจากเครื่องหนึ่งไปอีกเครื่องหนึ่ง ถามว่าเราใช้ Facebook ได้ไหม ได้ มันไม่กระทบกับเรานะคะ มันถือว่าเป็นโครงสร้างของข้อมูลระดับภายใน ส่วนของบริการเขาอาจจะมีการปรับเปลี่ยนย้ายจากเครื่อง A ไปเครื่อง B แต่ผู้ใช้งานก็ยังสามารถทำงานได้ตามปกติ ไม่ได้รู้สึกถึงความผิดปกติใด ๆ อาจจะมีช่วงที่แบบช่วงที่ Restart เครื่องอะไรอย่างนี้นะคะ แต่ถามว่า Facebook เราหายไปไหม ไม่หายนะคะ อันนี้คือตัวอย่างคร่าว ๆ เชิงตรรกะเป็นอย่างไร เชิงกายภาพเป็นอย่างไร ต่อมาภาษาหลักของระบบจัดการฐานข้อมูลนะคะ ก็จะมีอยู่ 3 ภาษาหลัก ๆ นะคะ อันนี้หมายถึงว่าภาษาเชิงโครงสร้างที่ใช้นะคะ ไม่ได้หมายถึงชื่อภาษาทางโปรแกรม อันแรก คือ ภาษาสำหรับนิยามข้อมูลนะคะ ก็จะเป็นภาษาที่ใช้ในการกำหนดโครงสร้างของฐานข้อมูลนะคะ ว่าระดับแนวคิด ก็คือคุณวางแผนไว้ว่าอย่างไร อย่างเช่น อาจารย์อาจจะพอคุณเรียนปีสูง ๆ ขึ้น จะได้ทำ Project อาจจะทำโปรแกรมเป็นของตัวเอง สมมติว่าได้ทำโปรเจกต์เกี่ยวกับร้านในร้านหนัง ในร้านหนังสือร้านหนึ่งเราต้องเก็บข้อมูลอะไรบ้าง เราต้องเขียนออกมาให้ได้นะคะ สิ่งนี้เราจะเรียกว่าระดับแนวคิดเราจะมาให้ความหมายว่าในฐานข้อมูลเรานี่ ระหว่างผู้ใช้งาน สมาชิก เจ้าของร้าน สามารถทำอะไรได้บ้าง สิ่งเหล่านี้จะเรียกว่า "View" หรือจะเรียกว่ามุมมองของแต่ละคน เอาง่าย ๆ ยกตัวอย่างอีกแล้ว Facebook Facebook หน้าที่คุณดูกับหน้าที่เพื่อนดูอาจจะไม่เหมือนกัน ใน Facebook สามารถกำหนดว่ารูปนี้ฉันจะเก็บไว้ดูคนเดียว หรือรูปนี้จะเพื่อนดูได้รูปนี้จะให้ใครก็ได้มาดู ไม่ได้ปิดกั้น อย่างนี้ก็มี อันนี้คือการกำหนดสถานะมุมมองของการดูข้อมูลของเรา เราจะกำหนดตั้งแต่การกำหนดโครงสร้างของฐานข้อมูลเลยว่าผู้ใช้งานแต่ละคนดูข้อมูลส่วนไหนได้บ้างนะคะ ต่อมาเป็นภาษาในการจัดการข้อมูล อันนี้จะเป็นภาษาเชิง Programing ซึ่งไว้สำหรับจัดการข้อมูลในฐานข้อมูลก็จะเป็นตั้งแต่การค้นหาข้อมูล การเพิ่ม การลบ การแก้ไขในฐานข้อมูลนะคะ อันนี้ก็จะสามารถทำได้ตามสิทธิ์ของผู้ใช้งานแต่ละคน บางคนค้นหาได้ แต่เพิ่มไม่ได้ บางคนเพิ่มได้ แต่ห้ามลบนะคะ อันนี้ก็เป็นคำสั่งที่ใช้ภายในฐานข้อมูล ต่อมาเป็นภาษาควบคุมนะคะ มันจะเป็นภาษาที่เอาไว้สำหรับควบคุมความถูกต้องของข้อมูล เช่นอะไรบ้าง อย่างเช่น อาจารย์ให้กรอกชื่อนะคะ กรอกชื่อ แต่ว่านักศึกษาบางคนลืมเปลี่ยนภาษา หรือลืมเปลี่ยนปุ่ม หรือเปิดปุ่มตัวเลขไว้นะคะ กลายเป็นว่าพิมพ์ชื่อตัวเองเป็นตัวเลข ภาษาระดับควบคุม ก็คือมันจะเป็นการตรวจสอบว่าข้อมูลที่นักศึกษาใส่มาถูกหรือผิด เช่น อาจารย์กำหนดให้กรอกได้เฉพาะตัวหนังสือเท่านั้น ใส่ตัวเลขไม่ได้นะคะ หรือการเกิดภาวะพร้อมกัน อย่างเช่น จองตั๋วคอนเสิร์ต ดังมาก เข้ามาจองพร้อมกันสัก 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 ได้ไหม ได้ แต่ถามว่าเวลาเราค้นหาข้อมูล ถ้าเราเรียงตามลำดับ แน่นอนว่ามันหาข้อมูลได้เร็วกว่า เราก็มาตกลงกันเลยว่าเราจะเรียงลำดับนักศึกษาในห้องนี้อย่างไร อย่างเช่น ซึ่งมาตรฐานทั่วไปก็จะเรียงลำดับตามรหัสนักศึกษาจากน้อยไปมากใช่ไหมคะ แต่ถ้าเราไม่มีรหัสนักศึกษาล่ะ โดยหลักทั่วไปก็จะเรียงตาม ก ไก่ ถึง ฮ นกฮูก แล้วแต่ว่าเราทำข้อตกลงอย่างไร หรือบางฐานข้อมูลก็จะบอกว่าเรียงตามอายุ อายุมากขึ้นก่อน หรืออะไรอีกล่ะ เพศชายขึ้นก่อน เพศหญิงตามมา คนเกิดวันอาทิตย์ขึ้นก่อน หรือคนเกิดวันจันทร์ขึ้นก่อน แล้วแต่โครงสร้างที่เรากำหนดไว้ ทำไม เพื่อให้มันหาข้อมูลได้เร็ว เพราะเรารู้แล้วว่าเกณฑ์ในการจัดเรียงข้อมูลมันคืออะไร เพราะว่าข้อมูลที่เก็บอยู่ใน Hard Disk มันไม่เรียง 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 ระดับนะคะ ระดับภายใน ระดับภายนอก ระดับแนวคิด สถาปัตยกรรมทั้ง 3 ระดับนะคะ แล้วก็แนวคิด แน่นอน มุมมองของผู้ใช้งานแต่ละคนสามารถทำงานได้โดยอิสระ แยกจากกันนะคะ อาจจะมีการนำข้อมูลหลาย ๆ ตารางมารวมกันนะคะ เพื่อให้สามารถครอบคลุมในการเรียกดูข้อมูลได้ อาจจะมองในคนละมุมกัน แต่ใช้ฐานข้อมูลเดียวกันได้ แล้วก็ผู้ใช้งานไม่จำเป็นต้องรู้ว่าข้อมูลที่เก็บไว้นี่อยู่ตำแหน่งไหนของ Hard disk ไม่จำเป็นต้องรู้ ถ้าอยากเรียกข้อมูลขึ้นมาดูได้ก็ต้องดูได้นะคะ โดยบที่ 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 เลย ทุกครั้งนะคะ แบบจำลองข้อมูลตัวนี้ข้อมูลตัวนี้ถามว่าดีไหม ดี แต่ว่าทำงานช้านะคะ ลักษณะก็จะเป็นแบบนี้นะคะ เริ่มจากตรงนี้กว่าจะลงมาถึงตรงนี้ได้ต้องผ่านทุกชั้นนะคะ ถ้าเราอยากดูข้อมูลตรงนี้เลยนี้ ตรงนี้ที่อาจารย์วง ๆ ไว้นี่ เข้ามาตรงนี้เลยได้ไหม ไม่ได้ เพราะกฎของมัน ก็คือเริ่มจากบนสุด ค่อยลงมาข้างล่าง มันดีค่ะ แต่มันช้านะคะ จะเป็นประมาณนี้นะคะ เป็น Root ลงมา Parent ตรงนี้ เหมือนข้อมูลตรงนี้ค่ะ อันนี้คือแบบจำรองที่เราวาดจริง ๆ นะคะ สมมติอาจารย์อยากดูข้อมูลคนนี้นะคะ ระดับล่างสุดเลย อาจารย์เข้ามาดูข้อมูลคนนี้โดยตรงไม่ได้ อาจารย์จะต้องสั่งผ่านจากข้างบน ค่อย ๆ ลงมาตามลำดับชั้นเรื่อย ๆ จนถึงคนนี้ ถามว่าเราเป็นผู้ใช้งานจ่เราอาจจะไม่รู้สึกว่ามันหาข้อมูลช้า แต่ในทางการทำงานทางกายภาพของคอมพิวเตอร์นี่ มันทำงานโดยคิดเป็นหน่วยใหญ่ ๆ ก็คือเป็นวินาที ยิ่งใช้เวลาหาข้อมูลนานเท่าไร ก็ยิ่งมีค่าใช้จ่ายที่เพิ่มขึ้นตามไปด้วยนะคะ เพราะฉะนั้น เหมือนในยุคปัจจุบัน ทำไมทุกคนอยากได้คอมพิวเตอร์ที่เร็ว คิดเร็วเร็ว หาข้อมูลเร็วนะคะ ถามว่าอันนี้มันช้าจนเราทนไม่ได้ไหม ถ้าข้อมูลมันมีแค่นี้มันทนได้ค่ะ แต่ถ้าข้อมูลมันมากกว่านี้ล่ะ หลายลำดับชั้นกว่านี้ล่ะ แค่หาชื่อคนอาจจะรอเป็นชั่วโมงก็ได้ ถ้าจำนวนข้อมูลมันเยอะนะคะ อันนี้ก็เป็นแบบจำลองข้อมูลที่ถามว่าทำงานได้ดีค่ะ แต่ว่าอาจจะเสียเวลานะคะ ข้อดีก็คือเข้าใจง่าย ลักษณะเหมือนรากของต้นไม้อย่างที่บอกนะคะ ข้อมูลมีความสัมพันธ์แบบ 1 ต่อมากกว่า 1 จริง ๆ อยากพูดภาษาอังกฤษมากกว่า One-to-Many แบบพ่อ 1 คน มีลูกได้หลายคนประมาณนี้ ความสามารถในการควบคุมความถูกต้องของข้อมูลมีสูงนะคะ ข้อมูลที่เหมาะกับข้อมูลแบบจำลองแบบนี้ส่วนมากจะเป็น เป็นการเรียงลำดับอย่างต่อเนื่องนะคะ ที่จะเหมาะที่จะใช้ แต่มันก็มีข้อเสียอย่างที่บอกนะคะ มันไม่สามารถรองรับข้อมูลที่มีความสัมพันธ์แบบ Many-to-Many ได้ เดี๋ยว One-to-One One-to-Many Many-to-Many หลายสิ่งต่อหลายสิ่ง หรือหลายสิ่ง ต่อหลายสิ่งอะไรพวกนี้ เดี๋ยวเราจะเรียนในบทถัด ๆ ไป มันคืออะไรนะคะ เดี๋ยวจะอธิบายโดยละเอียดในบทถัด ๆ ไป โดยแบบจำลองแบบลำดับชั้นนี่ ความยืดหยุ่นมันก็จะน้อยนะคะ การปรับเปลี่ยนโครงสร้างมีความยุ่งยาก เพราะทุกอย่างจะต้องเริ่มจากด้านบน ถ้าเปลี่ยนตรงใดตรงหนึ่งต้องไล่ดูทั้งหมด เพราะมันอาจจะกระทบกับอีกส่วนอื่นก็ได้นะคะ อย่างที่บอกค่ะ การค้นหาข้อมูลระดับล่าง ๆ จะต้องทำตั้งแต่บนลงล่างลงมา เข้าไปหาโดยตรงไม่ได้นะคะ เสียเวลา แล้วก็ทำให้การเขียนโปรแกรมในอนาคตมันยาก เพราะว่าทุกอย่างจะต้องวนกลับมาจุดเริ่มต้น วนกลับมาจุดเริ่มต้น เสียเวลามากนะคะ มันก็เลยมีการพัฒนาแบบจำลองข้อมูลแบบเครือข่ายขึ้นมานะคะ โดยแบบจำลองข้อมูลแบบเครือข่ายนี่ จะใช้ตัวชี้ตำแหน่งที่เรียกว่า "Pointer" ก็คือใช้ลูกศรนะคะ ใช้ลูกศร ก็จะมีการเชื่อมโยงความสัมพันธ์ระหว่างข้อมูลในแต่ละแถวเข้าด้วยกันนะคะ ก็จะเป็นเชื่อมโยงกันได้นะคะ ข้อมูลสามารถวิ่งผ่านกันได้ ไม่จำเป็นต้องจากบนลงล่างมา อาจจะเลี้ยวซ้ายเลี้ยวขวาได้แล้วคราวนี้นะคะ ลักษณะของแบบจำลองเชิงเครือข่ายก็จะเป็นแบบนี้นะคะ แต่ก่อนเราจะเริ่มจากบนลงล่างใช่ไหม คราวนี้ถ้าใบส่งของนี่ มันสามารถไปหาใครได้บ้าง ใบส่งของ 1 ใบ มีข้อมูลอะไรบ้าง ก็คือรายการในใบส่งของใครเป็นคนขาย ใครเป็นคนซื้อ เขาจ่ายเงินแบบไหน อันนี้ไม่ต้องจากบนลงล่างใช่ไหมคะ หรือจะดูว่าพนักงานวันนี้ขายของอะไรได้บ้าง ก็สามารถดูได้ ลูกค้าคนนี้อยู่ในใบส่งของไหน ใครเป็นคนขาย ลูกค้าจ่ายเงินอย่างไรก็ดูได้ ดูได้ทุกตำแหน่งนะคะ โดยที่ไม่ต้องเริ่มจากบนลงล่าง สามารถเข้าไปดูได้โดยตรง ข้อดีแบบจำลองข้อมูลแบบเครือข่ายนะคะ ก็ความซ้ำซ้อนในการเกิดขึ้นของข้อมูลก็เกิดขึ้นน้อยกว่าลำดับชั้น เรียกดูข้อมูลแบบไป-กลับได้ง่ายนะคะ เพราะว่าการค้นหาข้อมูลทำได้ดีกว่า เพราะว่ามีตัวชี้ตำแหน่งหรือว่า Pointer ในการเข้าถึงข้อมูลได้ในทันทีนะคะ แต่สิ่งที่มีข้อดีก็ต้องมีข้อเสียนะคะ ข้อเสีย ก็คือการป้องกันความปลอดภัยของข้อมูลมีน้อยนะคะ แล้วก็สิ้นตัวเปลืองพื้นที่ในตัวเก็บตัวชี้ตำแหน่ง ถ้าตารางข้อมูลมันมีแค่นี้น่ะค่ะ มันก็ไม่เปลืองหรอก แต่ถ้าสมมติมันเป็นระดับห้างสรรพสินค้าล่ะ ร้านค้าใหญ่ ๆ ข้อมูลเกิดขึ้นแทบจะทุกนาที มันก็ต้องมีตัวชี้ตำแหน่งเก็บทุก ๆ ๆ ๆ สิ่งที่เกิดขึ้น ทำไมถึงบอกว่าเปลืองไม่ได้ เพราะว่าใช้เชิงธุรกิจ อะไรที่เป็นสิ่งที่เราต้องจ่ายเพิ่ม เช่น การซื้อฮาร์ดดิสเพิ่มเพื่อเก็บข้อมูล เป็นต้นทุน หมายความว่าคุณจะต้องลงทุกเพิ่มขึ้นในสิ่งที่อาจจะไม่ได้จำเป็นขนาดนั้นนะคะ แล้วก็การเปลี่ยนแปลงเชิงโครงสร้างก็อาจจะมีความยุ่งยาก เพราะหลาย ๆ อย่างมันเชื่อมต่อกันอยู่ เช่น อยู่ดี ๆ อาจารย์บอกว่า อาจารย์อยากตัดใบส่งของออก แล้วพนักงานกับลูกค้าเขาจะเชื่อมโยงกันอย่างไร ผ่านสินค้าหรือ แล้วคุณไม่ต้องไปส่งของลูกค้าหรือนะคะ อันนี้ก็จะมีข้อสงสัยกับข้อที่ต้องมาคิดตามเหมือนกันว่าถ้าเราจะมีการเปลี่ยนแปลงตำแหน่งบางตำแหน่ง สำหรับการชี้ตำแหน่งนะคะ มันต้องทำอย่างไร มันก็เลยมีการพัฒนาขึ้นมาอีก เป็นแบบจำลองฐานข้อมูลเชิงสัมพันธ์นะคะ ก็จะเป็นแบบจำลองข้อมูลที่ได้รับความนิยมมากในปัจจุบัน เพราะว่านำเสนอข้อมูลในลักษณะที่เป็นตาราง เข้าใจง่าย มีแถว มีคอลัมน์นะคะ สามารถแสดงให้เห็นถึงความสัมพันธ์กับตารางอื่น ๆ ได้ง่ายนะคะ แต่เราจะใช้สิ่งที่เรียกว่า "กุญแจ" หรือ "Key" เพื่ออ้างอิงไปยังตารางอื่น ๆ เหมือนอย่างนี้ อันนี้คือตารางพนักงานขาย ตารางลูกค้าอะไรพวกนี้ค่ะ เราไม่รู้ว่าเราจะอ้างอิงด้วยอะไรใช่ไหมคะ อย่างเช่น ใบส่งของมีของอยู่ 5 อย่าง เราก็รู้ว่าแค่ 5 อย่างไม่ได้มีจุดสังเกตใด ๆ ให้รู้นะคะ มันก็เลยมีการพัฒนาสิ่งที่เรียกว่า "Key" หรือ "กุญแจ" ขึ้นมานะคะ โดยกุญแจของ 1 คนนี่ มันสามาถเป็นได้ทั้งกุญแจหลักแล้วก็คีย์รองได้ เดี๋ยวรายละเอียดของคีย์หลักคีย์ รองคีย์ คีย์ภายนอกนะคะ จะอธิบายโดยละเอียดในบทถัด ๆ ไปนะคะ อันนี้เอาให้เห็นคร่าว ๆ ก่อน อย่างเช่นนะคะ ตารางนี้นะคะ อันแรกจะเป็นตารางเก็บข้อมูลเกี่ยวกับสาขา สมมติว่าเราเปิดร้านค้า มีตารางเกี่ยวกับสาขาที่เราเปิด กับตารางพนักงาน ทำไมรหัสสาขาอาจารย์ต้องขีดเส้นใต้ด้วย ทำไมรหัสพนักงานจะต้องขีดเส้นใต้ด้วย ความสำคัญมีอยู่นะคะ ไม่ใช่ว่าขีดเฉย ๆ เพื่อเน้นให้พวกคุณอ่าน ไม่ใช่ มันแสดงให้เห็นว่าในตารางนี้สิ่งใดที่ขีดเส้นใต้ ข้อนั้น ข้อมูลในตารางนั้นจะซ้ำกันไม่ได้ เราเรียกสิ่งนี้ว่า "คีย์หลัก" นะคะ รหัสพนักงานขีดเส้นใต้ ก็แสดงว่ารหัสพนักงานแต่ละคนจะต้องไม่ซ้ำกัน เพราะรหัสพนักงานเป็นคีย์หลัก แต่ถ้าสังเกตดี ๆ ในตารางพนักงานทำไมมีรหัสสาขาโผล่ขึ้นมาตรงนี้ด้วย แล้วทำไมไม่ขีดเส้นใต้ล่ะในตารางนี้ เพราะในตารางพนักงาน รหัสสาขา ไว้สำหรับเป็นคีย์นอกในการเชื่อมต่อกันว่า 2 ตารางนี้ มันมีความสัมพันธ์กันอย่างไรนะคะ เดี๋ยวจะอธิบายอีกทีหนึ่งว่าทำไมต้องมีความสัมพันธ์กันล่ะ เอาง่าย ๆ เลยค่ะ พนักงานคนที่ 1 ถ้าอาจารย์ไม่มีรหัสสาขา คุณจะรู้ได้ไหมว่าพนักงานคนนี้ทำงานที่สาขาไหน ไม่รู้เลย หรืออาจจะบอกว่าสาขาอุดรฯ มีใครทำงานบ้างรู้ไหม ถ้าไม่เชื่อมกับตารางพนักงานก็ไม่รู้เลยนะคะ เดี๋ยวจะอธิบายอีกทีหนึ่งในบทของการวาดความสัมพันธ์นะคะ ข้อดีของแบบจำลองเชิงสัมพันธ์ที่เป็นตาราง อ่านง่ายเข้าใจง่าย เพราะนำเสนอในลักษณะของตาราง สามารถเลือกดูตามสิ่งที่เราสนใจ ความซับซ้อนก็มีน้อย เพราะว่าข้อมูลในเชิง 2 มิตินี่ พอมันมองมันมองง่าย ความปลอดภัยค่อนข้างดีนะคะ เพราะว่าผู้ใช้งานก็จะไม่รู้ว่าเราอยากเรียกใช้ข้อมูลอะไรได้บ้างนะคะ แล้วก็โครงสร้างของข้อมูล แน่นอนถ้าเราเปลี่ยนโปรแกรมก็ยังสามารถทำงานได้นะคะ แต่ข้อเสียของมันก็มีนะคะ ก็คือค่าใช้จ่ายค่อนข้างสูงนะคะ เพราะว่าทรัพยากรที่ใช้ในการจัดการนี่ ต้องมีสมรรถที่สูงนิดหนึ่ง ประมวลผลต้องเร็วนะคะ การปรับปรุงแก้ไขข้อมูลก็อาจจะมีความยุ่งยาก เพราะว่าไม่รู้ว่าข้อมูลภายในที่เก็บจริง ๆ แล้วนี่ มันเป็นอย่างไร มีคนเดียวที่รู้ ก็คือคนจัดการฐานข้อมูลเท่านั้น บางครั้งผู้ใช้งานนี่อาจจะเป็นผู้ที่ต้องคีย์ข้อมูลเข้าไป ก็อาจจะเริ่มงงว่าสรุปว่าฉันต้องกรอกข้อมูลอะไร ทำไมข้อมูลมันไม่ผ่านนะคะ อย่างเช่น อาจจะไม่มี อันนี้มันก็จะเกี่ยวเนื่องไปถึงการออกแบบระบบด้วย เหมือนบางคนใส่เลยบัตรประชาชนไม่ครบ 13 หลัก ถ้าผู้ดูแลระบบออกแบบระบบไม่ดี มันก็จะไม่มีแจ้งเตือนว่าเลขบัตรประชาชนคุณน่ะไม่ครบ คนใช้งานก็จะเริ่มงงแล้วว่าฉันผิดอะไรนะคะ มันตั้งแต่การออกแบบเลย เพราะฉะนั้น คนดูแลระบบก็ต้องป้องกันสิ่งที่จะเกิดขึ้นด้วย การแจ้งเตือนว่าเราผิดพลาดตรงไหน ข้อมูลจะเป็นอะไรได้บ้างนะคะ เหมือนการเก็บข้อมูลรูปภาพ รูปภาพต้องขนาดเท่าไรต้องเป็นภาพสีไหม หรือว่าต้องเป็นภาพขาวดำเท่านั้น จะต้องอธิบายให้ชัดเจนนะคะ เพราะว่าถ้ามีการปรับปรุงข้อมูลทีหนึ่งนี่ บางทีถ้าผู้ใช้งานไม่เข้าใจมันก็จะไม่สามารถบันทึกลงฐานข้อมูลได้นะคะ กับแบบจำลองข้อมูลเชิงวัตถุนะคะ ส่วนมากจะเป็นการออกแบบเพื่อเขียนแอปพลิเคชันนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่งนะคะ มันก็จะมีการห่อหุ้มวัตถุนั้น ๆ ไว้ด้วยอะไรบ้าง นะคะ อันนี้ก็พอเรียนปีสูงขึ้น ทุกคนก็จะได้เรียนการทำงานเชิงวัตถุมากขึ้นนะคะ อันนี้ปี 1 ก็ฐานข้อมูลเชิงสัมพันธ์นี่ก็เต็มที่แล้วนะคะ อันนี้อาจารย์เอามาให้รู้จักเฉย ๆ เพราะว่าถ้าเป็นฐานข้อมูลหรือการเขียนโปรแกรมเชิงวัตถุใด ๆ ก็ตาม มันจะทำงานซับซ้อนได้ดีกว่า มันเหมาะกับการทำงานเกี่ยวกับภาพกราฟิก การเก็บวิดีโอ เสียง อย่างเช่น เราเล่น Facebook มีหมดเลย ทั้งภาพ ทั้งวิดีโอ ทั้งเสียง ที่เราต้องเก็บข้อมูล แล้วก็สามารถเอาข้อมูลที่มีอยู่หรือนานมาแล้วนี่ เรียกกลับมาใช้ซ้ำได้ง่ายกว่ารูปแบบจัดการฐานข้อมูลชนิดอื่น ๆ แต่ข้อเสียของการทำงานเชิงวัตถุ ก็คือจะต้องมีความชำนาญมาก ๆ แล้วก็เข้าใจในการมองโปรแกรม หรือมองข้อมูลนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่ง อาจจะต้องใช้ประสบการณ์ในการจัดการกับข้อมูลที่มีความซับซ้อนมาก ๆ พอเราอายุเท่านี้อาจจะมองไม่เห็นความซับซ้อนของข้อมูลนะคะ แต่ถ้าไปทำงานจริง ๆ นี่ ถ้าคุณต้องดูแลระบบใหญ่ ๆ ใด ๆ ก็ตามนี่ ข้อมูลมันก็จะเริ่มซับซ้อนขึ้น มีส่วนย่อย ๆ เกิดขึ้นมากมายนะคะ เพราะฉะนั้น การที่เราจะเป็นคนที่ออกแบบข้อมูลเราจะต้องมองภาพโดยรวมทั้งหมดให้ได้นะคะ เหมือนที่อาจารย์ยกตัวอย่างตอนแรก ครั้งหน้า ๆ ถ้ามีให้วาดรูป อาจารย์ก็จะเริ่มถามแล้วว่าเคยไปห้องสมุดไหมนะคะ เคยยืมหนังสือหรือเปล่า การที่เราจะยืมหนังสือห้องสมุดได้ มันจะต้องเกี่ยวข้องกับอะไรบ้าง เช่น เราเป็นสมาชิกห้องสมุดไหมนะคะ แล้วเราไปห้องสมุด เรายืมหนังสือ มันจะต้องมีข้อมูลหนังสือที่เราจะยืมไหมนะคะ ชื่อหนังสืออะไร หนังสือมีรหัสหนังสือหรือเปล่า ยืมได้กี่วันนะคะ ใครเป็นคนแต่งหนังสือเล่มนั้น นี่แค่การยืมหนังสือเล่มเดียว ข้อมูลที่เกิดขึ้นก็มีเยอะแล้ว ใครเป็นคนยืม ใครเป็นคนแต่ง ยืมได้กี่วัน หนังสือชื่ออะไร เลขหนังสืออะไร นักศึกษาคนไหนเป็นคนยืม นะคะ อันนี้ก็แค่ยืมหนังสือเฉย ๆ ในข้อสอบหรือในชีวิตจริง พวกคุณจะต้องเจออะไรที่เยอะกว่านี้อีกเยอะนะคะ กับอีกอันหนึ่งนะคะ เป็นแบบจำลองฐานข้อมูลแบบหลายมิตินะคะ ใครเคยเล่นรูบิกลักษณะหลาย ๆ มิติจะเป็นแบบนั้นเลยนะคะ เป็นก้อน ๆ นะคะ เช่น การเก็บข้อมูลส่วนมากจะเกี่ยวกับเชิงธุรกิจเสียมากกว่านะคะ อาจจะเป็นเกี่ยวกับการเก็บข้อมูลผลิตภัณฑ์สินค้า อาจจะเป็นเกี่ยวข้องกับขายที่ไหน บนที่เท่าไร มาประมวลผลเป็นตาราง เพราะว่ามันจะทับซ้อนกันไปอีกเยอะมาก ขายอะไร ขายที่ไหน ขายเมื่อไหร่ ในสินค้าชนิดเดียวนะคะ เหมือนข้อมูลเวลาเราซื้อของ วันหมดอายุเท่าไร ส่วนประกอบอะไร หลาย ๆ ทุกอย่าง ข้อมูลทุกอย่างจะซ้อนกันเป็นมิติ เวลาเราดูขนม 1 ห่อ ส่วนประกอบคืออะไรนะคะ ผลิตที่ไหน ต้องบริโภควันที่เท่าไร ใครเป็นคนผลิต ใครเป็นคนนำเข้า ซ้อนทับกันจะเป็นหลาย ๆ มิตินะคะ ลักษณะคล้าย ๆ รูปทรงแบบนี้นะคะ แค่ของชิ้นเดียวเก็บข้อมูลเยอะมากนะคะ เป็นแบบนี้ จริง ๆ วันนี้ก็จะไม่มีอะไรมาก เพราะว่าเป็นแค่แนะนำเพื่อปูทางในการวาดภาพแผนภาพ ER ของเราในบทต่อไปนะคะ วันนี้ก็มีการบ้านเหมือนกันค่ะ 10 ข้อ เหมือนเดิม ทำใส่กระดาษรายงานส่งนะคะ เนื้อหาที่จะตอบก็อยู่ในสไลด์อาจารย์หมดแล้วนะคะ ก็ไม่น่าจะมีปัญหาอะไร มีอะไรสงสัยไหมคะ เดี๋ยวจะได้ปล่อยทำงาน ไม่มีอย่างนั้นเดี๋ยวจะให้นั่งทำงานนะคะ ก็เนื้อหาประมาณนี้ค่ะ ล่ามวันนี้เนื้อหาไม่เยอะ ขอบคุณมากนะคะวันนี้ โอเค ขอบคุณค่ะ