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