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