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