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