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