--- title: ฝึก PE กับ Bot (ห้องเรียนสกลฯ ) หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี วันที่ 22 พ.ย. 2565 นาโน subtitle: date: วันจันทร์ที่ 28 พฤษจิกายน 2565 เวลา 09.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์เกวลี) วันนี้จะเป็นเนื้อหาบทที่ 2 สถาปัตยกรรมฐานข้อมูล แล้วก็ทฤษฎีเกี่ยวกับแบบจำลองข้อมูล ข้อมูลที่ใช้ปัจจุบันนี่บางคนก็ไม่รู้ว่าทำไมเราต้องเก็บเหมือนนักศึกษา 1 คนทำไมต้องถามด้วยล่ะชื่ออะไร นามสกุลอะไร เรียนจบที่ไหนมา นะคะ เกรดเฉลี่ยตอนจบ ม. 6 หรือสายอาชีพ ได้เกรดเฉลี่ยเท่าไหร่ เทอมที่แล้วเราเรียนไปกี่วิชานะคะ ได้คะแนนเท่าไรได้เกรดเท่าไร่ ทำไมต้องดเก็บแบบนี้ นะคะ ทุกอย่างก็จะมีเหตุมีผล เพราะว่าข้อมูลทุกรูปแบบนี่ก็จะมีเนื้อหาความสำคัญของชุดข้อมูลนั้น ๆ อยู่นะคะ โดยที่เราจะเรียกสิ่งนั้น ๆ ว่า แนวคิดเกี่ยวกับการออกแบบฐานข้อมูล หรือสถาปัตยกรรมฐานข้อมูล นะคะ มันก็จะเป็นข้อกำหนด แล้วก็ข้อตกลง รวมถึงขอบเขต หรืออาจจะเป็นกรอบความคิดนะคะ ในการบรรยายว่าฐานข้อมูลนั่น ๆ ควรจะเป็นอย่างไรนะคะ โครงสร้าง ก็คือข้อมูลที่เราจะเก็บมีอะไรบ้าง ส่วนประกอบที่เอามาประกอบกันไปจนเป็นระบบฐานข้อมูล มีอะไรนะคะ โดยที่สถาปัตยกรรมฐานข้อมูลนี่อยู่ 3 ส่วนนะคะ ก็คือในตัวสถาปัตยกรรมระบบเองนะคะ และก็ความเป็นอิสระของข้อมูลนะคะ เดี๋ยวจะอธิบายว่าแต่ละอันคืออะไร กับภาษาที่ใช้ในการจัดการฐานข้อมูลนะคะ 3 อย่างนี้จะต้องทำงานร่วมกัน โดยสถานปัตยกรรมของฐานข้อมูลนี่ กับขอบเขตนะคะ หรือกรอบ ถ้าเป็นภาษาทางวิชาการ เรียกว่า "กรอบ" เชิงวิชาการเขาเรียที่ใช้ประโยชน์ในการบรรยายว่าทำไมเราถึงสร้างฐานข้อมูลแบบนี้ ทำไมเราเก็บข้อมูลแบบนี้ และในฐานข้อมูลนี่ เรามีโครงสร้างเก็บข้อมูลแบบไหนบ้างนะคะ ซึ่งหลัก ๆ แล้วนี่ โครงสร้างที่ใช้ในการสร้างฐานข้อมูลนี่ มันจะมีอยู่ 3 ระดับนะคะ มีระดับภายนอก ระดับภายใน แล้วก็ระดับแนวคิดเดี๋ยวจะอธิบายไปทีละอย่าง ทีละอย่างนะคะ ความเป็นอิสระของข้อมูลคืออะไรนะคะ ก็คือการที่ผู้ใช้งานสามารถเปลี่ยนแปลงข้อมูล อาจจะเป็นในระดับของการออกแบบฐานข้อมูล หรือระดับถึงขั้นการเก็บข้อมูลแล้วก็ได้ โดยที่ถ้าเราเปลี่ยนแปลงข้อมูล หรือเปลี่ยนแปลงการจัดเก็บข้อมูล โปรแกรมที่ใช้งาน จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนะคะ โปรแกรมก็อยู่ส่วนของโปรแกรม ข้อมูลก็อยู่ของข้อมูล จะแยกออกจากกันนะคะ โดยที่ผู้ใช้งานนี่ จะมองเห็นแค่ว่ากระเก็บข้อมูลระดับภายนอก ก็คือเราเก็บอะไรบ้างนะคะ เหมือนเวลาคุณอยากเล่น TikTok อยากเล่น Facebook อยากเล่น Instargram หรือเปล่า มีเบอร์โทรศัพท์ไหม มีโปรไฟล์เป็นรูปอะไร อันนี้คือข้อมูลระดับภายนอกที่ผู้ใช้งานอย่างเรา ๆ นี่ เป็นคนให้ข้อมูลไป แล้วก็เป็นสิ่งที่เราเป็นคนเห็นเองว่าข้อมูลที่กรอกลงไปนี่มีอะไรบ้างนะคะ แต่ถามว่าเราอยากเปลี่ยนแปลงได้ไหม ว่านอกจากรูปภาพนี่ อยากให้เขาขอเกี่ยวกับอะไรดีล่ะ สถานะการเรียน เราจะไปบอกเขาว่าอยากบอก อยากให้เพิ่มเมนูตรงนี้ได้ไหม เราทำไม่ได้นะคะ เพราะอันนั้นเป็นระดับโครงสร้าง เป็นระดับแนวคิด ระดับภายใน ซึ่งผู้ใช้งานธรรมดานี่ จะแก้ไขไม่ได้นะคะ โดยที่ เพราะฉะนั้นนี่ สมมติเรามีการเปลี่ยนแปลงข้อมูล เราจะเรียกเปลี่ยนแปลงข้อมูลส่วนตัวเรานี่ล่ะนะคะ ถ้าเราเปลี่ยนแปลงเฉพาะข้อมูลเราตัวเองนี่ มันจะไม่กระทบกับคนอื่น รวมถึงไม่ได้กระทบกับ Facebook ไม่ได้กระทบกับ Instagram TiKTok เขาก็ยังใช้งานปกติได้ ถึงแม้คุณจะบอกว่า จะเปลี่ยนแปลงรูปโปร์ไฟล ถามว่าโปรแกรมมันจะพังไหมไม่นะคะ นี่คือการเปลี่ยนแปลงระดับต่ำ ก็คือเป็นการเปลี่ยนแปลงของผู้ใช้งานโดยตรงนะคะ ความเป็นอิสระข้อมูลเชิงตรรกะ ก็คือการเปลี่ยนแปลงมุมมองของผู้ใช้งาน อย่างเช่น คุณอยากจะ วันนี้เราอัปรูปไป 4 รูป นะคะ คุณอยากจะสลับตำแหน่งนะคะ ย้ายจากรูปสุดท้ายมาเป็นรูปที่ 1 ถามว่าโปรแกรมนั้นจะพังไหม ไม่พังนะคะ เพราะมันถือว่าเป็นการเปลี่ยนแปลงภายนอก ไม่ได้เปลี่ยนแปลง Code โปรแกรม ไม่ได้บอกให้ผู้ดูแลระบบลบเมนูตรงนี้ออก ไม่ใช่นะคะ อันนี้ก็คือผู้ใช้งานอยากเปลี่ยนแปลงข้อมูลของตัวเองอย่างนี้ เปลี่ยนแปลได้เลยนะคะ ไม่กระทบกับคนอื่น ไม่กระทบกับระบบโดยรวมนะคะ รวมถึงความเป็นอิสระของข้อมูลเชิงกายภาพนะคะ ถ้าสมมติว่าวันหนึ่ง Facebook ย้ายเครื่องคอมพิวเตอร์ในการเก็บข้อมูลคนใช้งาน ถามว่าย้ายจากเครื่องหนึ่งไปอีกเครื่องหนึ่ง ถามว่าเราใช้ไกเมันไม่กระทบกับเรานะคะ มันถือว่าเป็นโครงสร้างของข้อมูลระดับภายใน ก็คือผู้ให้บริการเขาอาจจะมีการปรับเปลี่ยนย้ายจากเครื่อง A ไปเครื่อง B แต่ผู้ใช้งานก็ยังใช้งานได้ตามปกติ ไม่ได้รู้สึกถึงความผิดปกติใด ๆ อาจจะมีช่วงที่แบบ Restart เครื่องอะไรอย่างนี้นะคะ แต่ถามว่า Facebook เราหายไปไหม ไม่หายนะคะ อันนี้ก็คือตัวอย่างคร่าว ๆ ว่าเชิงตรรกะเป็นอย่างไร เชิงกายภาพเป็นอย่างไร ต่อมา ภาษาหลักของระบบจัดการฐานข้อมูลนะคะ ก็จะมีอยู่ 3 ภาษาหลัก ๆ นะคะ อันนี้หมายถึงว่าภาษาเชิงโครงสร้างที่ใช้ ไม่ได้หมายถึงชื่อภาษาทางโปรแกรม อันแรก คือ ภาษาสำหรับนิยามข้อมูล นะคะ ก็จะเป็นภาษาที่ใช้ในการกำหนดโครงสร้างของฐานข้อมูลนะคะ ว่าระดับแนวคิด ก็คือคุณวางแผนไว้ว่าอย่างไร อย่างเช่น อาจารย์อาจจะ พอคุณเรียนปีสูง ๆ ขึ้น จะต้องได้ทำ Project อาจจะทำโปรแกรมเป็นของตัวเอง สมมติว่าได้ทำโปรเจกต์เกี่ยวกับร้านหนังสือ ในร้านหนังสือร้านหนึ่งเราต้องเก็บข้อมูลอะไรบ้าง เราต้องเขียนออกมาให้ได้นะคะ สิ่งนี้เราจะเรียกว่าระดับแนวคิด เราจะมาให้ความหมายว่าในฐานข้อมูลเรานี่ ระหว่างผู้ใช้งาน สมาชิก เจ้าของร้าน สามารถทำอะไรได้บ้าง สิ่งเหล่านี้จะเรียกว่า View นะคะ หรือจะเรียกว่ามุมมองของผู้ใช้งานแต่ละคน เอาง่าย ๆ ยกตัวอย่างอีกแล้ว Facebook Facebook หน้าที่คุณดู กับหน้าที่เพื่อนดูอาจจะไม่เหมือนกัน ใน Facebook สามารถกำหนดว่ารูปนี้ ฉันจะเก็บไว้ดูคนเดียว หรือรูปนี้จะเพื่อนดูได้ รูปนี้จะให้ใครก็ได้มาดู ไม่ได่ปิดกั้น อย่างนี้ก็มี อันนี้คือการกำหนดสถานะมุมมองของการดูข้อมูลของเรานะคะ เราจะกำหนดตั้งแต่การกำหนดโครงสร้างของฐานข้อมูลผู้ใช้งานแต่ละคนดูข้อมูลส่วนไหนได้บ้างนะคะ ต่อมาเป็นภาษาในการจัดการข้อมูลเป็นภาษาในการจัดการข้อมูล อันนี้จะเป็นภาษาเชิง Programing ซึ่งไว้สำหรับจัดการข้อมูลในฐานข้อมูลนะคะ ก็จะเป็นตั้งแต่การค้นหาข้อมูลการเพิ่มการลบการแก้ไข ในฐานข้อมูลนะคะ อันนี้ก็จะสามารถทำได้ตามสิทธิ์ของผู้ใช้งานแต่ละคน บางคนค้นหาได้ แต่เพิ่มไม่ได้ บางคนเพิ่มได้ แต่ห้ามลบนะคะ อันนี้ก็เป็นคำสั่งที่ใช้ภายในฐานข้อมูล ต่อมา เป็นภาษาควบคุมนะคะ มันจะเป็นภาษาที่เอาไว้สำหรับควบคุมความถูกต้องของข้อมูล เช่นอะไรบ้าง อย่างเช่น อาจารย์ให้กรอกชนะคะ กรอกชื่อ แต่ว่านักศึกษาบางคนลืมเปลี่ยนภาษา หรือลืมเปลี่ยนปุ่ม หรือเปิดปุ่มตัวเลขไว้ นะคะ กลายเป็นว่าพิมพ์ชื่อตัวเองเป็นตัวเลข ภาษาระดับควบคุม ก็คือมันจะเป็นการตรวจสอบว่าข้อมูลที่นักศึกษาใส่มา ถูกหรือผิด เช่น อาจารย์กำหนดให้กรอกได้เฉพาะตัวหนังสือเท่านั้น ใส่ตัวเลขไม่ได้นะคะ หรือการเกิดภาวะพร้อมกัน อย่างเช่น จองตั๋วคอนเสิร์ต ดังมาก เข้ามาจองพร้อมกันสัก 50,000 คน เราจะมีการจัดการคน 50,000 คน อย่างไรนะคะ ให้สามารถทำงานได้ อันนี้คือการเกิดภาวะพร้อมกัน ก็คือเข้ามาใช้งานพร้อม ๆ กันทั้งหมดนะคะ โดยสถาปัตยกรรมฐานข้อมูลนี่ มันก็จะมีการศึกษาทั้งโครงสร้างองค์ประกอบหฃลักนะคะ ทั้งฐานข้อมูล หน้าที่แต่ละองค์ประกอบ แต่ละคน แต่ละผู้ใช้งานนะคะ รวมถึงการเขียนโปรแกรมเพื่อสื่อสาร แล้วก็ติดต่อกับส่วนอื่น ๆ นะคะ ในระบบฐานข้อมูลอาจจะไม่ได้มีแค่โปรแกรมเดียวที่ทำงานนะคะ อาทิตย์ที่แล้วเคยบอกว่า ระบบบัญชี ระบบบุคคล ระบบการเงิน ก็ใช้ฐานข้อมูลร่วมกันนะคะ โดยที่ถ้าสมมติว่าเรามีการเปลี่ยนแปลงโปรแกรมนะคะ โครงสร้างของฐานข้อมูลจะยังอยู่นะคะ ข้อมูลจะไม่หายไปไหน เพราะเราเปลี่ยนแค่ตัวโปรแกรม เราไม่เปลี่ยนทั้งโครงสร้างนะคะ ถ้าสมมติเราเปลี่ยนโปรแกรมใหม่ มันก็จะมีการเชื่อมต่อที่ทำให้ข้อมูลมันสามารถทำงานได้นะคะ โดยระบบฐานข้อมูลนี่ มันก็จะเป็นการเอาข้อมูลที่มีอยู่ในองค์กร หรือข้อมูลเพิ่มเติมนะคะ ที่มีความเกี่ยวข้องกันมารวมไว้ที่เดียวกันนะคะ โดยผู้ใช้งานในฐานข้อมูลนี่ จะมองมุมมอง หรือ View ที่แตกต่างกันไปตามสิทธิ์ของการใช้งานนะคะ โดยที่ผู้ใช้งานนี่ ไม่จำเป็นต้องรู้ว่า ถ้าสมมติคุณเป็นผู้ใช้งานทั่วไป เขาจำเป็นจะต้องรู้ไหมว่าโปรแกรมเมอร์เขียนโปรแกรมอย่างไร โปรแกรมเมอร์ใช้วิธีอะไรในการแสดงภาพ โปรแกรมเมอร์ทำอย่างไรให้เราดู Youtube ได้ อันนี้ไม่จำเป็นต้องรู้นะคะ โดยที่สิ่งเหล่านี้มันสามารถซ่อนรายละเอียดไว้ได้ แต่ถามว่าให้แสดงออกมาได้ไหม แสดงได้ แต่ User หรือผู้ใช้งานไม่จำเป็นต้องรู้ เพราะฉะนั้น เราซ่อนมันไว้ได้นะคะ ยกเว้นบางอย่างนี่ ที่เป็นภาษาโปรแกรมนี่ เหมือนเวลาเราใช้ Google chrome เราก็สามารถดูได้ว่าโค้ดโปรแกรมที่ผู้ดูแลระบบเขียนไว้นี่ เขาเขียนอย่างไรบ้าง ก็ดูได้นะคะ แต่ถามว่าพ่อแม่เราจะอยากรู้ไหมว่า Google เขียนโปรแกรมอย่างไร ไม่จำเป็นต้องเปิดดู แต่ถามว่าเปิดดูได้ไหม บางส่วนก็เปิดดูได้นะคะ โดยสถาปัตยกรรมฐานข้อมูลนี่ มีอยู่ 3 ระดับนะคะ เหมือนที่พูดไปตอนต้น ก็คือมีระดับภายนอก ระดับแนวคิด และระดับภายใน มี 3 ระดับ โดยแสดงเป็นแผนภาพแบบนี้นะคะ ให้... อันนี้ระดับภายนอกนะคะ เดี๋ยวเติมเส้นแบบนี้ ระดับภายนอก ก็คือเราอาจจะมีผู้ใช้งาน 1 คน 2 คน หรือหลายคน แต่ละคนอาจจะใช้ระบบเดียวกัน แต่หน้าจอที่ดูอยู่ไม่เหมือนกันก็ได้นะคะ อย่างเช่น นักศึกษาเข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรด คนที่ 2 พิมพ์ใบลงทะเบียน คนที่ 3 อาจจะค้นหาคำอธิบายรายวิชา ถามว่าเขาใช้โปรแกรมเดียวกันไหม ระบบเดียวกันไหม ใช่ ระบบเดียวกัน แต่เขาอาจจะทำงานไม่เหมือนกันก็ได้นะคะ คุณอยากดูตรงไหนก็ได้เหมือนกันก็ได้ แต่จะต้องเป็นข้อมูลของตัวเอง อย่างเช่น เกรดคุณจะดูของเพื่อนไม่ได้ เพราะแต่ละคนมีสิทธิ์ของตัวเองเท่านั้นนะคะ จะไปละเมิดความเป็นส่วนตัวของคนอื่นไม่ได้นะคะ อันนี้ก็มันจะมีกฎหมายอยู่ เวลาเราจะดูข้อมูลใคร หรือโพสต์รูปใคร หรือพิมพ์ถึงใคร มีกฎหมายกำหนดนะคะ ต่อมา เป็นในระดับแนวคิด ก็จะดูแล้วว่าโครงสร้างฐานข้อมูลที่เราออกแบบไว้ สำหรับการทำงาน มันจะเป็นเหมือนตัวที่ไว้จัดการว่า User หรือผู้ใช้งานแต่ละคนนี่ เรียกเข้าเรียกข้อมูลอะไรเข้าไปดู เป็นตัวดการ หลังจากนั้นก็จะทำหน้าที่เชื่อมต่อกับระบบภายใน เพื่อดึงข้อมูลจากฐานข้อมูลไปแสดงผลนะคะ การทำงานจะมีส่วนหลัก ๆ 3 ส่วนแบบนี้ ที่เราใช้งานกัน แต่ถามว่า User จำเป็นต้องรู้แนวคิดเกี่ยวกับระดับภายในไหม ไม่จำเป็นนะคะ เขาก็จะดุแต่เฉพาะข้อมูลทีตนเองสนใจในระดับภายนอกนะคะ เหตุผลที่ว่าทำไมเราต้องแยกออกเป็น 3 ระดับ แยกออกจากกัน ทำไมเราไม่รวมกันไว้นะคะ อันแรก ก็คือผู้ใช้งานแต่ละคนนี่ ก็อาจจะเข้าถึงข้อมูลเดียวกันได้ แต่อาจจะเรียกดูผลไม่เหมือนกัน เหมือนบางคน อย่างที่บอกคะ เข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรด คนหนึ่งลงทะเบียน คนหนึ่งค้นหารายวิชา หน้าตาแตกต่างกัน แต่ก็ใช้ฐานข้อมูลเดียวกันนะคะ ผู้ใช้งานจะไม่สามารถเข้าถึงข้อมูลโดยตรงได้ ก็คือคุณจะไม่สามารถพิมพ์หรือเรียกใช้ข้อมูลในฐานข้อมูลได้โดยตรง จะต้องผ่านระบบจัดการฐานข้อมูลเท่านั้นนะคะ Admin นะคะ ในฐานข้อมูล ก็คือผู้บริหารฐานข้อมูลหรือ Database Admin ตัวย่อก็คือ DBAโ ครงสร้างของฐานข้อมูลได้เข้าไปดูข้อมูลที่เก็บไว้ได้นะคะ แต่จะต้องไม่สร้างผลกระทบให้กับผู้ใช้งาน ก็คือตอนที่คุณอาจจะปรับปรุงเปลี่ยนแปลงฐานข้อมูลอยู่ ุ้้ผู้ใช้งานก็ยังใช้งานได้ปกติโครงสร้างระดับภายในฐานข้อมูลนะคะ จะไม่ได้รับผลกระทบถ้าคุณมีการเปลี่ยนโปรแกรม อยู่ในลักษณะของเชิงกายภาพนะคะ ถ้าเปลี่ยโปรแกรมปุ๊บ เปลี่ยนจากกโปรแกรม A ไปเป็นโปรแกรม B ข้อมูลจะต้องไม่หายไปไหน อันนี้คือเหตุผลที่ 3 ส่วนนี้ เราจำเป็นจะต้องแยกส่วนกันนะคะ มาดูรานยละเอียดเพิ่มเติมนะคะ สำหรับระดับภายใน ก็จะเป็นระดับที่จัดเก็บข้อมูล อยู่ในโครงสร้างที่เราออกแบบไว้แล้วนะคะ ถ้าเราเก็บข้อมูลได้ดี มันก็จะมีผลต่อความเร็ว แล้วก็ประสิทธิภาพในการใช้ข้อมูลนะคะ ในระดับภายในนี่ มันก็จะเป็นการดูว่า เรามีการสำรองข้อมูลหรือเปล่า เราเก็บข้อมูลอย่างไรนะคะ ส่วนมาก ข้อมูลในฐานข้อมูลนี่ อาจจะเก็บข้อมูลอยู่ในฮาร์ดดิสก์ก็ได้นะคะ มีการทำงานงานร่วมกับระบบปฏิบัติการ สามารถอ่านเขียนข้อมูลได้ร่วมกับระบบปฏิบัติการได้ ทำไมถึงบอกว่าการจัดเก็บข้อมูลที่ดี มีผลต่อความเร็วแล้วก็ประสิทธิภาพในการเข้าถึงข้อมูลนะคะ เวลาเราเก็บข้อมูลนี่ จะเห็นได้ว่า ทำไมเราต้องเรียงลำดับตามรหัสนักศึกษาด้วย เอา 207 ขึ้นก่อน 201 ได้ไหม ได้ แต่ถามว่าเวลาเราค้นหาข้อมูล ถ้าเราเรียงตามลำดับ แน่นอนมันหาข้อมูลเร็วกว่า เราก็มาตกลงกันเลยว่า เราจะเรียงลำดับนักศึกษาในห้องนี้อย่างไร อย่างเช่น ซึ่งมาตรฐานทั่วไป ก็จะเรียงลำดับตามรหัสนักศึกษาจากน้อยไปมากใช่ไหมคะ แต่ถ้าเราไม่มีรหัสนักศึกษาล่ะ โดยหลักทั่วไปก็จะเรียงตาม ก ไก่ ถึง ฮ นกฮูก ใช่ไหมคะ แล้วแต่เราจะทำข้อตกลงอย่างไร หรือบางฐานข้อมูลก็จะบอกว่าเรียงตามอายุ อายุมากขึ้นก่อน หรืออะไรอีกล่ะ เพศชายขึ้นก่อน เพศหญิงตามมา คนเกิดวันอาทิตย์ขึ้นก่อน หรือคนเกิดวันจันทร์ขึ้นก่อน แล้วแต่โครงสร้างที่เรากำหนดไว้ ทำไม เพื่อให้มันหาข้อมูลได้เร็ว เพราะเรารู้แล้วว่า เกณฑ์ในการจัดเรียงข้อมูลมันคืออะไร เพราะว่าข้อมูลที่เก็บอยู่ในฮาร์ดดิสก์ มันไม่เรียง 1 2 3 4 5 ให้เรานะคะ มันจะเรียงกระจัดกระจาย อยู่ตรงไหนก็ได้ที่มันมีพื้นที่ว่าง แต่มันจะใช้เลขแทนตำแหน่ง อย่างเช่น สินสมุทร อาจารย์กำหนดให้เป็น 001 001 ในฮาร์ดดิสก์อาจจะเก็บตรงไหนก็ได้ แต่สมมติอาจารย์ไม่ใส่ 001 ล่ะ ใส่คำว่า "สินสมุทร" มันจะหาข้อมูลเร็วขึ้นไหม ถ้าแทนด้วยตัวเลข เรียงตามลำดับ มันก็จะค้นหาข้อมูลได้เร็วขึ้น เหมือนอาจารย์เรียงลำดับรหัสนักศึกษาจากน้อยไปหามาก เวลาเช็กชื่อ อาจารย์ก็เช็กได้เร็วขึ้นว่ารหัสคนไหนหายไป หรือว่าอาจารย์ ห้องนี้นักศึกษาไม่เยอะมันก็ง่าย แต่บางวิชาอาจารย์สอน 50-60 คนขึ้นไป อาจารย์จำไม่ได้ จำไม่ไหวนะคะ การเรียงลำดับจากน้อยไปหามาก จะทำให้อาจารย์เช็กได้ง่ายขึ้น รู้ว่าใครมา ใครขาดนะคะ เพราะฉะนั้นอีกอย่างหนึ่ง ก็คือเวลาเราทำกิจกรรมใด ๆ ก็ตาม ทำไมเวลา... เหมือนสอบบรรจุก็ได้ค่ะ สอบบรรจุคุณครู ทำไมเขาถึงไม่เรียงลำดับตามคะแนน เพราะมันก็จะมีข้อสังเกตหรือข้อสงสัยเกิดขึ้น เขาก็เลยตัดปัญหา เรียงลำดับตามเลขที่สมัคร เพื่อให้มันค้นหาข้อมูลของผู้สมัครคนนั้นได้ง่าย และประกาศผลได้ก็ง่ายนะคะ แต่ว่าแต่ก็แล้วแต่ถ้ามีผู้ดูแลระบบข้อมูล เขาอยากดูแบไหนก็แล้วแต่สิ่งที่เขาจะเรียกขึ้นมาดูนะคะ อันนี้คือระดับภายใน ต่อมา ระดับแนวคิด ก็จะเป็นโครงสร้างของฐานข้อมูลโดยรวม เราต้องดูว่าเราจะเก็บข้อมูลอะไร ในฐานข้อมูลของเรา แต่ละข้อมูลมีส่วนอะไรที่มีความสัมพันธ์เกี่ยวข้องกันบ้าง โดยการกระทำใด ๆ ก็ตามที่เกิดขึ้นในระดับแนวคิดนะคะ ก็จะทำอยู่บนโครงสร้างฐานข้อมูลที่กำหนดไว้แล้วเท่านั้น ในระดับแนวคิดจะมีอะไรเกิดขึ้นบ้างนะคะ อย่างเช่น จำนวน Entity Entity ก็คือส่วนของคอลัมน์นะคะ อย่างเช่น นักศึกษา 1 คน จะมี Entity ที่เข้ามาเกี่ยวข้องนะคะ ก็จะมี Entity ของอาจารย์นะคะ เป็นคอลัมน์อาจารย์... ไม่ใช่สิ เป็นตารางของอาจารย์ ตารางนักศึกษา ตารางรายวิชา มาเกี่ยวข้องกัน ใน 1 ตาราง จะประกอบไปด้วย Attribute นักศึกษา 1 คนจะมีกี่ Attribute อาจารย์ดูง่าย ๆ เลย สมมติว่าจะมี 3 คอลัมน์ 3 Attribute คอลัมน์ที่ 1 รหัสนักศึกษา คอลัมน์ที่ 2 ชื่อ-นามสกุล คอลัมน์ที่ 3 อาจจะเป็นที่อยู่หรือเบอร์โทรศัพท์ หรือชื่อเล่นก็ได้นะคะ โดยแต่ละตารางหรือแต่ละ Entity จะต้องมีความสัมพันธ์ระหว่างกัน หรือว่า Relationship เช่น ทำไมตารางอาจารย์กับตารางนักศึกษาต้องมีความสัมพันธ์กันเช่น อาจารย์สอนวิชานี้ ในใบลงทะเบียนเรียนของทุกคนมีไหม มี แล้วลงทะเบียนวิชานี้มีชื่ออาขจารย์ไหม มี อาจารย์ก็สามารถดูได้เหมือนกันว่าวิชานี้มีใครลงทะเบียนบ้าง เพราะฉะนั้น อาจารย์กับนักศึกษาจะต้องมีความเกี่ยวข้องกันอย่างน้อย 3 ตาราง ก็คือตารางอาจารย์ ก็คือเก็บข้อมูลอาจารย์ ตารางนักศึกษา ก็จะเก็บข้อมูลนักศึกษา ตารางเรียนก็จะรู้แล้วว่าเทอมนี้อาจารย์สอนวิชาอะไรบ้าง นักศึกษาลงวิชาอะไรบ้างนะคะ อันนี้ก็เป็นความสัมพันธ์แบบง่าย ๆ อันนี้ก็เหมือนกัน ระดับภายนอก จะเป็นส่วนที่ผู้ใช้งานเรียกดูข้อมูลนะคะ ผู้ใช้งานแต่ละคนอาจจะดูข้อมูลเหมือนกันหรือต่างกันก็ได้นะคะ โดยที่ฐานข้อมูลนี่ สามารถมีมุมมองหรือเค้าร่างภายนอกได้หลายรูปแบบ แล้วแต่นะคะ อย่างเช่น ตัวอย่างนี้มีผู้ใช้งาน 3 คนนะคะ เรียกดูข้อมูลในฐานข้อมูล เดียวกัน แต่อาจจะเป็นคนละตาราง เพราะว่าใน 1 ในฐานข้อมูล 1 ฐานข้อมูลนี่ อาจจะมีตารางได้เยอะมากนะคะ แต่ทุกตารางจะต้องมีความสัมพันธ์กัน อย่าง 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 มาแล้ว รวมถึงน่าจะรู้ว่าตารางคืออะไรนะคะ ตารางก็จะเป็นแบบนี้ เหมือนเวลาเราใส่ข้อมูลทั่ว ๆ ไปนะคะ ตีเส้น ตีกรอบ อันนี้คือตารางนะคะ มีแถวกับคอลัมน์ ส่วนของการปรับปรุง ก็จะเป็นส่วนที่ชนิดของการทำงานต่าง ๆ ตั้งแต่การปรับปรุงข้อมูล หรือการเรียกดูมูลในฐานข้อมูล การเปลี่ยนแปลงโครงสร้างในฐานข้อมูล เช่น เราอาจจะเพิ่มในส่วนของSocail media ชื่อ Facebook คุณชื่ออะไร แต่จะต้องไม่กระทบกับฐานข้อมูลหลัก ซึ่งจะนิยมใช้ชุดคำสั่งของภาษา SQL อันนี้เราก็จะเรียนเหมือนกันนะคะ SQL ในการจัดการกับข้อมูล รวมถึงกฎของความคงสภาพ เพื่อใช้สำหรับควบคุมความถูกต้องของข้อมูล และเพื่อความถูกต้อง เช่น รหัสนักศึกษาจะต้องเป็นตัวเลขเท่านั้น เป็นตัวหนังสือไม่ได้นะคะ ความแน่นอนของข้อมูลที่ถูกต้องที่บันทึกลงในฐานข้อมูล เวลาเราเรียกดูข้อมูลปุ๊บ เราจะได้มาตรงกับความจริงที่เกิดขึ้นนะคะ นี่ก็จะซ้ำ ๆ กัน แบบจำลองฐานข้อมูลในการตัดสินนี่ มันก็จะเป็นสิ่งสำคัญมาก ๆ สำหรับการออกแบบฐานข้อมูลนะคะ ซึ่ง เราก็จะแบ่งเป็นประมาณประมาณ 5 รูปแบบ เพื่อให้เราตัดสินใจว่า เราจะออกแบบฐานข้อมูลแบบไหนนะคะ อันแรกเลย เป็นแบบลำดับชั้นนะคะ เป็นรูปแบบสถาปัตยกรรมฐานข้อมูลที่เก่าแก่ที่สุด ใช้มานานมากนะคะ โครงสร้างของข้อมูลหรือไฟล์จะถูกจัดเก็บไว้จากบนลงล่างนะคะ ลักษณะคล้าย ๆ กับรากของต้นไม้นะคะ โดยไฟล์ต่าง ๆ จะต้องมีข้อก็คือเป็น ถ้าเป็นภาาาอังกฤษก็คือ One parent ข้อมูลเดียวเท่านั้น แล้วค่อย ๆ แตกสาขาออกไปนะคะ ความถูกต้องในการเก็บข้อมูลค่อนข้างมีสูง ความคงสภาพการเปลี่ยนแปลงข้อมูลน้อยมาก แต่ปัจจุบันงไม่นิยมใช้ เพราะมันยากต่อการไล่ลำดับของข้อมูลนะคะ มันเวลาจะหาข้อมูลทีหนึ่งก็ต้องวิ่งไปข้างบน แล้วก็ลงมาข้างล่าง ก็ต้องเริ่มจากข้างบน แล้วค่อยมาข้างล่าง คุณอะไรล่ะ สมมติตึกนี้มี 10 ชั้น อยากไปชั้น 3 คุณจะขึ้นจากข้างล่างไปชั้น 3 เลยไม่ทุกครั้งนะคะ แบบจำลองข้อมูลตัวนี้ ข้อมูลตัวนี้ถามว่าดีไหม ดี แต่ทำงานช้านะคะ ลักษณะก็จะเป็นแบบนี้นะคะ เริ่มจากตรงนี้กว่าจะลงมาถึงตรงนี้ได้ ต้องผ่านทุกชั้นนะคะ ถ้าเราอยากดูข้อมูลตรงนี้เลยนี่ ตรงที่อาจารย์วง ๆ ไว้นี่ เข้ามาตรงนี้เลยได้ไหม ไม่ได้ เพราะกฎของมันก็คือเริ่มจากบนสุด แล้วค่อยลงมาข้างล่าง มันดีค่ะ แต่มันช้านะคะ จำเป็นประมาณนี้นะคะ เป็น Root ลงมา ตรงนี้ เหมือนข้อมูลแบบนี้ค่ะ อันนี้คือแบบจำลองที่เราวาดกันจริง ๆ นะคะ สมมติอาจารย์อยากดูข้อมูลคนนี้นะคะ ระดับล่างสุดเลย อาจารย์เข้ามาดูข้อมูลคนนี้โดยตรงไม่ได้ อาจารย์จะต้องสั่งจากด้านบน ค่อย ๆ ลงมาตามลำดับชั้นเรื่อย ๆ จนถึงตรงนี้ ถามว่าเราเป็นผู้ใช้งานเราอาจจะไม่รู้สึกว่ามันหาข้อมูลช้าแต่ในทางการทำงานทางกายภาพของคอมพิวเตอร์นี่ มันทำงานโดยคิดเป็นหน่วยใหญ่ ๆ ก็คือเป็นวินาที ยิ่งใช้เวลาหาข้อมูลนานเท่าไร ก็ยิ่งมีค่าใช้จ่ายที่เพิ่มขึ้นตามไปด้วยนะคะ เพราะฉะนั้น เหมือนในยุคปัจจุบัน คอมพิวเตอร์ทำไมทุกคนอยากได้คอมพิวเตอร์ที่เร็ว คิดเร็วเร็วนะคะ ถามว่าอันนี้มันช้าจนเราทนไม่ได้ไหม ถ้าข้อมูลมันมีแค่นี้มันทนได้ค่ะ แต่ถ้าข้อมูลมากกว่านี้ล่ะ หลายลำดับชั้นกว่านี้ล่ะ แค่หาชื่อคนอาจจะรอเป็นชั่วโมงก็ได้ ถ้าจำนวนข้อมูลมันเยอะนะคะ อันนี้ก็เป็นแบบจำลองข้อมูลที่ถามว่าทำได้ดีค่ะ แต่ว่าอาจจะเสียเวลานะคะ ข้อดีก็คือเข้าใจง่าย ลักษณะเหมือนรากของต้นไม้ อย่างที่บอกนะคะ ข้อมูลมีความสัมพันธ์แบบ 1 ต่อ มากกว่า 1 จริง ๆ อยากพูดภาษาอังกฤษมากกว่า เป็นความสัมพันธ์แบบ One to Many แบบพ่อ 1 คน มีลูกได้หลายคนประมาณนี้ ความสามารถในการควบคุมความถูกต้องของข้อมูลมีสูงนะคะ ข้อมูลที่เหมาะกับข้อมูลแบบจำลองแบบนี้ควรน่าจะเป็น เป็นการเรียงลำดับอย่างต่อเนื่องนะคะ ที่จะเหมาะที่จะใช้ แต่มันก็มีข้อเสียอย่างที่บอกนะคะ มันไม่สามารถรองรับข้อมูลที่มีความสัมพันธ์แบบ one to Many many to many 1 ต่อ หลายสิ่ง หรือหลายสิ่ง ต่อหลายสิ่งอะไรพวกนี้ เดี๋ยวเราจะเรียนในบทถัด ๆ ไป มันคืออะไรนะคะ เดี๋ยวจะอธิบายโดยละเอียดในบทถัด ๆ ไป โดยแบบจำลองแบบลำดับชั้นนี่ ความยืดหยุ่นมันก็จะน้อยนะคะ การปรับเปลี่ยนโครงสร้างมีความยุ่งยาก เพราะทุกอย่างจะต้องเริ่มจากด้านบน ถ้าเปลี่ยนตรงใดตรงหนึ่งต้องไล่ดูทั้งหมด เพราะมันอาจจะกระทบกับอีกส่วนอื่นก็ได้นะคะ อย่างที่บอกค่ะ การค้นหาข้อมูลระดับล่าง ๆ จะต้องทำตั้งแต่บนลงล่างลงมา เข้าไปหาโดยตรงไม่ได้นะคะ เสียเวลา แล้วก็ทำให้การเขียนโปรแกรมในอนาคต มันยาก เพราะว่าทุกอย่างจะต้องวนกลับมาจุดเริ่มต้น วนกลับมาจุดเริ่มต้น เสียเวลามากนะคะ มันก็เลยมีการพัฒนาแบบจำลองข้อมูลแบบเครือข่ายขึ้นมานะคะ โดยแบบจำลองข้อมูลแบบเครือข่ายนี่ จะใช้ตัวชี้ตำแหน่งที่เรียกว่า Pointer ก็คือใช้ลูกศรนะคะ ใช้ลูกศร ก็จะมีการเชื่อมโยงความสัมพันธ์ระหว่างข้อมูลในแต่ละแถวเข้าด้วยกันนะคะ ก็จะเป็นข้อมูลที่เชื่อมโยงกันได้นะคะ ข้อมูลสามารถวิ่งผ่านกันได้ ไม่จำเป็นต้องจากบนลงล่างมา อาจจะเลี้ยวซ้ายเลี้ยวขวาได้แล้วตรงนี้นะคะ ลักษณะของแบบจำลองเชิงเครือข่ายก็จะเป็นแบบนี้นะคะ แต่ก่อน เราจะเริ่มจากบนลงล่างใช่ไหมคะ คราวนี้ถ้าใบส่งของนี่ มันสามารถไปหาใครได้บ้าง ใบส่งของ 1 ใบ มีข้อมูลอะไร ก็คือรายการในใบส่งของใครเป็นคนขาย ใครเป็นคนซื้อ เขาจ่ายเงินแบบไหน อันนี้ไม่ต้องจากบนลงล่าง ใช่ไหมคะ หรือจะดูว่าพนักงาน วันนี้ขายของอะไรได้บ้าง ก็สามารถดูได้ ลูกค้าคนนี้ อยู่ในใส่งของไหน ใครเป็นคนขาย ลูกค้าจ่ายเงินอย่างไร ก็ดูได้ ดูได้ทุกตำแหน่งนะคะ โดยที่ไม่ต้องเริ่มจากบนลงล่าง สามารถเข้าไปดูได้โดยตรง ข้อดีแบบจำลองข้อมูลแบบเครือข่ายนะคะ ก็ความซ้ำซ้อนในการเกิดขึ้นของข้อมูลเกิดขึ้นน้อยกว่าในลำดับชั้น เรียกดูข้อมูลแบบไป-กลับได้ง่ายนะคะ เพราะว่าการค้นหาข้อมูลทำได้ดีกว่า เพราะว่ามีตัวชี้ตำแหน่ง หรือว่า Pointer ในการเข้าถึงข้อมูลได้ในทันทีนะคะ แต่สิ่งที่มีข้อดีก็ต้องมีข้อเสียนะคะ ข้อเสีย ก็คือการป้องกันความปลอดภัยของข้อมูลมีน้อยนะคะ แล้วก็สิ้นเปลืองพื้นที่ในตัวเก็บตัวชี้ตำแหน่ง ถ้าตารางข้อมูลมันมีแค่นี้น่ะค่ะ มันก็ไม่เปลืองหรอก แต่ถ้าสมมติว่ามันเป็นระดับห้างสรรพสินค้าล่ะ ร้านค้าใหญ่ ๆ ข้อมูลเกิดขึ้นแทบจะทุกนาที มันก็ต้องมีตัวชี้ตำแหน่งเก็บทุก ๆ ๆ ๆ สิ่งที่เกิดขึ้น ทำไมเราถึงบอกว่าเปลืองไม่ได้ เพราะว่าใช้เชิงธุรกิจ อะไรที่เป็นสิ่งที่เราต้องจ่ายเพิ่ม เช่น เช่น การซื้อฮาร์ดดิสก์เพิ่ม เพื่อเก็บข้อมูล เป็นต้น หมายความว่าคุณจะต้องลงทุกเพิ่มขึ้นในสิ่งที่อาจจะไม่ได้จำเป็นขนาดนั้นนะคะ แล้วก็การเปลี่ยนแปลงเชิงโครงสร้างก็อาจจะมีความยุ่งยาก เพราะหลาย ๆ อย่างมันเชื่อมต่อกันอยู่ เช่น อยู่ดี ๆ อาจารย์บอกว่าอาจารย์อยากตัดใบส่งของออก แล้วพนักงานกับลูกค้าจะเชื่อมโยงกันอย่างไร ผ่านสินค้าหรือ แล้วคุณไม่ต้องไปส่งของลูกค้าหรือนะคะ อันนี้ก็จะมีข้อสงสัย กับข้อที่ต้องมาคิดตามเหมือนกัน ว่าถ้าเราจะมีการเปลี่ยนแปลงตำแหน่งบางตำแหน่ง สำหรับการชี้ตำแหน่งนะคะ มันต้องทำอย่างไร มันก็เลยมีการพัฒนาขึ้นมาอีก เป็นแบบจำลองฐานข้อมูลเชิงสัมพันธ์นะคะ ก็จะเป็นแบบจำลองข้อมูลที่ได้รับความนิยมมากในปัจจุบัน เพราะว่านำเสนอข้อมูลในลักษณะที่เป็นตาราง เข้าใจง่ายมีแถว มีคอลัมน์นะคะ สามารถแสดงให้เห็นถึงความสัมพันธ์กับตารางอื่น ๆ ได้ง่าย นะคะ แต่เราจะใช้สิ่งที่เรียกว่ากุญแจหรือ Key เพื่ออ้างอิงไปยังตารางอื่น ๆ เหมือนอย่างนี้ อันนี้คือตารางพนักงานขาย ตารางลูกค้าอะไรพวกนี้ค่ะ เราไม่รู้ว่าเราจะอ้างอิงด้วยอะไรใช่ไหมคะ อย่างเช่นใบส่งของ มีของอยู่ 5 อย่าง เราก็รู้ว่าแค่ 5 อย่าง ไม่ได้มีจุดสังเกตใด ๆ ให้รู้นะคะ มันก็เลยมีการพัฒนาสิ่งที่เรียกว่า "Key" ขึ้นมานะคะ โดยกุญแจของ 1 คนนี่ มันสามารถเป็นได้ทั้งกุญแจหลัก แล้วก็คีย์รองได้ เดี๋ยวรายละเอียดของคีย์หลัก คีย์รองคีย์ ภายนอกนะคะ จะอธิบายโดยละเอียดในบทถัด ๆ ไปนะคะ อันนี้เอาให้เห็นคร่าว ๆ ก่อน อย่างเช่นนะคะ ตารางนี้นะคะ อันแรกจะเป็นตารางเก็บข้อมูลสาขา สมมติว่าเราเปิดร้านค้า มีตารางเกี่ยวกับสาขาที่เราเปิด กับตารางพนักงาน ทำไมรหัสสาขาอาจารย์ต้องขีดเส้นใต้ด้วย ทำไมรหัสพนักงานก็ต้องขีดเส้นใต้ด้วย ความสำคัญมีอยู่นะคะ ว่าไม่ใช่ว่าขีดเฉย ๆ เพื่อเน้นให้พวกคุณอ่าน ไม่ใช่ มันแสดงให้เห็นว่าในตารางนี้ สิ่งใดที่ขีดเส้นใต้ ข้อนั้น ข้อมูลในตารางนั้นจะซ้ำกันไม่ได้ เราเรียกสิ่งนี้ว่า "คีย์หลัก" นะคะ รหัสพนักงานขีดเส้นใต้ ก็แสดงว่ารหัสพนักงานแต่ละคนจะต้องไม่ซ้ำกัน เพราะรหัสพนักงานเป็นคีย์หลัก แต่ถ้าสังเกตดี ๆ ในตารางพนักงาน ทำไมมีรหัสสาขาโผล่ขึ้นมาตรงนี้ด้วย แล้วทำไมไม่ขีดเส้นใต้ล่ะ ในตารางนี้ เพราะในตารางพนักงานรหัสสาขาไว้สำหรับเป็นคีย์นอก ในการเชื่อมต่อกันว่า 2 ตารางนี้ มันมีความสัมพันธ์กันอย่างไร นะคะ เดี๋ยวจะอธิบายอีกทีหนึ่ง ว่าทำไมต้องมีความสัมพันธ์กันล่ะ เอาง่าย ๆ เลยค่ะ พนักงานคนที่ 1 ถ้าอาจารย์ไม่มีรหัสสาขา คุณจะรู้ไหมว่าพนักงานคนนี้ทำงานที่สาขาไหน ไม่รู้เลย หรืออาจจะบอกว่าสาขาอุดรฯ มีใครทำงานบ้าง รู้ไหม ถ้าไม่เชื่อมกับตารางพนักงานก็ไม่รู้เลยนะคะ เดี๋ยวจะอธิบายอีกทีหนึ่ง ในบทของการวาดความสัมพันธ์นะคะ ข้อดีของแบบจำลองเชิงสัมพันธ์แบบตาราง อ่านง่าย เข้าใจง่าย เพราะนำเสนอในลักษณะของตาราง สามารถเลือกดูสิ่งที่เราสนใจ ความซับซ้อนข้อมูลก็มีน้อย เพราะว่าข้อมูลในเชิง 2 มิตินี่ มันมองง่ายความปลอดภัยค่อนข้างดีนะคะ เพราะว่าผู้ใช้งานก็จะไม่รู้ว่าเราเก็บข้อมูลอย่างไร อยากเรียกใช้ข้อมูลอะไรได้บ้างนะคะ แล้วก็โครงสร้างของข้อมูลแน่นอน ถ้าเราเปลี่ยนโปรแกรมก็ยังสามารถทำงานได้นะคะ แต่ข้อเสียของมันก็มีนะคะ ก็คือค่าใช้จ่ายค่อนข้างสูงนะคะ เพราะว่าทรัพยากรที่ใช้ในการจัดการนี่ ต้องมีสมรรถที่สูงนิดหนึ่ง ประมวลผลต้องเร็วนะคะ การปรับปรุงแก้ไขข้อมูลก็อาจจะมีความยุ่งยาก เพราะว่าไม่รู้ว่าข้อมูลภายในที่เก็บจริง ๆ แล้วนี่มันเป็นอย่างไร มีคนเดียวที่รู้ ก็คือคนเขียนฐานข้อมูลเท่านั้น บางครั้งผู้ใช้งานนี่ อาจจะเป็นคนที่ต้องคีย์ข้อมูลเข้าไป ก็อาจจะเริ่มงงแล้ว สรุปว่าฉันต้องกรอกข้อมูลอะไร ทำไมข้อมูลมันไม่ผ่านนะคะ อย่างเช่น อาจจะไม่มี อันนี้มันก็จะเกี่ยวเนื่องไปถึงการออกแบบระบบด้วย เหมือนบางคนใส่เลยบัตรประชาชนไม่ครบไม่ครบ 13 หลัก ถ้าผู้ดูแลระบบออกแบบไม่ดี มันก็จะไม่มีแจ้งเตือนว่าเลขบัตรประชาชนคุณน่ะไม่ครบ คนใช้งานก็จะเริ่มงงแล้วว่าฉันผิดอะไรนะคะ มันตั้งแต่การออกแบบเลย เพราะฉะนั้น คนดูแลระบบต้อบป้องกันสิ่งที่จะเกิดขึ้น มีการแจ้งเตือนว่าเราผิดพลาดตรงไหน ข้อมูลจะเป็นอะไรได้บ้างนะคะ เหมือนการเก็บข้อมูลรูปภาพ รูปภาพต้องขนาดเท่าไหร่ ต้องเป็นภาพสีไหม หรือว่าต้องเป็นภาพขาว-ดำเท่านั้น จะต้องอธิบายให้ชัดเจนนะคะ เพราะว่าถ้ามีการปรับปรุงข้อมูลทีหนึ่งนี่ บางทีถ้าผู้ใช้งานไม่เข้าใจมันก็จะไม่สามารถบันทึกลงฐานข้อมูลได้นะคะ กับแบบจำลองข้อมูลเชิงวัตถุนะคะ ส่วนมากจะเป็นการออกแบบเพื่อเขียนแอปพลิเคชันนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่งนะคะ มันก็จะมีการห่อหุ้มวัตถุนั้น ๆ ไว้ด้วยอะไรบ้างนะคะ อันนี้ก็พอเรียนปีสูงขึ้น ทุกคนก็จะได้เรียนการทำงานเชิงวัตถุมากขึ้นนะคะ อันนี้ปี 1 ก็ฐานข้อมูลเชิงสัมพันธ์นี้ก็เต็มที่แล้วนะคะ อันนี้อาจารย์เอามาให้รู้จักเฉย ๆ เพราะว่าถ้าเป็นฐานข้อมูลหรือการเขียนโปรแกรมเชิงวัตถุใด ๆ ก็ตาม มันจะทำงานซับซ้อนได้ดีกว่า มันเหมาะกับการทำงานเกี่ยวกับภาพกราฟิก การเก็บวีดิโอ เสียง อย่างเช่น เราเล่น Facebook มีหมดเลย ทั้งภาพ ทั้งวิดีโอ ทั้งเสียง ที่เราต้องเก็บข้อมูล แล้วก็สามารถเอาข้อมูลที่มีอยู่หรือนานมาแล้วนี่ เรียกกลับมาใช้ซ้ำได้ง่ายกว่ารูปแบบจัดการฐานข้อมูลชนิดอื่น ๆ แต่ข้อเสียของการทำงานเชิงวัตถุ ก็คือจะต้องมีความชำนาญมาก ๆ แล้วก็เข้าใจในการมองโปรแกรม หรือมองข้อมูลนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่ง อาจจะต้องใช้ประสบการณ์ในการจัดการกับข้อมูลที่มีความซับซ้อนมาก ๆ พอเราอายุเท่านี้อาจจะมองไม่เห็นความซับซ้อนข้อมูลนะคะ แต่ถ้าไปทำงานจริง ๆ นี่ ถ้าคุณต้องดูแลระบบใหญ่ ๆ ก็ตามนี่ ข้อมูลมันก็จะเริ่มซับซ้อนขึ้น มีส่วนย่อย ๆ เกิดขึ้นมากมายนะคะ เพราะฉะนั้นถ้าเราจะเป็นคนที่ออกแบบข้อมูล เราจะต้องมองภาพโดยรวมทั้งหมดให้ได้นะคะ เหมือนที่อาจารย์ยกตัวอย่างตอนแรก ครั้งหน้า ๆ ถ้ามีให้วาดรูป อาจารย์ก็จะเริ่มถามแล้วว่าเคยไปห้องสมุดไหมนะคะ เคยยืมหนังสือหรือเปล่า การที่เราจะยืมหนังสือห้องสมุดได้ มันจะต้องเกี่ยวข้องกับอะไรบ้าง เช่น เราเป็นสมาชิกห้องสมุดไหม นะคะ แล้วเราไปห้องสมุด เราจะยืมหนังสือ มันจะต้องมีข้อมูลหนังสือที่เราจะยืมไหมนะคะ ชื่อหนังสืออะไรหนังสือมีรหัสหนังสือหรือเปล่า ยืมได้กี่วันะคะ ใครเป็นคนแต่งหนังสือเล่มนั้น นี่ การยืมหนังสือเล่มเดียว ข้อมูลที่เกิดขึ้นก็มีเยอะแล้ว ใครเป็นคนยืม ใครเป็นคนแต่ง ยืมได้กี่วัน หนังสือชื่ออะไร เลขหนังสืออะไร นักศึกษาคนไหนเป็นคนยืมนะคะ อันนี้ก็แค่ยืมหนังสือเฉย ๆ ในข้อสอบหรือในชีวิตจริง พวกคุณจะต้องเจออะไรที่เยอะกว่านี้อีกเยอะนะคะ กับอีกอันหนึ่งนะคะ เป็นแบบจำลองฐานข้อมูลแบบหลายมิตินะคะ ใครเคยเล่นรูบิก ลักษณะหลาย ๆ มิติจะเป็นแบบนั้นเลยนะคะ เป็นก้อน ๆ นะคะ เช่น การเก็บข้อมูล ส่วนมากจะเกี่ยวกับเชิงธุรกิจมากกว่านะคะ อาจจะเป็นเกี่ยวกับการเก็บข้อมูลผลิตภัณฑ์สินค้า อาจจะเป็นเกี่ยวกับขายที่ไหน วันที่เท่าไร มาประมวลผลเป็นตาราง เพราะว่ามันจะทับซ้อนกันไปอีกเยอะมาก ขายอะไร ขายที่ไหน ขายเมื่อไหร่ ในสินค้าชนิดเดียวนะคะ เหมือนข้อมูลเวลาเราซื้อของ วันหมดอายุเท่าไร ส่วนประกอบอะไร หลาย ๆ ข้อมูล ทุกอย่าง ข้อมูลทุกอย่างจะซ้อนกันเป็นมิติ เวลาเราดูขนมหนึ่งห่อ ส่วนประกอบคืออะไร นะคะ ผลิตที่ไหน ต้องบริโภควันที่เท่าไหร่ ใครเป็นคนผลิต ใครเป็นคนนำเจชซ้อนทับกันจะเป็นหลาย ๆ มิตินะคะ ลักษณะ คล้าย ๆ รูปทรงแบบนี้นะคะ แค่ของชิ้นเดียวเก็บข้อมูลเยอะมากนะคะ เป็นแบบนี้ จริง ๆ วันนี้ก็จะไม่มีอะไรมากเพราะว่าเป็นแค่แนะนำเพื่อปูทางในการวาดภาพ แผนภาพ ERของเราในบทต่อไปนะคะ วันนี้ก็มีการบ้านเหมือนกันค่ะ 10 ข้อ เหมือนเดิมทำใส่กระดาษรายงาน ส่งนะคะ เนื้อหาที่จะตอบก็อยู่ใน สไลด์อาจารย์หมดแล้วนะคะ ก็ไม่น่าจะมีปัญหาอะไรมีอะไรสงสัยไหมคะ เดี๋ยวจะได้ปล่อยทำงานไม่มีอย่างนั้นเดี๋ยวจะให้นั่งทำงานนะคะ ก็เนื้อหาประมาณนี้ค่ะ ล่ามวันนี้เนื้อหาไม่เยอะ โอเค ขอบคุณค่ะ