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