(อาจารย์เกวลี) วันนี้จะเป็นเนื้อหาบทที่ 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
ในการจัดการกับข้อมูล รวมถึงกฎของ
ความคงสภาพ เพื่อใช้สำหรับควบคุมคุณภาพ
ของข้อมูลและเพื่อ
ถูกต้อง เช่น รหัสนักศึกษาจะต้องเป็นตัวเลขเท่านั้น
เป็นตัวหนังสือไม่ได้นะคะ ความแน่นอนของ
ข้อมูลที่ถูกต้อง ที่บันทึกลงในฐานข้อมูล
นะคะ เวลาเราเรียกดูข้อมูล ปุ๊บ เราจะได้แน่ใจ ว่าข้อมูลเราจะ
ได้มา ตรงกับความจริงที่เกิดขึ้นนะคะ