--- title: หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี วันที่ 22 พ.ย. 2565 ตู่,ปลา subtitle: date: วันศุกร์ที่ 21 เมษายน 2566 เวลา 08.30 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์เกวลี) วันนี้จะเป็นเนื้อหาบทที่ 2 สถาปัตยกรรมฐานข้อมูล แล้วก็ทฤษฎีเกี่ยวกับแบบจำลองข้อมูล ข้อมูลที่ใช้ปัจจุบันนี่บางคนก็ไม่รู้ว่าทำไมเราต้องเก็บเหมือนนักศึกษา 1 คน ทำไมต้องถามด้วยล่ะว่าเราชื่ออะไร นามสกุลอะไร เรียนจบที่ไหนมานะคะ เกรดเฉลี่ยตอนจบ ม. 6 หรือจบสายอาชีพได้เกรดเฉลี่ยเท่าไร เทอมที่แล้วเราเรียนไปกี่วิชานะคะ ได้คะแนนเท่าไร ได้เกรดเท่าไร ทำไมต้องเก็บแบบนี้นะคะ ทุกอย่างก็จะมีเหตุมีผล เพราะว่าข้อมูลทุกรูปแบบนี่ มันก็จะมีเนื้อหาความสำคัญ ของชุดข้อมูลนั้น ๆ อยู่นะคะ โดยที่เราจะเรียกสิ่งนั้น ๆ ว่าแนวคิดเกี่ยวกับการออกแบบฐานข้อมูล หรือสถาปัตยกรรมของฐานข้อมูลนะคะ มันก็จะเป็นข้อกำหนดแล้วก็ข้อตกลงรวมถึงขอบเขตหรืออาจจะเป็นกรอบความคิดนะคะ ในการบรรยายว่าฐานข้อมมูลนั้น ๆ ควรจะเป็นอย่างไรนะคะ โครงสร้าง ก็คือข้อมูลที่เราจะเก็บมีอะไรบ้าง ส่วนประกอบที่เอามาประกอบกันจนเป็นระบบฐานข้อมูล มีอะไรนะคะ โดยที่สถาปัตยกรรมฐานข้อมูลนี่ มันจะมีส่วนประกอยสำคัญ อยู่ 3 ส่วนนะคะ ก็คือในตัวสถาปัตยกรรมระบบเองนะคะ และก็ความเป็นอิสระของข้อมูลนะคะ เดี๋ยวจะอธิบายว่าแต่ละอันคืออะไร กับภาษาที่ใช้ในการจัดการฐานข้อมูล 3 อย่างนี้จะต้องทำงานร่วมกัน โดยสถาปัตยกรรมของฐานข้อมูลนี่ กับขอบเขตนะคะ หรือกรอบถ้าเป็นภาษาทางเชิงวิชาการเรียกว่า "กรอบ" ที่ใช้ที่ใช้ประโยชน์ในการบรรยายว่าทำไมเราถึงสร้างฐานข้อมูลแบบนี้ ทำไมเราเก็บข้อมูลแบบนี้ และในฐานข้อมูลนี่ เรามีโครงสร้างในการเก็บข้อมูลแบบไหนบ้างนะคะ ซึ่งหลัก ๆ แล้วนี่ โครงสร้างที่ใช้ในการสร้างฐานข้อมูลนี่ มันจะมีอยู่ 3 ระดับนะคะ มีระดับภายนอก ระดับภายใน แล้วก็ระดับแนวคิด เดี๋ยวจะอธิบายไปทีละอย่าง ทีละอย่างนะคะ ความเป็นอิสระของข้อมูลคืออะไรนะคะ ก็คือการที่ผู้ใช้งานสามารถเปลี่ยนแปลงข้อมูลอาจจะเป็นในระดับของการออกแบบฐานข้อมูลออกแบบฐานข้อมูล หรือระดับถึงขั้นการเก็บข้อมูลแล้วก็ได้ โดยที่ถ้าเราการเปลี่ยนแปลงข้อมูล หรือเปลี่ยนแปลงการจัดเก็บข้อมูล โปรแกรมที่ใช้งาน จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนะคะ โปรแกรมก็อยู่ส่วนของโปรแกรม ข้อมูลก็จะอยู่ของข้อมูลจะแยกออกจากกันนะคะ โดยที่ผู้ใช้งานนี่ จะมองเห็นแค่ว่าการเก็บข้อมูลระดับภายนอก ก็คือเราเก็บอะไรบ้าง นะคะ เหมือนเวลาคุณอยากเล่น TikTok อยากเล่น Facebook อยากเล่น Instargram เขาจะถามว่าคุณชื่ออะไร มีอีเมลหรือเปล่า มีเบอร์โทรศัพท์ไหม มีโปรไฟล์ อันนี้คือข้อมูลระดับภายนอกที่ผู้ใช้งานอย่างเรา ๆ นี่ เป็นคนให้ข้อมูลไป แล้วก็เป็นสิ่งที่เราเป็นคนเห็นเองว่าข้อมูลที่กรอกลงไปนี่มีข้อมูลอะไรบ้างนะคะ แต่ถามว่าถ้าเราอยากเปลี่ยนแปลงได้ไหม ว่านอกจากรูปภาพนี่ อยากให้เขาขอเกี่ยวกับอะไรดีล่ะสถานะการเรียน เราจะไปบอกเขาว่า อยากบอก อยากให้เพิ่มเมนูตรงนี้ได้ไหม เราทำไม่ได้นะคะ เพราะอันนั้นเป็นระดับโครงสร้าง เป็นระดับแนวคิด ระดับภายใน ซึ่งผู้ใช้งานธรรมดาจะแก้ไขไม่ได้นะคะ โดยที่ เพราะฉะนั้นนี่ สมมติเรามีการเปลี่ยนแปลงข้อมูล จะมีเรียกว่าเปลี่ยนแปลงข้อมูลในระดับที่ต่ำ ข้อมูลส่วนตัวเรานี่ล่ะนะคะ ถ้าเราเปลี่ยนแปลงเฉพาะข้อมูลเราตัวเองนี่ มันจะไม่กระทบกับคนอื่นรวมถึงไม่ได้กระทบกับ Facebook ไม่ได้กระทบกับ Instagram TikTok ก็ยังใช้งานปกติได้ ถึงแม้คุณจะบอกว่า จะเปลี่ยนแปลงรูปโปร์ไฟล์ ถามว่าโปรแกรมมันจะพังไหม ไม่นะคะ นี่คือการเปลี่ยนแปลงระดับต่ำ ก็คือเป็นการเปลี่ยนแปลงของผู้ใช้งานโดยตรงนะคะ ความเป็นอิสระข้อมูลเชิงตรรกะ ก็คือการเปลี่ยนแปลงมุมมองของผู้ใช้งาน อย่างเช่น คุณอยากจะวันนี้เราอัปรูปไป 4 รูปนะคะ คุณอยากจะสลับตำแหน่งนะคะ ย้ายจากรูปสุดท้ายมาเป็นรูปที่ 1 ถามว่าโปรแกรมนั้นจะพังไหม ไม่พังนะคะ เพราะมันถือว่าเป็นการเปลี่ยนแปลงภายนอก ไม่ได้เปลี่ยนแปล Code โปรแกรมไม่ได้บอกให้ผู้ดูแลระบบลบเมนูตรงนี้ออกไม่ใช่นะคะ อันนี้ก็คือถ้าผู้ใช้งานอยากเปลี่ยนแปลงข้อมูลของตัวอะไรอย่างนี้ เปลี่ยนแปลงได้เลยนะคะ ไม่กระทบกับคนอื่น ไม่กระทบกับระบบโดยรวมนะคะ รวมถึง ความเป็นอิสระของข้อมูลเชิงกายภาพนะคะ ถ้าสมมติว่าวันหนึ่ง Facebook ย้ายเครื่องคอมพิวเตอร์ในการเก็บข้อมูลคนใช้งาน ถามว่าย้ายจากเครื่องหนึ่งไปอีกเครื่องหนึ่ง ถามว่าเราใช้ Facebook ได้ไหม ได้มันไม่กระทบกับเรานะคะ มันถือว่าเป็นโครงสร้างของข้อมูลระดับภายใน ก็คือผู้ให้บริการเขาอาจจะมีการปรับเปลี่ยนย้ายจากเครื่อง A ไปยังเครื่อง B แต่ผู้ใช้งานก็ยังใช้งานได้ตามปกติ ไม่ได้รู้สึกถึงความผิดปกติใด ๆ อาจจะมีช่วงที่แบบ Restart เครื่อง ตัว Server ของเขาบ้าง อะไรอย่างนี้นะคะ แต่ถามว่า 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 ได้ไหม ได้ แต่ถามว่าเวลาเราค้นหาข้อมูล ถ้าเราเรียงตามลำดับ แน่นอนว่ามันหาข้อมูลได้เร็วกว่า เราก็มาตกลงกันเลยว่าเราจะเรียงลำดับนักศึกษาในห้องนี้อย่างไร อย่างเช่น ซึ่งมาตรฐานทั่วไปก็จะเรียงลำดับตามรหัสนักศึกษาจากน้อยไปมากใช่ไหมคะ แต่ถ้าเราไม่มีรหัสนักศึกษาล่ะ โดยหลักทั่วไปก็จะเรียงตาม ก ไก่ ถึง ฮ นกฮูก ใช่ไหมคะ แล้วแต่ว่เรียงอย่างไร หรือบางฐานข้อมูลก็จะบอกว่าเรียงตามอายุ อายุมากขึ้นก่อน หรืออะไรอีกล่ะ เพศชายขึ้นก่อน เพศหญิงตามมา คนเกิดวันอาทิตย์ขึ้นก่อน หรือคนเกิดวันจันทร์ขึ้นก่อน แล้วแต่โครงสร้างที่เรากำหนดไว้ ทำไมเพื่อให้มันหาข้อมูลได้เร็ว เพราะเรารู้แล้วว่าเกณฑ์ในการจัดเรียงข้อมูลมันคืออะไร เพราะว่าข้อมูลที่เก็บอยู่ใน Hard disk มันไม่เรียง 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 ระดับนะคะ ระับภายใน ระดับภายนอก สถาปัตยกรรมทั้ง 3 ระดับนะคะ แล้วก็แนวคิด แน่นอน มุมมองของผู้ใช้งานแต่ละคนสามารถทำงานได้โดยอิสระ แยกจากกันนะคะ อาจจะมีการนำข้อมูลหลาย ๆ ตารางมารวมกันนะคะ เพื่อให้สามารถครอบคลุมในการเรียกดูข้อมูลได้ อาจจะมองในคนละมุมกัน แต่ใช้ฐานข้อมูลเดียวกันได้ แล้วก็ผู้ใช้งานไม่จำเะป็นต้องรไม่จำเป็นต้องรู้ว่าข้อมูลที่ถูกเก็บไว้นี่อยู่ตำแหน่งไหนของ Harddisk ไม่จำเป็นต้องรู้ รู้แค่ว่าถ้าอยากเรียกข้อมูลขึ้นมาดูต้องดูได้นะคะ โดยที่แอดมินนี่ จะเแ็นดูเองว่าที่ถูกเก็บไว้นี่ จะต้องจัดเก็บไว้ตรงไหน แล้วก็เป็นคนที่ดึงข้อมูลนั้น ๆ เข้ามา ให้ผู้ใช้งานสามารถใช้งานได้นะคะ ประโยชน์ข้อต่อมา ก็คืออิสระที่มีการเปลี่ยนแปลงข้อมูล หรือมีการเปลี่ยนแปลงโปรแกรม ทุกอย่างต้องไม่ได้รับผลกระทบนะคะ งานต้องยังสามารถเก็บได้หรือโปรแกรมก็ยังทำงานได้ ถ้ามีการเปลี่ยนแปลงของข้อมูลนะคะ ไม่ใช่ว่ามีคนหนึ่งเปลี่ยนนามสกุล ฐานข้อมูลทั้งมหาวิทยาลัยผิดพลาดหมดเลย อันนี้ ไม่ได้นะคะ หรือบางคนเพิ่มที่อยู่ กลายเป็นว่าที่อยู่เหมือนกันทั้งมหาวิทยาลัยก็ไม่ได้นะคะ ข้อมูลต้องไม่ หรือว่าวันนี้อาจารย์บอกว่าฐานข้อมูลอาจารย์ อยากใช้ Microsoft accessวันดีคืนดีบางคนอยากบอกว่าเปลี่ยนไปใช้โปรแกรมอื่นได้ไหม ต้องเปลี่ยนได้นะคะ ไม่ใช่ว่าใช้โปรแกรมเดียวไปตลอด ไม่ได้ถ้าสมมติมีโปรแกรมที่ดีกว่า แล้วเราอยากเปลี่ยนเราต้องเปลี่ยนได้โดยที่ข้อมูลเราไม่หายนะคะ อันนี้คือความอิสระของข้อมูลอันนี้พูดไปแล้วนะคะ อันนี้พูดไปแล้วนะ เดี๋ยวนะ Mapping อันนี้พูดไปแล้ว ต่อมา แบบจำลองข้อมูลนะคะ แบบจำลองข้อมูลนี่ มันก็จะเป็นแบบจำลองที่อธิบาย แล้วก็การจัดการข้อมูลที่จะเกิดขึ้นในฐานข้อมูล ความสัมพันธ์ระหว่างข้อมูลแต่ละตารางจะเกิดขึ้นอย่างไรบ้าง ข้อบังคับของข้อมูลในระบบที่จะมีการเพิ่ม ลบ การเปลี่ยนแปลงข้อมูลใด ๆ จะต้องมีกฎเกณฑ์ใดบ้างนะคะ ทั้งนี้ ก็เพื่อใช้สำหรับการเป็นข้อตกลง แล้วก็สื่อสารระหว่างคนออกแบบฐานข้อมูล กับคนที่ใช้งานฐานข้อมูล ให้มีความเข้าใจตรงกันนะคะ ว่าถ้าเรามีระบบนี้คุณจะสามารถทำอะไรได้บ้าง ทำอะไรไม่ได้ เรียกข้อมูลลบแบบไหนแก้ไขข้อมูลอย่างไร ทำอย่างไรถึงจะบันทึกข้อมูลได้ถ้าอยากลบรหัสนักศึกษาออกได้ไหม เป็นนักศึกษาแต่ไม่มีรหัสนักศึกษาได้ไหม ไม่ได้ ก็ต้องเข้าใจตรงกันนะคะ อันแรกนะคะ แบบจำลองข้อมูลนี่ จะมี 2 ประเภท ประเภทแรก ก็คือเป็นแบบจำลองที่ใช้การบรรยายนะคะ บรรยายโดยรวมทั้งหมดของระบบ ว่ามีอะไรบ้างนะคะ ซึ่งจะนำเสนอในลักษณะของการวาดภาพโดยที่ในฐานข้อมูล 1 ฐานข้อมูลนี่ จะหมายถึงการเก็บตารางกี่ตารางนะคะ ก็คือ Entity นี่ล่ะนะคะ กับแต่ละตารางมีความสัมพันธ์อะไรบ้าง เราจะต้องวาดรูปโยงเส้น ขีดเส้นใต้ตีกรอบ เดี๋ยวอันนี้จะเป็นในครั้งถัด ๆ ไป จะเป็นการวาดรูป เดี๋ยวถ้าวันไหนจะวาดรูป อาจารย์จะให้ถือกระดาษ A4 มาด้วยนะคะ ถ้าใครเคยเรียนสมัยมัธยม ได้วาด Mind map วาดแผนภาพการวาดในฐานข้อมูลก็จะไม่ต่างกันค่ะ แต่ว่าสัญลักษณ์แต่ละสัญลักษณ์ในการวาดรูปของเรามันมีความหมายนะคะ ไม่ใช่อยากวาด อยากใส่วงรี อยากใส่สี่เหลี่ยม อยากใส่สามเหลี่ยมนึกอยากใส่อะไรก็ใส่ ไม่ได้ มันจะมีกฎอยู่ โดยการวาดแบบนี้นี่ หรือการจำลองแบบนี้นี่ จะนำเสนอเพื่อให้เกิดความเข้าใจตรงกัน ระหว่างคนออกแบบกับคนใช้งาน ให้เห็นภาพคร่าว ๆ ว่าระบบที่เรากำลังจะทำขึ้นมานี่ มันทำงานอย่างไรนะคะ เก็บข้อมูลแบบไหนใช้ข้อมูลอะไรได้บ้างนะคะ ต่อมาจะเป็นแบบจำลองที่ใช้เพื่ออธิบายโครงสร้างของฐานข้อมูลนะคะ คุณสมบัติของแบบจำลองข้อมูลที่ดีจะต้องเป็นรูป หรือจะต้องเป็นแบบจำลองที่เอามาวาง แล้วถึงแม้ว่าเขาจะไม่มีความรู้ทางด้านคอมพิวเตอร์เลย เขาก็จะเข้าใจนะคะ มีสาระสำคัญ ไม่มีการซ้ำซ้อนกันนะคะ ซึ่งในที่นี้ก็คือในแต่ละตารางมันไม่ควรจะมีการเก็บข้อมูลที่ซ้ำซ้อนกัน อย่างเช่น ตารางนี้เก็บข้อมูลนักศึกษาไปแล้วก็ยังจะเก็บอีก อันนี้ไม่ทำนะคะ จะต้องไม่ซ้ำซ้อนกันในแต่ละตาราง แล้วก็มีความยืดหยุ่นง่าย ในการแก้ไขในอนาคตนะคะ และแบบจำลองของวข้อมูล ไใม่ควรจะตายตัวเลยว่าโปรแกรมที่เรา... หรือฐานข้อมูลที่เรากำลังจะออกแบบต้องใช้โปรแกรมนี้เท่านั้นเราจะไม่ทำแบบนี้นะคะ จะต้องเป็นฐานข้อมูลที่สามารถทำร่วมกับโปรแกรมใดก็ได้นะคะ เพราะมันจะ... ไม่อย่างนั้นมันจะขัดกับกฎความเป็นอิสระของข้อมูล ของข้อมูล ก็คือถ้าสมมติเปลี่ยนโปรแกรมแล้วข้อมูลแล้วระบบมันพัง อย่างนี้ไม่ได้นะคะ โดยแบบจำลองนี่ก็จะมีหลายรูปแบบ แบบแรกเป็นเชิง Record จะเป็นการเก็บเป็นแถว เป็นแถว ไปเรื่อย ๆ นะคะ แต่ละแถวก็หรืออาจจะเรียกว่า "รายการข้อมูล" แต่ละแถวจะต้องไม่ซ้ำกัน จะต้องต่างกันนะคะ ก็จะมีอยู่ 3 แบบ แบบจากบนลงล่าง แบบเครือข่าย และก็แบบมีความสัมพันธ์นะคะ กับแบบจำลองเชิงวัตถุนะคะ จะมองทุกอย่างให้เหมือนเป็นวัตถุ ตารางก็เป็นวัตถุชนิดหนึ่ง นักศึกษาก็เป็นวัตถุชนิดหนึ่ง นักศึกษา 1 คน จะมีวัตถุในตนเอง เก็บอะไรบ้าง นะคะ เช่น วัตถุที่ชื่อว่ารหัสนักศึกษา วัตถุที่ชื่อว่าชื่อนามสกุล วัตถุที่มันหมายถึงเบอร์โทรศัพท์นะคะ ซึ่งเวลาเราวาด หรือโครงสร้างฐานเข้อมูลเราจะใช้แบบจำลองเชิงวัตถุนะคะ ก็คือตัวแรกเลยสิ่งที่เราจะวาดเรียกว่า ER diagram นะคะ ER Diagram นะ ทุกคนต้องวาดได้ เข้าใจสัญลักษณ์แต่ละอันว่ามันมีความสำคัญอย่างไรนะคะ ระดับปริญญาตรีนี่ วาด ER diagram ก็ถือว่าเก่งมากแล้วนะคะ แบบจำลองข้อมูลจะมีส่วนประกอบอยู่ 3 ส่วนนะคะ ส่วนของโครงสร้าง ก็จะเป็นส่วนประกอบที่เก็บสัญลักษณ์รวมทั้งกฎระเบียบที่ทุกคนจะต้องตกลงร่วมกันเพื่อใช้ในการสร้างฐานข้อมูลนะคะ มาตรฐานเลย ก็คือข้อมูลทุกอย่างที่จะเก็บ จะอยู่ในรูปแบบของตาราง ของแถวกับคอลัมน์ อันนี้น่าจะเคยใช้งาน Excel มาแล้ว รวมถึงน่าจะรู้ว่าตารางคืออะไร นะคะ ตารงก็จะเป็นแบบนี้เหมือนเวลาเราใส่ข้อมูลทั่ว ๆ ไปนะคะ เป็นตีเส้น ตีกรอบ อันนี้คือตารางนะคะ มีแถวกับคอลัมน์ ส่วนของการปรับปรุงก็จะเป็นส่วนที่กำหนดชนิดของการทำงานต่าง ๆ ตั้งแต่การปรับปรุงข้อหรือการเรียกดูข้อมูลในฐานข้อมูล การเปลี่ยนแปลงโครงสร้างในฐานข้อมูล เช่น เราอาจจะเพิ่มในส่วนของ Socail me ชื่อ Facebook คุณชื่ออะไร แต่จะต้องไม่กระทบกับฐานข้อมูลหลัก ซึ่งนิยมใช้ชุดคำสั่งของภาษา SQL อันนี้เราก็จะเรียนเหมือนกันนะคะ ภาษา SQL ในการจัดการกับข้อมูล รวมถึงกฎของความคงสภาพ เพื่อใช้สำหรับควบคุมคุณภาพของข้อมูลและเพื่อถูกต้อง เช่น รหัสนักศึกษาจะต้องเป็นตัวเลขเท่านั้นเป็นตัวหนังสือไม่ได้นะคะ ความแน่นอนของข้อมูลที่ถูกต้อง ที่บันทึกลงในฐานข้อมูลนะคะ เวลาเราเรียกดูข้อมูล ปุ๊บ เราจะได้แน่ใจ ว่าข้อมูลเราจะได้มา ตรงกับความจริงที่เกิดขึ้นนะคะ