เนื้อหาความสำคัญของชุดข้อมูลนั้น ๆ อยู่นะคะ โดยที่เราจะเรียกสิ่งนั้น ๆ ว่า แนวคิดเกี่ยวกับการออกแบบฐานข้อมูล หรือสถาปัตยกรรมของฐานข้อมูลนะคะ มันก็จะเป็นข้อกำหนดแล้วก็ข้อตกลงรวมถึงขอบเขต หรืออาจจะเป็นกรอบความคิดนะคะ ในการบรรยายว่าฐานข้อมูลนั้น ๆ ควรจะเป็นอย่างไรนะคะ โครงสร้าง ก็คือข้อมูลที่เราจะเก็บมีอะไรบ้าง ส่วนประกอบที่เอามาประกอบกันไปจนเป็นระบบฐานข้อมูลมีอะไรนะคะ โดยที่สถาปัตยกรรมฐานข้อมูลนี่ มันจะมีส่วนประกอบสำคัญอยู่ 3 ส่วนนะคะ ก็คือในตัวสถาปัตยกรรมระบบเองนะคะ และก็ความเป็นอิสระของข้อมูลนะคะ เดี๋ยวจะอธิบายว่าแต่ละอันคืออะไร กับภาษาที่ใช้ในการจักการฐานข้อมูลนะคะ 3 อย่างนี้จะต้องทำงานร่วมกันสถานปัตยกรรมของฐานข้อมูลนี่ มันจะเป็นเหมือนกับขอบเขตนะคะ หรือกรอบ ถ้าเป็นภาษาทางวิชาการเรียกว่า "กรอบ" ที่ใช้ประโยชน์ในการบรรยายว่าทำไมเราถึงสร้างฐานข้อมูลแบบนี้ ทำไมเราเก็บข้อมูลแบบนี้ แล้วในฐานข้อมูลนี่เรามีโครงสร้างเก็บข้อมูลแบบไหนบ้างนะคะ ซึ่งหลัก ๆ แล้วนี่ โครงสร้างที่ใช้ในการสร้างฐานข้อมูลนี่ มันจะมีอยู่ 3 ระดับนะคะ มีระดับภายนอก ระดับภายใน แล้วก็ระดับแนวคิด เดี๋ยวจะอธิบายไปทีละอย่าง ทีละอย่างนะคะ ความเป็นอิสระของข้อมูลคืออะไรนะคะ ก็คือการที่ผู้ใช้งานสามารถเปลี่ยนแปลงข้อมูล อาจจะเป็นในระดับของการออกแบบฐานข้อมูล หรือระดับถึงขั้นการเก็บข้อมูลแล้วก็ได้ โดยที่ถ้าเรามีการเปลี่ยนแปลงข้อมูล หรือเปลี่ยนแปลงการจัดเก็บข้อมูล โปรแกรมที่ใช้งาน จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนะคะ โปรแกรมก็อยู่ส่วนของโปรแกรม ข้อมูลก็จะอยู่ของข้อมูล จะแยกออกจากกันนะคะ โดยที่ผู้ใช้งานนี่ จะมองเห็นแค่ว่า การเก็บข้อมูลระดับภายนอก ก็คือเราเก็บข้อมูลอะไรบ้าง เหมือนเวลาคุณอยากเล่น TikTok อยากเล่น Facebook อยากเล่น Instargram เขาจะถามว่าคุณชื่ออะไร มีอีเมลหรือเปล่า มีเบอร์โทรศัพท์ไหม มีโปรไฟล์อันนี้คือข้อมูลระดับภายนอก ที่ผู้ใช้งานอย่างเรา ๆ นี่ เป็นคนให้ข้อมูลไป แล้วก็เป็นสิ่งที่เราเป็นคนเห็นเองว่าข้อมูลที่กรอกลงไปนี่มีอะไรบ้างนะคะ แต่ถามว่าถ้าเราอยากเปลี่ยนแปลงได้ไหม ว่านอกจากรูปภาพนี่ อยากให้เขาขอเกี่ยวกับอะไรดีล่ะ สถานะการเรียน เราจะไปบอกเขาว่า อยากบอก อยากให้เพิ่มเมนูตรงนี้ได้ไหม เราทำไม่ได้นะคะ เพราะอันนั้นเป็นระดับโครงสร้าง ระดับแนวคิด ระดับภายใน ซึ่งผู้ใช้งานธรรมดาจะแก้ไขไม่ได้นะคะ โดยที่ เพราะฉะนั้นนี่ สมมติเรามีการเปลี่ยนแปลงข้อมูล เราจะเรียกว่าการเปลี่ยนแปลงระดับที่ต่ำ ข้อมูลส่วนตัวเรานี่ล่ะนะคะ ถ้าเราเปลี่ยนแปลงเฉพาะข้อมูลเราตัวเองนี่ มันจะไม่กระทบกับคนอื่นรวมถึงไม่ได้กระทบกับ Facebook ไม่ได้กระทบกับ Instagram TikTok เขาก็ยังใช้งานปกติได้ ถึงแม้คุณจะบอกว่า จะเปลี่ยนแปลงรูปโปร์ไฟล์ ถามว่าโปรแกรมมันจะพังไหม ไม่นะคะ อันนี้คือการเปลี่ยนแปลงระดับต่ำ ก็คือเป็นการเปลี่ยนแปลงของผู้ใช้งานโดยตรงนะคะ ความเป็นอิสระข้อมูลเชิงตรรกะ ก็คือการเปลี่ยนแปลงมุมมองของผู้ใช้งาน อย่างเช่น คุณอยากจะ วันนี้เราอัปรูปไป 4 รูปนะคะ คุณอยากจะสลับตำแหน่งนะคะ ย้ายจากรูปสุดท้ายมารูปที่ 1 ถามว่าโปรแกรมนั้นจะพังไหม ไม่พังนะคะ เพราะมันถือว่าเป็นการเปลี่ยนแปลงภายนอก ไม่ได้เปลี่ยนแปลง Code โปรแกรม ไม่ได้บอกให้ผู้ดูแลระบบลบเมนูตรงนี้ออก ไม่ใช่นะคะ อันนี้ก็คือถ้าผู้ใช้งานอยากเปลี่ยนแปลงข้อมูลของตัวเองอย่างนี้ ก็ใช้งานได้เลยนะคะ ไม่กระทบกับคนอื่น ไม่กระทบกับระบบโดยรวมนะคะ รวมถึงความเป็นอิสระของข้อมูลเชิงกายภาพนะคะ ถ้าสมมติว่าวันหนึ่ง Facebook ย้ายเครื่องคอมพิวเตอร์ในการเก็บข้อมูล คนใช้งาน ถามว่าย้ายจากเครื่องหนึ่งไปอีกเครื่องหนึ่ง ถามว่าเราใช้ Facebook ได้ไหม ใช้ได้ มันไม่กระทบกับเรานะคะ มันถือว่าเป็นโครงสร้างของข้อมูลระดับภายใน ผู้ให้บริการเขาอาจจะมีการปรับเปลี่ยนย้ายจากเครื่อง Aไปเครื่อง B แต่ผู้ใช้งานก็ยังใช้งานยังทำงานได้ตามปกติ ไม่ได้รู้สึกถึงความผิดปกติใด ๆ อาจจะมีช่วงที่แบบ Restart เครื่องของตัว Sever ของเขาบ้าง แต่ถามว่า Facebook เราหายไปไหม ไม่นะคะ อันนี้คือตัวอย่างคร่าว ๆ เชิงตรรกะเป็นอย่างไร เชิงกายภาพเป็นอย่างไร ต่อมา ภาษาหลักของระบบจัดการฐานข้อมูลนะคะ ก็จะมีอยู่ 3 ภาษาหลัก ๆ นะคะ อันนี้หมายถึงว่า ภาษาเชิงโครงสร้างที่ใช้ ไม่ได้หมายถึงชื่อภาษาทางโปรแกรม อันแรก คือ ภาษาสำหรับนิยามข้อมูลนะคะ ก็จะเป็นภาษาที่ใช้ในการกำหนดโครงสร้างของฐานข้อมูลนะคะ ว่าระดับแนวคิด คือ คุณวางแผนไว้ว่าอย่างไร อย่างเช่น อาจารย์อาจจะ พอคุณเรียนปีสูง ๆ ขึ้น จะต้องได้ทำ Project อาจจะทำโปรแกรมเป็นของตัวเอง สมมติว่าได้ทำ Project เกี่ยวกับร้านในร้านหนังสือ ร้านหนึ่งเราต้องเก็บข้อมูลอะไรบ้าง เราต้องเขียนออกมาให้ได้นะคะ สิ่งนี้เราจะเรียกว่าระดับแนวคิด เราจะมาให้ความหมายว่าในฐานข้อมูลเรานี่ ระหว่างผู้ใช้งาน สมาชิก เจ้าของร้าน สามารถทำอะไรได้บ้าง สิ่งเหล่านี้จะเรียกว่า View นะคะ หรือจะเรียกว่ามุมมองของแต่ละคน เอาง่าย ๆ ยกตัวอย่างอีกแล้ว Facebook Facebook ในหน้าที่คุณดู กับหน้าที่เพื่อนดู อาจจะไม่เหมือนกัน ใน Facebook สามารถกำหนดว่ารูปนี้ฉันจะเก็บไว้ดูคนเดียว หรือรูปนี้จะเพื่อนดูได้ รูปนี้จะให้ใครก็ได้มาดู ไม่ได้ปิดกั้น อย่างนี้ก็มี อันนี้คือการกำหนดสถานะของมุมมอง ในการดูข้อมูลของเรา เราจะกำหนดตั้งแต่ การกำหนดโครงสร้างของฐานข้อมูลผู้ใช้งานแต่ละคนดูข้อมูลส่วนไหนได้บ้างนะคะ ต่อมาเป็นภาษาในการจัดการข้อมูล อันนี้จะเป็นภาษาในการจัดการข้อมูล อันนี้จะเป็นภาษาเชิง Programing ซึ่งไว้สำหรับจัดการข้อมูลในฐานข้อมูลนะคะ ก็จะเป็นตั้งแต่การค้นหาข้อมูล การเพิ่ม การลบ การแก้ไขข้อมูลในฐานข้อมูลนะคะ อันนี้ก็จะสามารถทำได้ตามสิทธิ์ของผู้ใช้งานแต่ละคน บางคนค้นหาได้ แต่เพิ่มไม่ได้ บางคนเพิ่มได้ แต่ห้ามลบนะคะ อันนี้ก็เป็นคำสั่งที่ใช้ภายในฐานข้อมูล ต่อมา เป็นภาษาควบคุมนะคะ มันจะเป็นภาษาที่เอาไว้สำหรับควบคุมความถูกต้องของข้อมูล เช่นอะไรบ้าง อย่างเช่น อาจารย์ให้กรอกชื่อนะคะ กรอกชื่อ แต่ว่านักศึกษาบางคนลืมเปลี่ยนภาษา หรือลืมเปลี่ยนปุ่ม หรือเปิดปุ่มตัวเลขไว้ นะคะ กลายเป็นว่าพิมพ์ชื่อตัวเองเป็นตัวเลข ภาษาระดับควบคุม ก็คือมันจะเป็นการตรวจสอบว่า ข้อมูลที่นักศึกษาใส่มาถูกหรือผิด เช่น อาจารย์กำหนดให้กรอกได้เฉพาะตัวหนังสือเท่านั้น ใส่ตัวเลขไม่ได้นะคะ หรือการเกิดภาวะพร้อมกัน อย่างเช่น จองตั๋วคอนเสิร์ต ดังมาก เข้ามาจองพร้อมกันสัก 50,000 คน เราจะมีการจัดการคน 50,000 คน อย่างไรนะคะ ให้สามารถทำงานได้ อันนี้คือการเกิดภาวะพร้อมกัน ก็คือเข้ามาใช้งานพร้อม ๆ กันทั้งหมดนะคะ โดยสถาปัตยกรรมฐานข้อมูลนี่ มันก็จะมีการศึกษาโครงสร้างองค์ประกอบหลักของระบบนะคะ ทั้งฐานข้อมูล หน้าที่แต่ละองค์ประกอบ แต่ละคน แต่ละผู้ใช้งานนะคะ รวมถึงการเขียนโปรแกรมเพื่อสื่อสารแล้วก็ติดต่อกับส่วนอื่น ๆ นะคะ ในระบบฐานข้อมูล อาจจะไม่ได้มีแค่โปรแกรมเดียวที่ทำงานนะคะ อาทิตย์ที่แล้วเคยบอกว่าระบบบัญชี ระบบบุคคล ระบบการเงิน ก็ใช้ฐานข้อมูลร่วมกันนะคะ โดยที่ถ้าสมมติว่าเรามีการเปลี่ยนแปลงโปรแกรมนะคะ โครงสร้างของฐานข้อมูลจะยังอยู่นะคะ ข้อมูลจะไม่หายไปไหน เพราะเราเปลี่ยนแค่ตัวโปรแกรม เราไม่เปลี่ยนทั้งโครงสร้างนะคะ ถ้าสมมติเปลี่ยนโปรแกรมใหม่ มันก็จะมีการเชื่อมต่อที่ทำให้ข้อมูลมันสามารถทำงานได้นะคะ โดยระบบฐานข้อมูลนี่ มันก็จะเป็นการเอาข้อมูลที่มีอยู่ในองค์กร หรือข้อมูลเพิ่มเติมนะคะ ที่มีความเกี่ยวข้องกันมารวมไว้ที่เดียวกันนะคะ โดยผู้ใช้งานในฐานข้อมูลนี่ จะมอง มุมมอง หรือ View ที่แตกต่างกันไปตามสิทธิ์ของการใช้งานนะคะ โดยที่ผู้ใช้งานนี่ ไม่จำเป็นต้องรู้ว่า ถ้าสมมติคุณเป็นผู้ใช้งานทั่วไป เขาจำเป็นจะต้องรู้ไหมว่าโปรแกรมเมอร์เขียนโปรแกรมอย่างไร โปรแกรมเมอร์ใช้วิธีอะไรในการแสดงภาพ โปรแกรมเมอร์ทำอย่างไรให้เราดู YouTube ได้ อันนี้ไม่จำเป็นต้องรู้นะคะ โดยที่ของสิ่งเหล่านี้มันซ่อนรายละเอียดไว้ได้ แต่ถามว่าให้แสดงออกมาได้ไหม แสดงได้ แต่ User หรือผู้ใช้งานไม่จำเป็นต้องรู้ เพราะฉะนั้น เราซ่อนมันไว้ได้นะคะ ยกเว้นบางอย่างนี่ ที่เป็นภาษาโปรแกรมนี่ เหมือนเวลาเราใช้ Google Chrome เราก็สามารถดูได้ว่าโค้ดโปรแกรมที่ผู้ดูแลระบบเขียนไว้นี่ เขาเขียนไว้ว่าอย่างไรบ้าง ดูได้นะคะ แต่ถามว่าพ่อแม่เราจะอยากรู้ไหมว่า Google เขียนโปรแกรมอย่างไร ก็คงไม่ ไม่จำเป็นต้องเปิดดู แต่ถามว่าเปิดดูได้ไหม บางส่วนก็เปิดดูได้นะคะ โดยสถาปัตยกรรมฐานข้อมูลนี่ มีอยู่ 3 ระดับนะคะ เหมือนที่พูดไปตอนต้น ก็คือมีระดับภายนอก ระดับแนวคิด และระดับภายใน มี 3 ระดับ โดยแสดงเป็นแผนภาพแบบนี้นะคะ ขีดเส้นให้... อันนี้ระดับภายนอกนะคะ เดี๋ยวเติมเส้นแบบนี้ ระดับภายนอก ก็คือเราอาจจะมีผู้ใช้งาน 1 คน 2 คน หรือหลายคน แต่ละคนอาจจะใช้ระบบเดียวกัน แต่หน้าจอที่ดูอยู่ไม่เหมือนกันก็ได้นะคะ อย่างเช่น นักศึกษาเข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรด คนที่ 2 พิมพ์ใบลงทะเบียน คนที่ 3 อาจจะค้นหาคำอธิบายรายวิชา ถามว่าเขาใช้โปรแกรมเดียวกันไหม ระบบเดียวกันไหม ระบบเดียวกันไหม ใช่ ระบบเดียวกัน แต่เขาอาจจะทำงานไม่เหมือนกันก็ได้นะคะ คุณอยากดูตรงไหนก็ได้ เหมือนกันก็ได้ แต่จะต้องเป็นข้อมูลของตัวเอง อย่างเช่น เกรด คุณจะดูของเพื่อนไม่ได้ เพราะแต่ละคนมีสิทธิ์ของตัวเองเท่านั้นนะคะ จะไปละเมิดความเป็นส่วนตัวของคนอื่นไม่ได้นะคะ อันนี้ก็มันจะมีกฎหมายอยู่ เวลาเราจะดูข้อมูลใคร หรือโพสต์รูปใคร หรือพิมพ์ถึงใคร มีกฎหมายกำหนดนะคะ ต่อมาเป็นในระดับแนวคิด ก็จะดูแล้วว่าโครงสร้างฐานข้อมูลที่เราออกแบบไว้ สำหรับการทำงาน มันจะเป็นเหมือนตัวที่ไว้จัดการว่า เรียกเข้า เรียกข้อมูลอะไรขึ้นไปดู เป็นการจัดการ หลังจากนั้นก็จะทำหน้าที่เชื่อมต่อกับระบบภายใน เพื่อดึงข้อมูลจากฐานข้อมูลไปแสดงผลนะคะ การทำงานจะมีส่วนหลัก ๆ 3 ส่วนแบบนี้ ที่เราใช้งานกัน แต่ถามว่า User จำเป็นต้องรู้แนวคิดเกี่ยวกับแนวคิดระดับภายในไหม ไม่จำเป็นนะคะ เขาก็จะดูแต่เฉพาะข้อมูลที่ตนเองสนใจภายนอกเท่านั้นนะคะ เหตุผลที่ว่าทำไมเราต้องแยกออกเป็น 3 ระดับ แยกออกจากกัน ทำไมเราไม่รวมกันไว้นะคะ อันแรก ก็คือผู้ใช้งานแต่ละคนนี่ ก็อาจจะเข้าถึงข้อมูลเดียวกันได้ แต่อาจจะเรียกดูผลไม่เหมือนกัน เหมือนบางคน อย่างที่บอกคะ เข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรด คนกนึ่งลงทะเบียน คนหนึ่งค้นหารายวิชา หน้าตาแตกต่างกัน แต่ก็ใช้ฐานข้อมูลเดียวกันนะคะ ผู้ใช้งานจะไม่สามารถเข้าถึงข้อมูลโดยตรงได้ ก็คือคุณจะไม่สามารถพิมพ์หรือเรียกใช้ข้อมูลในฐานข้อมูลได้โดยตรง จะต้องผ่านระบบจัดการฐานข้อมูลเท่านั้นนะคะ Admin นะคะ ในฐานข้อมูลก็คือ ผู้บริหารฐานข้อมูล 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 ฐานข้อมูล จะมีข้อมูลได้เยอะมากนะคะ แต่ทุกตารางจะต้องมีความสัมพันธ์กันอย่าง User หรือผู้ใช้งานคนที่ A อาจจะเรียกดูแค่ชื่อกับเบอร์โทรศัพท์เท่านั้น ก็ได้นะคะ User หรือผู้ใช้งานคนที่ B อาจจะขอดูข้อมูลรหัสนักศึกษา ชื่อ ที่อยู่ เบอร์โทรศัพท์ก็ได้ แล้วแต่นะคะ คนที่ C อาจจะไม่อยากดูข้อมูลของทุกคน อาจจะอยากดูว่าเทอมนี้มีวิชาอะไรเปิดสอนบ้าง รหัสวิชาอะไร ชื่อวิชาอะไร มีกี่หน่วยกิตก็ได้ จากในฐานข้อมูลเดียวกัน แต่แค่เอามาจากคนละตารางแค่นั้นเองนะคะ ประโยชน์ของสถาปัตยกรรมทั้ง 3 ระดับนะคะ ระดับภายใน ระดับภายนอก แล้วก็แนวคิด แน่นอน มุมมองของผู้ใช้งานแต่ละคนสามารถทำงานได้โดยอิสระ แยกจากกันนะคะ อาจจะมีการนำข้อมูลหลาย ๆ ตารางมารวมกันนะคะ เพื่อให้สามารถครอบคลุมในการเรียกดูข้อมูลได้ อาจจะมองคนละมุมกัน แต่ใช้ฐานข้อมูลเดียวกันได้ แล้วก็ผู้ใช้งานไม่จำเป็นต้องรู้ว่าข้อมูลที่เก็บไว้นี่อยู่ตำแหน่งไหนของฮาร์ดดิสก์ ไม่จำเป็นต้องรู้ ถ้าอยากเรียกข้อมูลขึ้นมาดูได้ก็ต้องดูได้นะคะ โดยบที่ Admin นี่ จะเป็นคนดูเองว่าที่ถูกเก็บไว้นี่จะต้องจัดเก็บไว้ตรงไหน แล้วก็เป็นคนที่ดึงข้อมูลนั้น ๆ เข้ามา ให้ผู้ใช้งานสามารถใช้งานได้นะคะ ประโยชน์ข้อต่อมา ก็คือความเป็นอิสระของข้อมูล อย่างที่บอก ก็คือมีการเปลี่ยนแปลงข้อมูลหรือมีการเปลี่ยนแปลงโปรแกรม ทุกอย่างต้องไม่ได้รับผลกระทบนะคะ งานต้องยังสามารถเก็บได้หรือโปรแกรมก็ยังทำงานได้เพราะการเปลี่ยนแปลงของข้อมูลนะคะ ไม่ใช่ว่ามีคนหนึ่งเปลี่ยนนามสกุล ฐานข้อมูลทั้งมหาวิทยาลัยผิดพลาดหมดเลย อันนี้ไม่ได้นะคะ หรือบางคนเพิ่มที่อยู่ กลายเป็นว่าที่อยู่เหมือนกันทั้งมหาวิทยาลัย อย่างนี้ ก็ไม่ได้นะคะ ข้อมูลต้องเป็นอิสระต่อกัน หรือว่าวันนี้อาจารย์บอกว่าฐานข้อมูลอาจารย์ อยากใช้ Microsoft access วันดีคืนดี อาจารย์บอกว่าเปลี่ยนไปใช้โปรแกรมอื่นได้ไหม ต้องเปลี่ยนได้นะคะ ไม่ใช่ใช้โปรแกรมเดียวไปตลอด ไม่ได้ ถ้าสมมติมีโปรแกรมที่ดีกว่า แล้วเราอยากเปลี่ยนโดยที่ข้อมูลเราไม่หายนะคะ อันนี้คือความเป็นอิสระของข้อมูล อันนี้พูดไปแล้วนะคะ อันนี้พูดไปแล้วนะ เดี๋ยวนะ Mapping อันนี้พูดไปแล้ว ต่อมา แบบจำลองข้อมูลนะคะ แบบจำลองข้อมูลนี่ มันก็จะเป็นแบบจำลองที่เอาไว้ให้สำหรับการอธิบาย แล้วก็การจัดการข้อมูลที่จะเกิดขึ้นในฐานข้อมูล ความสัมพันธ์ในฐานข้อมูลแต่ละตารางจะเกิดขึ้นอย่างไรบ้าง ข้อบังคับของข้อมูลในระบบที่จะมี การเพิ่ม ลบ เปลี่ยนแปลง แก้ไขใด ๆ จะต้องมีกฎเกณฑ์ใดบ้างนะคะ ทั้งนี้ก็เพื่อ ใช้สำหรับการเป็นข้อตกลง แล้วก็สื่อสารระหว่างคนออกแบบฐานข้อมูล กับคนที่ใช้งานฐานข้อมูล ให้มีความเข้าใจตรงกันนะคะ ว่าถ้าเรามีระบบนี้ คุณจะสามารถทำอะไรได้บ้าง ทำอะไรไม่ได้ เรียกข้อมูลบแบบไหน แก้ไขข้อมูลอย่างไร ทำแบบไหนถึงจะบันทึกข้อมูลได้ ถ้าอยากลบรหัสนักศึกษาออกได้ไหม อยากเป็นนักศึกษา แต่ไม่มีรหัสนักศึกษาได้ไหม ไม่ได้ ก็ต้องเข้าใจตรงกันนะคะ อันแรกนะคะ แบบจำลองข้อมูลนี่ จะมีอยู่ 2 ประเภท ประเภทแรก ก็คือเป็นแบบจำลองที่ใช้การบรรยายนะคะ บรรยายโดยรวมทั้งหมดของระบบ ว่ามีอะไรบ้าง นะคะ ซึ่งจะนำเสนอในลักษณะของการวาดภาพ โดยที่ในฐานข้อมูล 1 ฐานข้อมูลนี่ จะหมายถึงการเก็บตารางกี่ตารางนะคะ ก็คือ Entity นี่แหละนะคะ กับแต่ละตารางมีความสัมพันธ์อะไรบ้าง เราจะต้องวาดรูป โยงเส้น ขีดเส้นใต้ ตีกรอบ เดี๋ยวอันนี้จะเป็น ในครั้งถัด ๆ ไป จะเป็นการวาดรูป เดี๋ยวถ้าวันไหนจะวาดรูป อาจารย์จะให้ถือกระดาษ A4 มาด้วยนะคะ ถ้าใครเคยเรียนสมัยมัธยม ได้วาด Mindmap วาดแผนภาพ การวาดในฐานข้อมูลก็จะไม่ต่างกันค่ะ แต่ว่าสัญลักษณ์แต่ละสัญลักษณ์ที่ใช้ในการวาดรูปของเรา มันมีความหมายนะคะ ไม่ใช่อยากวาด อยากใส่วงรี อยากใส่สี่เหลี่ยม อยากใส่สามเหลี่ยม อยากใส่วงกลม นึกอยากใส่อะไรก็ใส่ไม่ได้ มันจะมีกฎอยู่ โดยการวาดแบบนี้นี่หรือการจำลองแบบนี้นี่ จะนำเสนอเพื่อให้เกิดความเข้าใจงตรงกัน ระหว่างคนออกแบบกับคนใช้งาน ให้เห็นภาพคร่าว ๆ ว่าระบบที่เรากำลังจะทำขึ้นมานี่ มันทำงานอย่างไรนะคะ เก็บข้อมูลแบบไหน ใช้ข้อมูลอะไรได้บ้างนะคะ ต่อมาจะเป็นแบบจำลองที่ใช้เพื่ออธิบายโครงสร้างของฐานข้อมูลนะคะ คุณสมบัติของแบบจำลองข้อมูลที่ดี จะต้องเป็นรูป หรือจะต้องเป็นแบบจำลองที่เอามาวาง แล้วถึงแม้ว่าเขาจะไม่มีความรู้ทางด้านคอมพิวเตอร์เลย เขาก็จะเข้าใจนะคะ มีสาระสำคัญ ไม่มีการซ้ำซ้อนกันนะคะ ซึ่งในที่นี้ ก็คือในแต่ละตารางมันไม่ควรจะมีการเก็บข้อมูลที่ซ้ำซ้อนกัน อย่างเช่น ตารางนี้เก็บข้อมูลนักศึกษาไปแล้ว อีกตารางหนึ่งก็ยังจะเก็บอีก อันนี้ไม่ทำนะคะ จะต้องไม่ซ้ำซ้อนกันในแต่ละตาราง แล้วก็มีความยืดหยุ่น แก้ไขง่าย ในการแก้ไขในอนาคตนะคะ และแบบจำลองของวข้อมูล ไม่ควรจะตายตัวเลย ว่าโปรแกรมที่เรา... หรือฐานข้อมูลที่เรากำลังจะออกแบบ ต้องใช้โปรแกรมนี้เท่านั้น เราจะไม่ทำแบบนี้นะคะ จะต้องเป็นฐานข้อมูลที่สามารถทำร่วมกับโปรแกรมใดก็ได้นะคะ เพราะมันจะ... ไม่อย่างนั้นมันจะขัดกับกฎของความเป็นอิสระของข้อมูล ก็คือถ้าสมมติเปลี่ยนโปรแกรมแล้วข้อมูลมันพัง อย่างนี้ยอมรับไม่ได้นะคะ โดยแบบจำลองนี่ ก็จะมีหลายรูปแบบ แบบแรกเป็นเชิง Record ก็คือเป็นการเก็บเป็นแถว เป็นแถว ไปเรื่อย ๆ นะคะ แต่ละแถวก็หรืออาจจะเรียกว่ารายการข้อมูล แต่ละแถวจะต้องไม่ซ้ำกัน จะต้องต่างกันนะคะ ก็จะมีอยู่ 3 แบบ แบบจากบนลงล่าง แบบเครือข่าย และก็แบบมีความสัมพันธ์นะคะ กับแบบจำลองเชิงวัตถุนะคะ จะมองทุกอย่างให้เหมือนเป็นวัตถุ ตารางก็เป็นวัตถุชนิดหนึ่ง นักศึกษาก็เป็นวัตถุชนิดหนึ่ง นักศึกษา 1 คน จะมีวัตถุในตนเอง เก็บอะไรบ้าง เช่น วัตถุที่ชื่อว่ารหัสนักศึกษา วัตถุที่ชื่อว่า ชื่อนามสกุล วัตถุที่มันหมายถึงเบอร์โทรศัพท์นะคะ ซึ่งส่วนใหญ่เวลาเราวาดหรือโครงสร้างฐานเข้อมูลเราจะใช้แบบจำลองเชิงวัตถุนะคะ ก็คือตัวแรกเลย สิ่งที่เราจะวาด เรียกว่า "ER diagram" นะคะ ER Diagram นะ อันนี้คืออย่างน้อยทุกคนต้องวาดได้ เข้าใจสัญลักษณ์แต่ละอันว่ามันมีความสำคัญอย่างไรนะคะ ระดับปริญญาตรีนี่ วาด ERdiagram ได้ ก็ถือว่าเก่งมากแล้วนะคะ แบบจำลองข้อมูลจะมีส่วนประกอบอยู่ 3 ส่วนนะคะ ส่วนของโครงสร้าง ก็จะเป็นส่วนประกอบที่เก็บสัญลักษณ์ รวมทั้งกฎระเบียบที่ทุกคนจะต้องตกลงร่วมกัน เพื่อใช้ในการสร้างฐานข้อมูลนะคะ มาตรฐานเลย ก็คือข้อมูลทุกอย่างที่จะเก็บ จะอยู่ในรูปแบบของตาราง ในรูปแบบของแถวกับคอลัมน์ อันนี้น่าจะเคยใช้งาน Excel มาแล้ว รวมถึงน่าจะรู้ว่าตารางคืออะไร นะคะ ตารงก็จะเป็นแบบนี้เหมือนเวลาเราใส่ข้อมูลทั่ว ๆ ไปนะคะ ตีเส้น ตีกรอบ อันนี้คือตารางนะคะ มีแถวกับคอลัมน์ ส่วนของการปรับปรุง ก็จะเป็นส่วนที่ชนิดของการทำงานต่าง ๆ ตั้งแต่การปรับปรุงข้อมูล หรือการเรียกดูข้อมูลในฐานข้อมูล การเปลี่ยนแปลงโครงสร้างในฐานข้อมูล เช่น เราอาจจะเพิ่มในส่วนของSocail media ของนักศึกษาเข้ามา ชื่อ Facebook คุณชื่ออะไร แต่จะต้องไม่กระทบกับฐานข้อมูลหลัก ซึ่งนิยมใช้ชุดคำสั่งของภาษา SQLอันนี้เราก็จะเรียนเหมือนกันนะคะ SQL ในการจัดการกับข้อมูล รวมถึงกฎของความคงสภาพ เพื่อใช้สำหรับควบคุมความถูกต้องของข้อมูล และเพื่อถูกต้อง เช่น รหัสนักศึกษาจะต้องเป็นตัวเลขเท่านั้น เป็นตัวหนังสือไม่ได้นะคะ ความแน่นอนของข้อมูลที่ถูกต้องที่บันทึกลงในฐานข้อมูล เวลาเราเรียกดูข้อมูลปุ๊บ เราจะได้มั่นใจได้ว่า ข้อมูลที่เราได้มา ตรงกับความจริงที่เกิดขึ้นนะคะ นะคะ นี่ก็จะซ้ำ ๆ กัน แบบจำลองฐานข้อมูลนะคะ ในการตัดสินใจในการเลือกใช้ฐานข้อมูลนี่ มันก็จะเป็นสิ่งสำคัญมาก ๆ สำหรับการออกแบบฐานข้อมูลนะคะ ซึ่งเราก็จะแบ่งเป็นประมาณประมาณ 5 รูปแบบ เพื่อให้เราตัดสินใจว่าเราจะออกแบบฐานข้อมูลด้วยแบบจำลองแบบไหนนะคะ อันแรกเลย เป็นแบบลำดับชั้นนะคะ เป็นรูปแบบสถาปัตยกรรมฐานข้อมูลที่เก่าแก่ที่สุด ใช้มานานมาก นะคะ โครงสร้างของข้อมูลหรือไฟล์ จะถูกจัดเก็บไว้จากบนลงล่างนะคะ ลักษณะคล้าย ๆ กับรากของต้นไม้นะคะ โดยไฟล์ต่าง ๆ จะต้องมีพ่อ ก็คือเป็น ถ้าเป็นภาษาอังกฤษก็คือ One Parent ข้อมูลเดียวเท่านั้น แล้วค่อย ๆ แตกสาขาออกไปนะคะ ความถูกต้องในการเก็บเก็บข้อมูลค่อนข้างมีสูง ความคงสภาพการเปลี่ยนแปลงข้อมูลน้อยมาก แต่ปัจจุบันงไม่นิยมใช้ เพราะมันยากต่อการไล่ลำดับของข้อมูลนะคะ มัน เวลาจะหาข้อมูลทีหนึ่งวิ่งไปข้างบน แล้วก็ลงมาข้างล่างใหม่ ต้องเริ่มจากข้างบน แล้วค่อยมาข้างล่างคุณอะไรล่ะ สมมติตึกนี้มี 10 ชั้น อยากไปชั้น 3 คุณจะขึ้นจากข้างล่างไปชั้น 3 เลยไม่ได้ คุณต้องขึ้นไปชั้น 10 ก่อน ค่อยลงมาชั้น 3 ทุกครั้งนะคะ แบบจำลองข้อมูลตัวนี้ข้อมูลตัวนี้ถามว่าดีไหม ดี แต่ว่าทำงานช้านะคะ ลักษณะก็จะเป็นแบบนี้นะคะ เริ่มจากตรงนี้ กว่าจะลงมาถึงตรงนี้ได้ต้องผ่านทุกชั้นนะคะ ถ้าเราอยากดูข้อมูลตรงนี้เลยนี่ ตรงนี้ที่อาจารย์วง ๆ ไว้นี่ เข้ามาตรงนี้เลยได้ไหม ไม่ได้ เพราะกฎของมันก็คือเริ่มจากบนสุด ค่อยลงมาข้างล่าง มันดีค่ะ แต่มันช้านะคะ จำเป็นประมาณนี้นะคะ เป็น Root ลงมา Parent ตรงนี้ เหมือนข้อมูลแบบนี้ค่ะ อันนี้คือแบบจำรองที่เราวาดกันจริง ๆ นะคะ สมมติอาจารย์อยากดูข้อมูลคนนี้นะคะ ระดับล่างสุดเลย อาจารย์เข้ามาดูข้อมูลคนนี้โดยตรงไม่ได้ อาจารย์จะต้องสั่งจากด้านบน ค่อย ๆ ลงมาตามลำดับชั้นเรื่อย ๆ จนถึงตรงนี้ ถามว่าเราเป็นผู้ใช้งานจริงนี่ เราอาจจะไม่รู้สึกว่ามันหาข้อมูลช้า แต่ในทางการทำงานทางกายภาพของคอมพิวเตอร์นี่ มันทำงานโดยคิดเป็นหน่วยใหญ่ ๆ ก็คือเป็นวินาที ยิ่งใช้เวลาหาข้อมูลนานเท่าไร ก็ยิ่งมีค่าใช้จ่ายที่เพิ่มขึ้นตามไปด้วยนะคะ เพราะฉะนั้น เหมือนในยุคปัจจุบัน คอมพิวเตอร์ ทำไมทุกคนอยากได้คอมพิวเตอร์ที่เร็ว คิดเร็ว หาข้อมูลเร็วนะคะ ถามว่าอันนี้มันช้าจนเราทนไม่ได้ไหม ถ้าข้อมูลมันมีแค่นี้มันทนได้ค่ะ แต่ถ้าข้อมูลมันมากกว่านี้ล่ะ หลายลำดับชั้นกว่านี้ล่ะ แค่หาชื่อคนอาจจะรอเป็นชั่วโมงก็ได้ ถ้าจำนวนข้อมูลมันเยอะนะคะ อันนี้ก็เป็นแบบจำลองข้อมูลที่ถามว่าทำได้ดีค่ะ แต่ว่าอาจจะเสียเวลานะคะ ข้อดี ก็คือเข้าใจง่าย ลักษณะเหมือนรากของต้นไม้ อย่างที่บอกนะคะ ข้อมูลมีความสัมพันธ์แบบ 1 ต่อมากกว่า 1 จริง ๆ อยากพูดภาษาอังกฤษมากกว่า เป็นความสัมพันธ์แบบ One-to-many พ่อ 1 คน มีลูกได้หลายคนประมาณนี้ความสามารถในการควบคุมความถูกต้องของข้อมูลมีสูงนะคะ ข้อมูลที่เหมาะกับข้อมูลแบบจำลองแบบนี้ ควรน่าจะเป็นข้อมูลแบบที่เป็นการเรียงลำดับอย่างต่อเนื่องนะคะ ที่จะเหมาะ ที่จะใช้ แต่มันก็มีข้อเสียอย่างที่บอกนะคะ มันไม่สามารถรองรับข้อมูลที่มีความสัมพันธ์แบบ One-to-many ได้ One-to-many many to many1 ต่อ หลายสิ่ง หรือหลายสิ่ง ต่อหลายสิ่งอะไรพวกนี้ เดี๋ยวเราจะเรียนในบทถัด ๆ ไป มันคืออะไร นะคะ เดี๋ยวจะอธิบายโดยละเอียดในบทถัด ๆ ไป โดยแบบจำลองแบบลำดับชั้นนี่ ความยืดหยุ่นมันก็จะน้อยนะคะ การปรับเปลี่ยนโครงสร้าง มีความยุ่งยาก เพราะทุกอย่างจะต้องเริ่มจากด้านบน ถ้าเปลี่ยนตรงใดตรงหนึ่ง ต้องไล่ดูทั้งหมด เพราะมันอาจจะกระทบกับอีกส่วนอื่นก็ได้นะคะ อย่างที่บอกค่ะ การค้นหาข้อมูลระดับล่าง ๆ จะต้องทำตั้งแต่บนลงล่างลงมา เข้าไปหาโดยตรงไม่ได้นะคะ เสียเวลา แล้วก็ทำให้การเขียนโปรแกรมในอนาคตมันยาก เพราะว่าทุกอย่างจะต้องวนกลับมาจุดเริ่มต้น วนกลับมาจุดเริ่มต้น เสียเวลามากนะคะ มันก็เลยมีการพัฒนาแบบจำลองข้อมูลแบบเครือข่ายขึ้นมานะคะ โดยแบบจำลองข้อมูลแบบเครือข่ายนี่ จะใช้ตัวชี้ตำแหน่งที่เรียกว่า Pointer ก็คือใช้ลูกศร นะคะ ใช้ลูกศร ก็จะมีการเชื่อมโยงความสัมพันธ์ระหว่างข้อมูลในแต่ละแถวเข้าด้วยกันนะคะ ก็จะเป็นข้อมูลที่สามารถเชื่อมโยงกันได้นะคะ ข้อมูลสามารถวิ่งผ่านกันได้ ไม่จำเป็นต้องจากบนลงล่างมา อาจจะเลี้ยวซ้ายเลี้ยวขวาได้แล้วคราวนี้นะคะ ลักษณะของแบบจำลองเชิงเครือข่ายก็จะเป็นแบบนี้นะคะ แต่ก่อนเราจะเริ่มจากบนลงล่างใช่ไหม คราวนี้ถ้าใบส่งของนี่ มันสามารถไปหาใครได้บ้าง ใบส่งของ 1 ใบ มีข้อมูลอะไรบ้าง ก็คือรายการในใบส่งของ ใครเป็นคนขาย ใครเป็นคนซื้อ เขาจ่ายเงินแบบไหน อันนี้ไม่ต้องจากบนลงล่าง ใช่ไหมคะ หรือจะดูว่าพนักงานวันนี้ขายของอะไรได้บ้าง ก็สามารถดูได้ ลูกค้าคนนี้อยู่ในใส่งของไหน ใครเป็นคนขาย ลูกค้าจ่ายเงินอย่างไร ก็ดูได้ ดูได้ทุกตำแหน่งนะคะ โดยที่ไม่ต้องเริ่มจากบนลงล่าง สามารถเข้าไปดูได้โดยตรง แบบจำลองข้อมูลแบบเครือข่ายนะคะ ก็ความซ้ำซ้อนในการเกิดขึ้นของข้อมูลเกิดขึ้นน้อยกว่าลำดับชั้น เรียกดูข้อมูลแบบไป-กลับได้ง่ายนะคะ เพราะว่าการค้นหาข้อมูลทำได้ดีกว่า เพราะว่ามีตัวชี้ตำแหน่ง หรือว่า Pointer ในการเข้าถึงข้อมูลได้ในทันทีนะคะ แต่สิ่งที่มีข้อดีก็ต้องมีข้อเสียนะคะ ข้อเสีย ก็คือการป้องกันความปลอดภัยของข้อมูลมีน้อยนะคะ แล้วก็สิ้นเปลืองพื้นที่ในตัวเก็บตัวชี้ตำแหน่ง ถ้าตารางข้อมูลมันมีแค่นี้น่ะค่ะ มันก็ไม่เปลืองหรอก แต่ถ้าสมมติว่ามันเป็นระดับห้างสรรพสินค้าล่ะ ร้านค้าใหญ่ ๆ ข้อมูลเกิดขึ้นแทบจะทุกนาที มันก็ต้องมีตัวชี้ตำแหน่งเก็บทุก ๆ ๆ ๆ สิ่งที่เกิดขึ้น ทำไมถึงบอกว่าเปลืองไม่ได้ เพราะถ้าใช้เชิงธุรกิจ อะไรที่เป็นสิ่งที่เราต้องจ่ายเพิ่ม เช่น จ่ายเงินซื้อฮาร์ดดิสก์เพิ่ม เพื่อเก็บข้อมูลเป็นต้นทุน หมายความว่าคุณจะต้องลงทุกเพิ่มขึ้นในสิ่งที่อาจจะไม่ได้จำเป็นขนาดนั้นนะคะ แล้วก็การเปลี่ยนแปลงเชิงโครงสร้าง ก็อาจจะมีความยุ่งยาก เพราะหลาย ๆ อย่างมันเชื่อมต่อกันอยู่ เช่น อยู่ดี ๆ อาจารย์บอกว่า อาจารย์อยากตัดใบส่งของออก แล้วพนักงานกับลูกค้าจะเชื่อมโยงกันอย่างไร ผ่านสินค้าหรือ แล้วคุณไม่ต้องไปส่งของลูกค้าหรือนะคะ อันนี้ก็จะมีข้อสงสัยกับข้อที่ต้องมาคิดตามเหมือนกัน ว่าถ้าเราจะมีการเปลี่ยนแปลงตำแหน่งบางตำแหน่ง สำหรับการชี้ตำแหน่งนะคะ มันต้องทำอย่างไร มันก็เลยมีการพัฒนาขึ้นมาอีก เป็นแบบจำลองฐานข้อมูลเชิงสัมพันธ์นะคะ ก็จะเป็นแบบจำลองข้อมูลที่ได้รับความนิยมมากในปัจจุบัน เพราะว่านำเสนอข้อมูลในลักษณะที่เป็นตาราง เข้าใจง่าย มีแถว มีคอลัมน์นะคะ สามารถแสดงให้เห็นถึงความสัมพันธ์กับตารางอื่น ๆ ได้ง่ายนะคะ แต่เราจะใช้สิ่งที่เรียกว่า "กุญแจ" หรือ "Key" เพื่ออ้างอิงไปยังตารางอื่น ๆ เหมือนอย่างนี้ อันนี้คือตารางพนักงานขาย ตารางลูกค้า อะไรพวกนี้ค่ะ เราไม่รู้ว่าเราจะอ้างอิงด้วยอะไรใช่ไหมคะ อย่างเช่น ใบส่งของมีของอยู่ 5 อย่าง เราก็รู้ว่าแค่ 5 อย่าง ไม่ได้มีจุดสังเกตใด ๆ ให้รู้นะคะ มันก็เลยมีการพัฒนาสิ่งที่เรียกว่า "Key" หรือ "กุญแจ" ขึ้นมานะคะ โดยกุญแจของ 1 คนนี่ มันสามาถเป็นได้ทั้งกุญแจหลัก แล้วก็คีย์รองได้ เดี๋ยวรายละเอียดของคีย์หลัก คีย์รอง คีย์ภายนอกนะคะ จะอธิบายโดยละเอียดในบทถัด ๆ ไปนะคะ อันนี้เอาให้เห็นคร่าว ๆ ก่อน อย่างเช่นนะคะ ตารางนี้ นะคะ อันแรกจะเป็นตารางเก็บข้อมูลเกี่ยวกับสาขา สมมติว่าเราเปิดร้านค้า มีตารางเกี่ยวกับสาขาที่เราเปิด กับตารางพนักงาน ทำไมรหัสสาขาอาจารย์ต้องขีดเส้นใต้ด้วย ทำไมรหัสพนักงานก็ต้องขีดเส้นใต้ด้วย ความสำคัญมีอยู่นะคะ ไม่ใช่ขีดเฉย ๆ เพื่อเน้นให้พวกคุณอ่าน ไม่ใช่ มันแสดงให้เห็นว่า ในตารางนี้ สิ่งใดที่ขีดเส้นใต้ ข้อนั้น ข้อมูลในตารางนั้นจะซ้ำกันไม่ได้ เราเรียกสิ่งนี้ว่า "คีย์หลัก" นะคะ รหัสพนักงาน ขีดเส้นใต้ ก็แสดงว่ารหัสพนักงานแต่ละคนจะต้องไม่ซ้ำกัน เพราะรหัสพนักงานเป็นคีย์หลัก แต่ถ้าสังเกตดี ๆ ในตารางพนักงาน ทำไมมีรหัสสาขาโผล่ขึ้นมาตรงนี้ด้วย แล้วทำไมไม่ขีดเส้นใต้ล่ะ ในตารางนี้ เพราะในตารางพนักงาน รหัสสาขา ไว้สำหรับเป็นคีย์นอกในการเชื่อมต่อกันว่า 2 ตารางนี้ มันมีความสัมพันธ์กันอย่างไร นะคะ เดี๋ยวจะอธิบายอีกทีหนึ่ง ว่าทำไมต้องมีความสัมพันธ์กันล่ะ เอาง่าย ๆ เลยค่ะ พนักงานคนที่ 1 ถ้าอาจารย์ไม่มีรหัสสาขา คุณจะรู้ไหมว่า พนักงานคนนี้ทำงานที่สาขาไหน ไม่รู้เลย หรืออาจจะบอกว่าสาขาอุดรฯ มีใครทำงานบ้าง รู้ไหม ถ้าไม่เชื่อมกับตารางพนักงาน ก็ไม่รู้เลยนะคะ เดี๋ยวจะอธิบายอีกทีหนึ่ง ในบทของการวาดความสัมพันธ์นะคะ ข้อดีของแบบจำลองเชิงสัมพันธ์ที่เป็นตาราง อ่านง่าย เข้าใจง่าย เพราะนำเสนอในลักษณะของตาราง สามารถเลือกดูสิ่งที่เราสนใจ ความซับซ้อนก็มีน้อย เพราะว่าข้อมูลในเชิง 2 มิตินี่ พอมันมอง มันมองง่าย ความปลอดภัยค่อนข้างดีนะคะ เพราะว่าผู้ใช้งานก็จะไม่รู้ว่าเราเก็บข้อมูลอย่างไร รู้แค่ว่าอยากเรียกใช้ข้อมูลอะไรได้บ้างนะคะ แล้วก็โครงสร้างของข้อมูลแน่นอน ถ้าเราเปลี่ยนโปรแกรมก็ยังสามารถทำงานได้นะคะ แต่ข้อเสียของมันก็มีนะคะ ก็คือค่าใช้จ่ายค่อนข้างสูงนะคะ เพราะว่าทรัพยากรที่ใช้ในการจัดการนี่ ต้องมีสมรรถนะที่สูงนิดหนึ่ง ประมวลผลต้องเร็วนะคะ การปรับปรุงแก้ไขข้อมูลอาจจะมีความยุ่งยาก เพราะว่าไม่รู้ว่าข้อมูลภายในที่เก็บจริง ๆ แล้วนี่ มันเป็นอย่างไร มีคนเดียวที่รู้ ก็คือคนจัดการฐานข้อมูลเท่านั้น บางครั้งผู้ใช้งานนี่อาจจะเป็นผู้ที่ต้องคีย์ข้อมูลเข้าไป ก็อาจจะเริ่มงงว่า สรุปว่าฉันต้องกรอกข้อมูลอะไร ทำไมข้อมูลมันไม่ผ่านนะคะ อย่างเช่น อาจจะไม่มี อันนี้มันก็จะเกี่ยวเนื่องไปถึงการออกแบบระบบด้วย เหมือนบางคนใส่เลยบัตรประชาชนไม่ครบ 13 หลัก ถ้าผู้ดูแลระบบ ออกแบบไม่ดี มันก็จะไม่มีแจ้งเตือนว่า เลขบัตรประชาชนคุณน่ะไม่ครบ คนใช้งานก็จะเริ่มงงแล้วว่า ฉันผิดอะไรนะคะ มันตั้งแต่การออกแบบเลย เพราะฉะนั้น คนดูแลระบบจะต้องป้องกันสิ่งที่เกิดขึ้นด้วย มีการแจ้งเตือนว่าเราผิดพลาดตรงไหน ข้อมูลจะเป็นอะไรได้บ้างนะคะ เหมือนการเก็บข้อมูลรูปภาพ รูปภาพต้องขนาดเท่าไร ต้องเป็นภาพสีไหม หรือต้องเป็นภาพขาวดำเท่านั้น จะต้องอธิบายให้ชัดเจนนะคะ เพราะว่าถ้ามีการปรับปรุงข้อมูลทีหนึ่งนี่ บางทีถ้าผู้ใช้งานไม่เข้าใจ มันก็จะไม่สามารถบันทึกลงฐานข้อมูลได้นะคะ กับแบบจำลองข้อมูลเชิงวัตถุนะคะ ส่วนมากจะเป็นการออกแบบเพื่อเขียนแอปพลิเคชันนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่งนะคะ มันก็จะมีการห่อหุ้มวัตถุนั้น ๆ ไว้ด้วยอะไรบ้างนะคะ อันนี้ก็พอเรียนปีสูงขึ้น ทุกคนก็จะได้เรียนการทำงานเชิงวัตถุมากขึ้นนะคะ อันนี้ปี 1 ก็ฐานข้อมูลเชิงสัมพันธ์นี่ก็เต็มที่แล้วนะคะ อันนี้อาจารย์เอามาให้รู้จักเฉย ๆ เพราะว่าถ้าเป็นฐานข้อมูล หรือการเขียนโปรแกรมเชิงวัตถุใด ๆ ก็ตาม มันจะทำงานซับซ้อนได้ดีกว่า มันเหมาะกับการทำงานเกี่ยวกับภาพกราฟิก หารเก็บวีดิโอ เสียง อย่างเช่น เราเล่น Facebook มีหมดเลย ทั้งภาพ ทั้งวิดีโอ ทั้งเสียง ที่เราต้องเก็บข้อมูล แล้วก็สามารถเอาข้อมูลที่มีอยู่หรือนานมาแล้วนี่ เรียกกลับมาใช้ซ้ำได้ ง่ายกว่ารูปแบบการจัดการข้อมูลชนิดอื่นๆ แต่ข้อเสียของการทำงานเชิงวัตถุก็คือจะต้องมีความชำนาญมาก ๆ แล้วก็เข้าใจในการมองโปรแกรม หรือมองข้อมูลนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่ง อาจจะต้องใช้ประสบการณ์ในการจัดการกับข้อมูลที่มีความซับซ้อนมาก ๆ พอเราอายุเท่านี้อาจจะยังไม่เห็นความซับซ้อนข้อมูลนะคะ แต่ถ้าไปทำงานจริง ๆ นี่ ถ้าคุณต้องดูแลระบบใหญ่ ๆ ก็ตามนี่ ข้อมูลมันก็จะเริ่มซับซ้อนขึ้น มีส่วนย่อย ๆ เกิดขึ้นมากมายนะคะ เพราะฉะนั้น ถ้าเราจะเป็นคนที่ออกแบบข้อมูลเราจะต้องมองภาพโดยรวมทั้งหมดให้ได้นะคะ เหมือนที่อาจารย์ยกตัวอย่างตอนแรก ครั้งหน้า ๆ ถ้ามีให้วาดรูป อาจารย์ก็จะเริ่มถามแล้วว่าเคยไปห้องสมุดไหม นะคะ เคยยืมหนังสือหรือเปล่า การที่เราจะยืมหนังสือห้องสมุดได้ มันจะต้องเกี่ยวข้องกับอะไรบ้าง เช่น เราเป็นสมาชิกห้องสมุดไหมนะคะ แล้วเราไปห้องสมุด เราจะยืมหนังสือ มันจะต้องมีข้อมูลหนังสือที่เราจะยืมไหมนะคะ ชื่อหนังสืออะไร หนังสือมีรหัสหนังสือหรือเปล่า ยืมได้กี่วันนะคะ ใครเป็นคนแต่งหนังสือเล่มนั้น นี่ แค่การยืมหนังสือเล่มเดียว ข้อมูลที่เกิดขึ้นก็มีเยอะแล้ว ใครเป็นคนยืม ใครเป็นคนแต่ง ยืมได้กี่วัน หนังสือชื่ออะไร เลขหนังสืออะไร นักศึกษาคนไหนเป็นคนยืมนะคะ อันนี้ก็แค่ยืมหนังสือเฉย ๆ ในข้อสอบหรือในชีวิตจริง พวกคุณจะต้องเจออะไรที่เยอะกว่านี้อีกเยอะนะคะ กับอีกอันหนึ่งนะคะ เป็นแบบจำลองฐานข้อมูลแบบหลายมิตินะคะ ใครเคยเล่นรูบิก ลักษณะหลาย ๆ มิติจะเป็นแบบนั้นเลย นะคะ เป็นก้อน ๆ นะคะ เช่น การเก็บข้อมูล ส่วนมากจะเป็นเกี่ยวกับเชิงธุรกิจมเสียากกว่านะคะ อาจจะเป็นเกี่ยวกับการเก็บข้อมูลผลิตภัณฑ์สินค้า อาจจะเป็นเกี่ยวกับขายที่ไหน วันที่เท่าไร มาประมวลผลเป็นตาราง เพราะว่าทุกอย่างมันจะทับซ้อนกันไปอีกเยอะมาก ขายอะไรขายที่ไหน ขายเมื่อไหร่ ในสินค้าชนิดเดียวนะคะ เหมือนข้อมูล เวลาเราซื้อของ วันหมดอายุเท่าไร ส่วนประกอบอะไร หลาย ๆ ทุกอย่าง ข้อมูลทุกอย่างจะซ้อนกันเป็นมิติ เวลาเราดูขนมหนึ่งห่อ ส่วนประกอบคืออะไร ผลิตที่ไหน ต้องบริโภควันที่เท่าไร ใครเป็นคนผลิต ใครเป็นคนนำเข้า ทับซ้อนทับกันจะเป็นหลาย ๆ มิตินะคะ ลักษณะคล้าย ๆ รูปทรงแบบนี้นะคะ แค่ของชิ้นเดียว เก็บข้อมูลเยอะมากนะคะ เป็นแบบนี้ จริง ๆ วันนี้ก็จะไม่มีอะไรมาก เพราะว่าเป็นแค่แนะนำ เพื่อปูทางในการวาดภาพ แผนภาพ ER ของเรา ในบทต่อไปนะคะ วันนี้ก็มีการบ้านเหมือนกันค่ะ 10 ข้อ เหมือนเดิม ทำใส่กระดาษรายงานส่งนะคะ เนื้อหาที่จะตอบ ก็อยู่ในสไลด์อาจารย์หมดแล้วนะคะ ก็ไม่น่าจะมีปัญหาอะไร มีอะไรสงสัยไหมคะ เดี๋ยวจะได้ปล่อยทำงาน ไม่มี อย่างนั้นเดี๋ยวจะให้นั่งทำงานนะคะ ก็เนื้อหาประมาณนี้ค่ะล่าม วันนี้เนื้อหาไม่เยอะ ขอบคุณมากวันนี้ โอเค ขอบคุณค่ะ