(อาจารย์เกวลี) วันนี้จะเป็นเนื้อหาบทที่ 2
เกี่ยวข้องกับสถาปัตยกรรมฐานข้อมูล แล้วก็
ทฤษฎีเกี่ยวกับแบบจำลองข้อมูล ข้อมูลที่
ใช้ปัจจุบันนี่ บางคนก็ไม่รู้ว่าทำไมเราต้อง
เก็บ เหมือนนักศึกษา 1 คนทำไมต้องถามด้วยล่ะ
ว่าเราชื่ออะไร นามสกุลอะไร เรียนจบที่ไหนมา
นะคะ เกรดเฉลี่ยตอนจบ ม. 6 หรือ
จบสายอาชีพ ได้เกรดเฉลี่ยเท่าไร เทอมที่แล้ว
เราเรียนไปกี่วิชานะคะ ได้คะแนนเท่าไร
ได้เกรดเท่าไร ทำไมต้องเก็บแบบนี้
ทุกอย่างก็จะมีเหตุมีผล เพราะว่าข้อมูลทุกรูปแบบนี่มันก็จะมี
เนื้อหาความสำคัญ
ของชุดข้อมูลนั้น ๆ อยู่นะคะ
โดยที่เราจะเรียกสิ่งนั้น ๆ ว่า "แนวคิด
เกี่ยวกับการออกแบบฐานข้อมูล" หรือว่า "สถาปัตยกรรมฐานข้อมูล
" นะคะ มันก็จะเป็นข้อกำหนดแล้วก็
ข้อตกลง รวมถึงขอบเขตหรืออาจจะเป็นกรอบ
ความคิดนะคะ ในการบรรยายว่า
ฐานข้อมูลนั้นควรจะเป็นอย่างไรนะคะ โครงสร้าง ก็คือข้อมูลที่เรา
จะเก็บมีอะไรบ้าง ส่วนประกอบที่เอามาประกอบกันไป
จนเป็นระบบฐานข้อมูลมีอะไรนะคะ
โดยที่สถาปัตยกรรมฐานข้อมูลนี่
มันจะมีส่วนประกอบสำคัญอยู่ 3 ส่วนนะคะ ก็คือในตัวสถาปัตยกรรมระบบเอง
นะคะ และก็ความเป็นอิสระของข้อมูล
นะคะ เดี๋ยวจะอธิบายว่าแต่ละอันคืออะไร
กับภาษาที่ใช้ในการจัดการ
ฐานข้อมูลนะคะ 3 อย่างนี้จะต้องทำงานร่วมกัน
สถานปัตยกรรมของฐานข้อมูลนี่
กับขอบเขตนะคะ หรือกรอบ ถ้าเป็น
ภาษาทางวิชาการเรียกว่า "กรอบ
" ที่ใช้ประโยชน์เชิงวิชาการเขาเรียกว่า "กรอบ" ที่ใช้ประโยชน์ในการบรรยายว่า
ทำไมเราถึงสร้างฐานข้อมูลแบบนี้ ทำไมเรา
เก็บข้อมูลแบบนี้ และในฐานข้อมูลนี่เรามีโครงสร้าง
เก็บข้อมูลแบบไหนบ้างนะคะ ซึ่งหลัก ๆ แล้วนี่
โครงสร้างที่ใช้ในการสร้างฐานข้อมูลนี่ มันจะมีอยู่ 3 ระดับ
นะคะ มีระดับภายนอก ระดับภายใน แล้วก็ระดับแนวคิด
เดี๋ยวจะอธิบายไปทีละอย่าง ทีละอย่างนะคะ
ความเป็นอิสระของข้อมูลคืออะไร
นะคะ ก็คือการที่ผู้ใช้งานสามารถ
เปลี่ยนแปลงข้อมูล อาจจะเป็นในระดับของการ
ออกแบบฐานข้อมูล หรือระดับถึงขั้นการ
เก็บข้อมูลแล้วก็ได้ โดยที่ถ้าเราเก็บข้อมูล
หรือเปลี่ยนแปลง หรือเปลี่ยนแปลงรูปแบบการจัดเก็บข้อมูล โปรแกรม
ที่ใช้งานจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลง
นะคะ โปรแกรมก็อยู่ส่วนของโปรแกรม ข้อมูลก็จะอยู่ส่วนของข้อมูล
จะแยกออกจากกันนะคะ โดยที่
ผู้ใช้งานนี่จะมองเห็นแค่ว่า
การเก็บข้อมูลระดับภายนอก ก็คือเราเก็บอะไรบ้าง
นะคะ เหมือนเวลาคุณอยากเล่น TikTok
อยากเล่น Facbook อยากเล่น
Instargram
เขาก็จะถามว่าคุณชื่ออะไร มีเบอร์โทรศัพท์ไหม มีโปรไฟล์
อันนี้คือข้อมูลระดับ
ภายนอกที่ผู้ใช้งานอย่างเรา ๆ นี่
เป็นคนให้ข้อมูลไป แล้วก็เป็นสิ่งที่เราเป็นคนเห็นเองว่าข้อมูล
ที่กรอกลงไปนี่มีอะไรบ้างนะคะ แต่ถามว่าถ้า
เราอยากเปลี่ยนแปลงได้ไหม ว่านอกจากรูปภาพนี่
อยากให้เขาขอเกี่ยวกับอะไรดีล่ะ
สถานะการเรียน เราจะไปบอกเขาว่า
อยากบอก อยากให้เพิ่มเมนูตรงนี้ได้ไหม เราทำไม่ได้
นะคะ เพราะอันนั้นเป็นระดับโครงสร้าง ระดับแนวคิด ระดับ
ภายใน ซึ่งผู้ใช้งานธรรมดาจะแก้ไขไม่ได้
นะคะ โดยที่เพราะฉะนั้นนี่
สมมติเรามีการเปลี่ยนแปลงข้อมูล เราจะเรียกว่ามีการเปลี่ยนแปลง
ข้อมูลส่วนตัวเรานี่ล่ะนะคะ ถ้าเราเปลี่ยนแปลงเฉพาะ
ข้อมูลเราตัวเองนี่ มันจะไม่กระทบกับคนอื่น
รวมถึงไม่ได้กระทบกับ Facebook ไม่ได้กระทบกับ Instagram
TikTok เขาก็ยังใช้งานปกติได้ ถึงแม้คุณจะบอกว่าจะ
เปลี่ยนแปลงรูปโปร์ไฟล์ ถามว่าโปรแกรมมันจะพังไหม
ไม่นะคะ อันนี้คือการเปลี่ยนแปลง
ระดับต่ำ ก็คือเป็นการเปลี่ยนแปลงของผู้ใช้งานโดยตรงนะคะ
ความเป็นอิสระของข้อมูลเชิง
ตรรกะ ก็คือการเปลี่ยนแปลงมุมมอง
ของผู้ใช้งาน อย่างเช่น คุณอยาก
จะ วันนี้เราอัปรูปไป 4 รูปนะคะ
คุณอยากจะสลับตำแหน่งนะคะ
ย้ายจากรูปสุดท้ายมารูปที่ 1 ถามว่า
โปรแกรมนั้นจะพังไหม ไม่พังนะคะ เพราะมันถือว่า
เป็นการเปลี่ยนแปลงภายนอก ไม่ได้เปลี่ยนแปลงโค้ดโปรแกรม
ไม่ได้บอกให้
ผู้ดูแลระบบลบเมนูตรงนี้ออก
ไม่ใช่นะคะ อันนี้ก็คือ
ถ้าผู้ใช้งานอยากเปลี่ยนแปลงข้อมูลส่วนตัวของตัวเองอย่างนี้ เปลี่ยนแปลงได้เลย
นะคะ ไม่กระทบกับคนอื่น ไม่กระทบกับระบบโดยรวม
นะคะ รวมถึงความเป็นอิสระของข้อมูล
เชิงกายภาพนะคะ ถ้าสมมติว่าวันหนึ่ง
Facebook ย้ายเครื่องคอมพิวเตอร์ในการ
เก็บข้อมูล คนใช้งานถามว่า
ย้ายจากเครื่องหนึ่งไปอีกเครื่องหนึ่ง ถามว่าเราใช้ Facebook ได้ไหม ได้
มันไม่กระทบกับเรานะคะ มันถือว่าเป็น
โครงสร้างของข้อมูลระดับภายใน ส่วนของ
บริการเขาอาจจะมีการปรับเปลี่ยนย้ายจากเครื่อง A
ไปเครื่อง B แต่ผู้ใช้งานก็ยังส
ามารถทำงานได้ตามปกติ ไม่ได้รู้สึกถึงความผิดปกติใด ๆ
อาจจะมีช่วงที่แบบช่วงที่ Restart เครื่อง
อะไรอย่างนี้นะคะ แต่ถามว่า Facebook เราหายไปไหม ไม่หายนะคะ
อันนี้คือตัวอย่างคร่าว ๆ
เชิงตรรกะเป็นอย่างไร เชิงกายภาพเป็นอย่างไร
ต่อมาภาษาหลักของระบบ
จัดการฐานข้อมูลนะคะ ก็จะมีอยู่ 3 ภาษาหลัก ๆ
นะคะ อันนี้หมายถึงว่าภาษา
เชิงโครงสร้างที่ใช้นะคะ ไม่ได้หมายถึงชื่อภาษาทางโปรแกรม
อันแรก คือ ภาษาสำหรับนิยามข้อมูล
นะคะ ก็จะเป็นภาษาที่ใช้ในการกำหนดโครงสร้าง
ของฐานข้อมูลนะคะ ว่า
ระดับแนวคิด ก็คือคุณวางแผนไว้ว่าอย่างไร อย่างเช่น
อาจารย์อาจจะพอคุณเรียนปีสูง ๆ ขึ้น จะ
ได้ทำ Project อาจจะทำโปรแกรมเป็นของตัวเอง สมมติ
ว่าได้ทำโปรเจกต์เกี่ยวกับร้าน
ในร้านหนัง ในร้านหนังสือร้านหนึ่งเราต้องเก็บข้อมูลอะไรบ้าง เราต้องเขียนออกมาให้ได้
นะคะ สิ่งนี้เราจะเรียกว่าระดับแนวคิด
เราจะมาให้ความหมายว่าในฐานข้อมูลเรา
นี่ ระหว่างผู้ใช้งาน สมาชิก
เจ้าของร้าน สามารถทำอะไรได้บ้าง สิ่งเหล่านี้จะ
เรียกว่า "View" หรือจะเรียกว่ามุมมองของแต่ละคน
เอาง่าย ๆ ยกตัวอย่างอีกแล้ว Facebook Facebook หน้าที่คุณ
ดูกับหน้าที่เพื่อนดูอาจจะไม่เหมือนกัน
ใน Facebook สามารถกำหนดว่ารูปนี้ฉันจะเก็บไว้ดู
คนเดียว หรือรูปนี้จะเพื่อนดูได้
รูปนี้จะให้ใครก็ได้มาดู
ไม่ได้ปิดกั้น อย่างนี้ก็มี อันนี้คือ
การกำหนดสถานะมุมมองของการดูข้อมูลของเรา
เราจะกำหนดตั้งแต่การกำหนดโครงสร้างของฐานข้อมูล
เลยว่าผู้ใช้งานแต่ละคนดูข้อมูลส่วนไหน
ได้บ้างนะคะ ต่อมาเป็นภาษาในการจัดการข้อมูล
อันนี้จะเป็นภาษาเชิง Programing
ซึ่งไว้สำหรับจัดการข้อมูลในฐานข้อมูล
ก็จะเป็นตั้งแต่การค้นหาข้อมูล การเพิ่ม
การลบ การแก้ไขในฐานข้อมูล
นะคะ อันนี้ก็จะสามารถทำได้ตามสิทธิ์
ของผู้ใช้งานแต่ละคน บางคนค้นหา
ได้ แต่เพิ่มไม่ได้ บางคนเพิ่ม
ได้ แต่ห้ามลบนะคะ อันนี้ก็เป็น
คำสั่งที่ใช้ภายในฐานข้อมูล ต่อมา
เป็นภาษาควบคุมนะคะ มันจะเป็นภาษา
ที่เอาไว้สำหรับควบคุมความถูกต้องของข้อมูล
เช่นอะไรบ้าง อย่างเช่น อาจารย์ให้กรอกช
ื่อนะคะ กรอกชื่อ แต่ว่านักศึกษา
บางคนลืมเปลี่ยนภาษา หรือลืมเปลี่ยนปุ่ม
หรือเปิดปุ่มตัวเลขไว้
นะคะ กลายเป็นว่าพิมพ์ชื่อตัวเองเป็นตัวเลข
ภาษาระดับควบคุม ก็คือมันจะเป็นการตรวจสอบว่าข้อมูลที่นักศึกษาใส่
มาถูกหรือผิด เช่น อาจารย์กำหนดให้
กรอกได้เฉพาะตัวหนังสือเท่านั้น ใส่ตัวเลขไม่ได้
นะคะ หรือการเกิดภาวะพร้อมกัน อย่างเช่น
จองตั๋วคอนเสิร์ต
ดังมาก เข้ามาจองพร้อมกันสัก 50,000 คน
เราจะมีการจัดการคน 50,000 คน
อย่างไรนะคะ ให้สามาร
ถทำงานได้ อันนี้คือการเกิดภาวะพร้อมกัน คือ เข้ามาใช้งานพร้อม ๆ กัน
ทั้งหมดนะคะ
โดยสถาปัตยกรรมฐานข้อมูลนี่
มันก็จะมีการศึกษาทั้งโครงสร้างองค์ประกอบหลักนะคะ
ทั้งฐานข้อมูล หน้าที่แต่ละองค์ประกอบ แต่ละคน แต่ละผู้ใช้งาน
นะคะ รวมถึงการเขียนโปรแกรมเพื่อ
สื่อสาร แล้วก็ติดต่อกับส่วนอื่น ๆ นะคะ
ในระบบฐานข้อมูลอาจจะไมได้มีแค่โปรแกรมเดียวที่ทำงานนะคะ
อาทิตย์ที่แล้วเคยบอกว่าระบบบัญชี ระบบบุคคล
ระบบการเงิน ก็ใช้ฐานข้อมูลร่วมกันนะคะ
โดยที่ถ้าสมมติว่าเรามีการเปลี่ยนแปลงโปรแกรม
นะคะ โครงสร้างของฐานข้อมูลจะยังอยู่นะคะ
ข้อมูลจะไม่หายไปไหน เพราะเราเปลี่ยนแค่ตัวโปรแกรม
เราไม่เปลี่ยนทั้งโครงสร้าง ถ้าเปลี่ยนโปรแกรมใหม่
มันก็จะมีการเชื่อมต่อที่ทำให้ข้อมูลมันสามารถทำงาน
ได้นะคะ
โดยระบบฐานข
้อมูลนี่มันจะเป็นการเอาข้อมูลที่มีอยู่ในองค์กร หรือข้อมูลเพิ่มเติม
นะคะ ที่มีความเกี่ยวข้องกันมารวมไว้ที่เดียวกันนะคะ
โดยผู้ใช้งานในฐานข้อมูลนี่ จะมอง
มุมมอง หรือ View ที่แตกต่างกันไปตามสิทธิ์ของการใช้งาน
นะคะ โดยที่
ผู้ใช้งานนี่ ไม่จำเป็นต้องรู้ว่า ถ้าคุณเป็นผู้ใช้งาน
ทั่วไป เขาจำเป็นจะต้องรู้ไหมว่าโปรแกรมเมอร์
เขียนโปรแกรมอย่างไร โปรแกรมเมอร์ใช้วิธีอะไรในการแสดงภาพ
โปรแกรมเมอร์ทำอย่างไรให้เราดู YouTube ได้
อันนี้ไม่จำเป็นต้องรู้นะคะ
โดยที่สิ่งเหล่านี้มันซ่อนรายละเอียดไว้ได้
แต่ว่าให้แสดงออกมาได้ไหม แสดงได้ แต่ User
หรือผู้ใช้งานไม่จำเป็นต้องรู้ เพราะฉะนั้น เราซ่อนมันไว้ได
้นะคะ ยกเว้นบางอย่างนี่ ที่เป็นภาษาโปรแกรม
นี่ เหมือนเวลาเราใช้ Google
Chrome เราก็สามารถดูได้ว่าโค้ดโปรแกรมที่
ผู้ดูแลระบบเขียนไว้นี่ เขาเขียนไว้ว่าอย่างไรบ้าง ดู
ได้นะคะ แต่ถามว่าพ่อแม่เราจะอยากรู้ไหมว่า Google เขียนโปรแกรมอย่างไร
ก็คงไม่นะคะ ไม่จำเป็นต้องเปิดดู
แต่ถามว่าเปิดดูได้ไหม บางส่วนก็เปิดดูได้
นะคะ
โดยสถาปัตยกรรมฐานข้อมูลนี่มีอยู่ 3 ระดับ
นะคะ เหมือนที่พูดไปตอนต้น ก็คือมี
ระดับภายนอก ระดับแนวคิด และระดับภายใน มี 3 ระดับ โดยแสดง
เป็นแผนภาพแบบนี้นะคะ
เดี๋ยวขีดเส้นให้ อันนี้ระดับ
ภายนอกนะคะ เดี๋ยวเติมเส้นแบบนี้
ระดับภายนอก ก็คือเราอาจจะมีผู้ใช้งาน 1 คน
2 คน หรือหลายคน แต่ละคนอาจ
ใช้ระบบเดียวกัน แต่หน้าจอที่ดู
อยู่ ไม่เหมือนกันก็ได้นะคะ อย่างเช่น นักศึกษา
เข้าไปใช้ระบบทะเบียน
คนหนึ่งดูเกรด คนที่ 2 พิมพ์
ใบลงทะเบียน คนที่ 3
อาจจะค้นหาคำอธิบายรายวิชา ถามว่าเขาใช้โปรแกรมเดียวกันไหม ระบบ
เดียวกันไหม ใช่ ระบบเดียวกัน แต่เขาอาจจะทำงาน
ไม่เหมือนกันก็ได้นะคะ คุณอยากดูตรงไหนก็ได้
จะดูเหมือนกันก็ได้ แต่จะต้องเป็นข้อมูลของตัวเอง
อย่างเช่น เกรด คุณจะดูของเพื่อนไม่ได้ เพราะ
แต่ละคนมีสิทธิ์ของตัวเองเท่านั้นนะคะ จะไปละเมิด
ความเป็นส่วนตัวของคนอื่นไม่ได้นะคะ
อันนี้ก็มันจะมีกฎหมายอยู่
เวลาเราจะดูข้อมูลใคร หรือโพสต์รูปใคร
หรือพิมพ์ถึงใคร มีกฎหมายกำหนดนะ
คะ ต่อมาเป็นในระดับแนวคิด
ก็จะดูแล้วว่าโครงสร้างฐานข้อมูลที่เราออกแบบ
ไว้ สำหรับการทำงาน มันจะเป็นเหมือน
ตัวที่ไว้จัดการว่า User หรือผู้ใช้งานแต่ละคนนี่
เรียกข้อมูลอะไรเข้าไปดู เป็นการจัดการ
หลังจากนั้นก็จะทำหน้าที่เชื่อมต่อกับระบบภายใน
เพื่อดึงข้อมูลจากฐานข้อมูลไปแสดงผล
การทำงานจะมีส่วนหลัก ๆ 3 ส่วนแบบนี้ ที่เราใช้งานกัน
แต่ถามว่า User จำเป็นต้องรู้แนวคิดเกี่ยวกับ
ระดับภายในไหม ไม่จำเป็นนะคะ
เขาก็จะดูแต่เฉพาะข้อมูลที่ตนเองสนใจในภายนอก
นะคะ เหตุผลที่ว่า
ทำไมเราต้องแยกออกเป็น 3 ระดับ แยกออกจากกัน ทำไมเราไม่รวม
กันไว้นะคะ อันแรกก็คือผู้ใช้งานแต่ละคน
นี่ก็อาจจะเข้าถึงข้อมูลเดียวกันได้ แต่
อาจจะเรียกดูผลไม่เหมือนกัน เหมือนบางคน
อย่างที่บอกค่ะ เข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรด
คนหนึ่งดูลงทะเบียน คนหนึ่งค้นหารายวิชา
หน้าตาแตกต่างกัน แต่ก็ใช้ฐานข้อมูล
เดียวกันนะคะ ผู้ใช้งานจะไม่สามารถ
เข้าถึงข้อมูลโดยตรงได้ ก็คือคุณจะไม่สามารถ
พิมพ์หรือเรียกใช้
ข้อมูลในฐานข้อมูลได้โดยตรง จะต้องผ่านระบ
บจัดการฐานข้อมูลเท่านั้นนะคะ Admin นะคะ
ในฐานข้อมูล ก็คือผู้บริหารฐานข้อมูล หรือว่า Database Admin
ตัวย่อก็คือ DBA
สามารถแก้ไขโครงสร้างของฐานข้อมูลได้
เข้าไปดูข้อมูลที่เก็บไว้ได้นะคะ แต่จะต้อง
ไม่สร้างผลกระทบให้กับผู้ใช้งาน ก็คือคุณ
อาจจะปรับปรุงเปลี่ยนแปลงฐานข้อมูลอยู่
ผู้ใช้งานก็ยังต้องใช้งานได้ปกติ
โครงสร้างระดับภายในฐานข้อมูลนะคะ
จะไม่ได้รับผลกระทบถ้าคุณมีการเปลี่ยนโปรแกรม
ซึ่งจะอยู่ในลักษณะของเชิงกายภาพนะคะ ซึ่ง
ถ้าเปลี่ยนโปรแกรมปุ๊บ เปลี่ยนจากกโปรแกรม A ไป B
ข้อมูลจะต้องไม่หายไปไหน อันนี้คือเหตุผลที่
3 ส่วนนี้ เราจำเป็นจะต้องแยกออกจากกันนะคะ
มาดูรายละเอียด
เพิ่มเติมสำหรับระดับภายใน ก็จะเป็นระดับที่
จัดเก็บข้อมูล อยู่ในโครงสร้างที่เราออกแบบไว้แล้ว
นะคะ ถ้าเราเก็บข้อมูลได้ดี มันก็จะ
มีผลต่อความเร็ว แล้วก็ประสิทธิภาพในการเรียกใช้ข้อ
มูลนะคะ ในระดับภายในนี่มันก็จะเป็นการ
ดูว่า เรามีการสำรองข้อมูลหรือเปล่า
เราเก็บข้อมูลอย่างไรนะคะ
ส่วนมากข้อมูลในฐานข้อมูลนี่
อาจจะเก็บข้อมูลอยู่ในฮาร์ดดิสก์ก็ได้
นะคะ มีการทำงานร่วมกับระบบปฏิบัติการ สามารถอ่านเขียนข้อมูล
ได้ร่วมกับระบบปฏิบัติการด้วย ทำไมถึงบอกว่า
การจัดเก็บข้อมูลที่ดี มีผลต่อความเร็ว
แล้วก็ประสิทธิภาพในการเข้าถึงข้อมูลนะคะ
เวลาเราเก็บข้อมูลนี่ จะเห็นได้ว่าทำไม
เราต้องเรียงลำดับตามรหัสนักศึกษาด้วย
เอา 207 ขึ้นก่อน
201 ได้ไหม ได้ แต่ถามว่าเวลาเราค้นหา
ข้อมูล ถ้าเราเรียงตามลำดับ แน่นอนว่ามันหาข้อมูลได้เร็วกว่า
เราก็มาตกลงกันเลยว่าเราจะเรียงลำดับนักศึกษา
ในห้องนี้อย่างไร อย่างเช่น
ซึ่งมาตรฐานทั่วไปก็จะเรียงลำดับตามรหัสนักศึกษาจากน้อยไปมาก
ใช่ไหมคะ แต่ถ้าเราไม่มีรหัสนักศึกษาล่ะ
โดยหลักทั่วไปก็จะเรียงตาม ก ไก่ ถึง
ฮ นกฮูก แล้วแต่ว่าเราทำข้อตกลง
อย่างไร หรือบางฐานข้อมูลก็จะบอกว่าเรียงตามอายุ อายุมากขึ้น
ก่อน หรืออะไรอีกล่ะ เพศชาย
ขึ้นก่อน เพศหญิงตามมา คนเกิดวันอาทิตย์ขึ้นก่อน
หรือคนเกิดวันจันทร์ขึ้นก่อน แล้วแต่
โครงสร้างที่เรากำหนดไว้ ทำไม เพื่อให้มันหาข้อมูลได้เร็ว เพราะ
เรารู้แล้วว่าเกณฑ์ในการจัดเรียงข้อมูลมันคืออะไร
เพราะว่าข้อมูลที่เก็บอยู่ใน 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 ระดับนะคะ
แล้วก็แนวคิด แน่นอน มุมมองของผู้ใช้งานแต่ละคน
สามารถทำงานได้โดยอิสระ แยกจากกัน
นะคะ อาจจะมีการ
นำข้อมูลหลาย ๆ ตารางมารวมกัน
นะคะ เพื่อให้สามารถ
ครอบคลุมในการเรียกดูข้อมูลได้ อาจจะมองใน
คนละมุมกัน แต่ใช้
ฐานข้อมูลเดียวกันได้ แล้วก็ผู้ใช้งาน
ไม่จำเป็นต้องรู้ว่าข้อมูลที่เก็บไว้นี่อยู่ตำแหน่งไหนของ
Hard disk ไม่จำเป็นต้องรู้ ถ้า
อยากเรียกข้อมูลขึ้นมาดูได้ก็ต้องดูได้นะคะ
โดยบที่ Admin นี่ จะเป็นคนดูเองว่า
ที่ถูกเก็บไว้นี่จะต้องจัดเก็บไว้ตรงไหน แล้วก็เป็นคนที่
ดึงข้อมูลนั้น ๆ เข้ามา ให้ผู้ใช้งานสามารถใช้งานได้
นะคะ
ประโยชน์ข้อต่อมา ก็คืออิสระที่
มีการเปลี่ยนแปลงข้อมูล อย่างที่บอก คือ มีการเปลี่ยนแปลงโปรแกรม ทุกอย่างต้องไม่
ได้รับผลกระทบนะคะ งานต้องยังสามารถ
เก็บได้ หรือโปรแกรมก็ยังทำงานได้ถ้ามีการเปลี่ยนแปลง
ของข้อมูลนะคะ ไม่ใช่ว่า
มีคนหนึ่งเปลี่ยนนามสกุล ฐานข้อมูลทั้งมหาวิทยาลัย
ผิดพลาดหมดเลย อันนี้ไม่ได้นะคะ หรือ
บางคนเพิ่มที่อยู่ กลายเป็นว่าที่อยู่เหมือนกัน
ทั้งมหาวิทยาลัยอย่างนี้ก็ไม่ได้นะคะ ข้อมูลต้องเป็นอิไม่
หรือว่าวันนี้อาจารย์บอกว่าฐานข้อ
มูลอาจารย์ อยากใช้ Microsoft Access
อยากบอกว่าเปลี่ยนไปใช้
โปรแกรมอื่นได้ไหม ต้องเปลี่ยนได้นะคะ ไม่ใช่
ว่าใช้โปรแกรมเดียวไปตลอด ไม่ได้
ถ้าสมมติมีโปรแกรมที่ดีกว่า แล้วเราอยากเปลี่ยน
เราก็ต้องเปลี่ยนได้โดยที่ข้อมูลเราไม่หายนะคะ อันนี้คือความเป็นอิสระของข้อมูล
อันนี้พูดไปแล้วนะคะ
อันนี้พูดไปแล้วนะ
เดี๋ยวนะ Mapping
อันนี้พูดไปแล้ว ต่อมา แบบจำลอง
ข้อมูลนะคะ
แบบจำลองข้อมูลนี่ มันก็จะเป็นแบบจำลองที่
ใช้สำหรับอธิบายแล้วก็การจัดการข้อมูลที่จะ
เกิดขึ้นในฐานข้อมูล ความสัมพันธ์ในฐานข้อมูล
แต่ละตารางจะเกิดขึ้นอย่างไรบ้าง ข้อบังคับ
ของข้อมูลในระบบที่จะมีการเพิ่ม ลบ การเปลี่ยนแปลงข้อมูล
ใด ๆ จะต้องมีกฎเกณฑ์ใดบ้างนะคะ
ทั้งนี้ก็เพื่อใช้สำหรับการ
เป็นข้อตกลง แล้วก็สื่อสารระหว่างคนออกแบบฐานข้อมูล ก
ับคนที่ใช้งานฐานข้อมูลให้มีความเข้าใจตรงกัน
นะคะ ว่าถ้าเรามีระบบนี้คุณจะ
สามารถทำอะไรได้บ้าง ทำอะไรไม่ได้ เรียกข้อมูลบแบบไหน
แก้ไขข้อมูลอย่างไร ทำอย่างไรถึงจะบันทึกข้อมูลได้
ถ้าอยากลบรหัสนักศึกษาออกได้ไหม
อยากเป็นนักศึกษาแต่ไม่มีรหัสนักศึกษาได้ไหม ไม่ได้ ก็ต้องเข้าใจ
ตรงกันนะคะ
อันแรกนะคะ แบบ
จำลองข้อมูลนี่ จะมีอยู่ 2 ประเภท ประเภทแรก ก็คือ
เป็นแบบจำลองที่ใช้การบรรยาย
นะคะ บรรยายโดยรวมทั้งหมดของระบบว่า
มีอะไรบ้างนะคะ ซึ่งจะ
นำเสนอในลักษณะของการวาดภาพ
โดยที่ในฐานข้อมูล 1 ฐานข้อมูลนี่
จะหมายถึงการเก็บตารางกี่ตาราง
นะคะ ก็คือ Entity นี่แหละนะคะ
กับแต่ละตารางมีความสัมพันธ์อะไรบ้าง เราจะต้องวาดรูป
โยงเส้น ขีดเส้นใต้
ตีกรอบ เดี๋ยวอันนี้จะเป็น
ในครั้งถัด ๆ ไปจะเป็นการวาดรูป เดี๋ยวถ้า
วันไหนจะวาดรูป อาจารย์จะให้ถือกระดาษ A4
มาด้วยนะคะ ถ้าใครเคยเรียนสมัย
มัธยม ได้วาด Mind map
วาดแผนภาพ การวาดในฐานข้อมูลก็จะไม่ค่อยต่างกันค่ะ
แต่ว่าสัญลักษณ์แต่ละสัญลักษณ์ที่มาใช้ในการวาดรูปของเรา
มันมีความหมายนะคะ ไม่ใช่อยากวาด อยากใส่
วงรี อยากใส่สี่เหลี่ยม อยากใส่สามเหลี่ยม
อยากใส่วงกลม นึกอยากใส่อะไรก็ใส่ไม่ได้ มันจะมีกฎอยู่
โดยการวาดแบบนี้นี่ หรือการจำลอง
แบบนี้นี่จะนำเสนอเพื่อให้เกิดความเข้าใจง
ตรงกันระหว่างคนออกแบบกับคนใช้งาน ให้เห็นภาพ
คร่าว ๆ ว่าระบบที่เรากำลังจะทำขึ้นมานี่ มันทำงาน
อย่างไรนะคะ เก็บข้อมูลแบบไหน ใช้ข้อมูลอะไรได้บ้าง
นะคะ ต่อมาจะเป็น
แบบจำลองที่ใช้เพื่ออธิบายโครงสร้างของฐานข้อมูล
นะคะ คุณสมบัติของแบบจำลองข้อมูลที่ดี
จะต้องเป็นรูปหรือเป็นแบบจำลองที่เอามาวาง
แล้วถึงแม้ว่าเขาจะไม่มีความรู้ทางด้านคอมพิวเตอร์เลย
เขาก็จะเข้าใจนะคะ
มีสาระสำคัญ ไม่มีการซ้ำซ้อนกัน
นะคะ ซึ่งในที่นี้ก็ คือในแต่ละตาราง
มันไม่ควรจะมีการเก็บข้อมูลที่ซ้ำกัน
อย่างเช่น ตารางนี้เก็บข้อมูลนักศึกษาไปแล้ว
อีกตารางหนึ่งก็ยังจะเก็บอีก อันนี้ไม่ทำนะคะ จะต้องไม่
ซ้ำซ้อนกันในแต่ละตาราง แล้วก็มีความยืดหยุ่นแก้ไข
ง่ายในการแก้ไขในอนาคตนะคะ
และแบบจำลองของข้อมูล ไม่ควรจะ
ตายตัวเลยว่าโปรแกรมที่เรา... หรือฐานข้อมูลที่เรากำลัง
จะออกแบบ ต้องใช้โปรแกรมนี้เท่านั้น เราจะ
ไม่ทำแบบนี้นะคะ จะต้องเป็นฐานข้อมูล
ที่สามารถทำร่วมกับโปรแกรมใดก็ได้
นะคะ เพราะไม่อย่างนั้นมันจะขัดกับกฎความเป็นอิสระ
ของข้อมูล ก็คือถ้าสมมติเปลี่ยนโปรแกรมแล้วข้อมูลมันพังอย่างนี้
ยอบรับไม่ได้นะคะ
โดยแบบจำลองนี่ก็จะมีหลายรูปแบบ แบบแรกเป็น
เชิง Record ก็คือเป็นการเก็บเป็นแถว เป็นแถวไปเรื่อย ๆ
นะคะ แต่ละแถวก็หรืออาจจะเรียกว่า "รายการ
ข้อมูล" แต่ละแถวจะต้องไม่ซ้ำกัน จะต้องต่างกัน
นะคะ ก็จะมีอยู่ 3 แบบ แบบจากบนลงล่าง
แบบเครือข่าย แล้วก็แบบมีความสัมพันธ์
นะคะ
กับแบบจำลองเชิงวัตถุ
นะคะ จะมองทุกอย่างให้เหมือนเป็นวัตถุ
ตารางก็เป็นวัตถุชนิดหนึ่ง นักศึกษาก็เป็นวัตถุ
ชนิดหนึ่ง นักศึกษา 1
คน จะมีวัตถุในตัวเองเก็บอะไรบ้าง
นะคะ เช่น วัตถุที่ชื่อว่ารหัสนักศึกษา วัตถุ
ที่ชื่อว่าชื่อ-นามสกุล วัตถุที่เป็น
หมายถึงเบอร์โทรศัพท์นะคะ
ซึ่งส่วนใหญ่เวลาเราวาด หรือโครงสร้างฐานเราจะใช้
แบบจำลองเชิงวัตถุนะคะ ก็คือตัวแรกเลย
สิ่งที่เราจะวาดเรียกว่า "ER
Diagram"
นะคะ ER Diagram นะ อันนี้คืออย่างน้อยทุกคนต้อง
วาดได้ เข้าใจสัญลักษณ์แต่ละอันว่ามันมีความสำคัญอย่างไร
นะคะ ระดับปริญญาตรีนี่วาด ER Diagram
ก็ถือว่าเก่งมากแล้วนะคะ
แบบจำลอง
ข้อมูลจะมีส่วนประกอบอยู่ 3 ส่วนนะคะ ส่วนของ
โครงสร้างก็จะเป็นส่วนประกอบที่เก็บสัญลักษณ์ รวม
ทั้งกฎระเบียบที่ทุกคนจะต้องตกลงร่วมกัน
เพื่อใช้ในการสร้างฐานข้อมูล
นะคะ มาตรฐานเลย ก็คือข้อมูลทุกอย่างที่เราจะเก็บจะอยู่
ในรูปแบบของแถวกับคอลัมน์ อันนี้น่าจะเคย
ใช้งาน Excel มาแล้ว รวมถึงรู้จักว่าตาราง
คืออะไรนะคะ ตารางก็จะเป็นแบบนี้
เหมือนเวลาเราใส่ข้อมูลทั่ว ๆ ไปนะคะ ตีเส้น ตีกรอบ อันนี้
คือตารางนะคะ มีแถวกับ
คอลัมน์ ส่วนของการปรับปรุง
ก็จะเป็นส่วนที่ชนิดของ
การทำงานต่าง ๆ ตั้งแต่การปรับปรุงข้อม
มูลในฐานข้อมูล การเปลี่ยนแปลงโครงสร้างในฐานข้อมูล เช่น
เราอาจจะเพิ่มในส่วนของ
Social Media
ชื่อ Facebook คุณชื่ออะไร แต่
จะต้องไม่กระทบกับฐานข้อมูลหลักนะคะ ซึ่งนิยมจะ
ใช้ชุดคำสั่งของภาษา SQL
อันนี้เราก็จะเรียนเหมือนกันนะคะ ภาษา SQL
ในการจัดการกับข้อมูล รวมถึงกฎของ
ความคงสภาพ เพื่อใช้สำหรับควบคุมค
วามถูกต้องของข้อมูลและเพื่อ
ถูกต้อง เช่น รหัสนักศึกษาจะต้องเป็นตัวเลขเท่านั้น
เป็นตัวหนังสือไม่ได้นะคะ ความแน่นอนของ
ข้อมูลที่ถูกต้องที่บันทึกลงในฐานข้อมูล
นะคะ เวลาเราเรียกดูข้อมูลปุ๊บ เราจะ
ได้มั่นใจได้ว่าข้อมูลที่เราได้มา ตรงกับความจริงที่เกิดขึ้นนะคะ
นี่ก็จะซ้ำ ๆ กัน
แบบจำลองฐานข้อมูลนะคะ ในการตัดสิน
นี่ มันก็จะเป็นสิ่งสำคัญมาก ๆ
สำหรับการออกแบบฐานข้อมูลนะคะ
ซึ่งเราก็จะแบ่งเป็นประมาณ
5 รูปแบบ เพื่อให้เรา
ตัดสินใจว่าเราจะออกแบบฐานข้อมูลด้วยแบบจำลองแบบไหน
นะคะ อันแรกเลย เป็นแบบลำดับชั้น
นะคะ เป็นรูปแบบสถาปัตยกรรมฐานข้อมูล
ที่เก่าแก่ที่สุด ใช้มานานมาก
นะคะ โครงสร้างของข้อมูลหรือไฟล
์จะถูกจัดเก็บไว้จากบนลงล่างนะคะ ลักษณะคล้าย ๆ กับ
รากของต้นไม้นะคะ
โดยไฟล์ต่าง ๆ จะต้องมี
พ่อ ก็คือเป็น ถ้าเป็นภาษาอังกฤษ ก็คือ O
ne Parent ข้อมูลเดียวเท่านั้น แล้วค่อย ๆ แตกสาขาออกไป
นะคะ ความถูกต้องในการเก็บ
เก็บข้อมูลค่อนข้างมี
การเปลี่ยนแปลงข้อมูลน้อยมาก แต่ปัจจุบันง
ไม่นิยมใช้ เพราะมันยากต่อการไล่ลำดับของข้อมูล
นะคะ มันเวลาจะหาข้อมูลทีหนึ่ง
ก็ต้องวิ่งจากข้างบนแล้วก็ลงมาข้างล่าง
ต้องเริ่มจากข้างบน แล้วค่อยมาข้างล่าง
คุณอะไรล่ะ สมมติตึกนี้มี 10 ชั้น
อยากไปชั้น 3 คุณจะขึ้นจากข้างล่าง
ไปชั้น 3 เลย
ทุกครั้งนะคะ แบบจำลองข้อมูลตัวนี้
ข้อมูลตัวนี้ถามว่าดีไหม ดี แต่ว่าทำงานช้า
นะคะ ลักษณะก็จะเป็นแบบนี้นะคะ เริ่มจาก
ตรงนี้กว่าจะลงมาถึงตรงนี้ได้
ต้องผ่านทุกชั้นนะคะ ถ้าเราอยากดูข้อมูล
ตรงนี้เลยนี้ ตรงนี้ที่อาจารย์วง ๆ ไว้นี่ เข้ามาตรงนี้เลยได้ไหม ไม่ได้
เพราะกฎของมัน ก็คือเริ่มจากบนสุด ค่อยลงมาข้างล่าง
มันดีค่ะ แต่มันช้านะคะ
จะเป็นประมาณนี้นะคะ เป็น Root ลงมา
Parent ตรงนี้ เหมือนข้อมูล
ตรงนี้ค่ะ อันนี้คือแบบจำรองที่เรา
วาดจริง ๆ นะคะ สมมติอาจารย์อยากดูข้อมูลคนนี้
นะคะ ระดับล่างสุดเลย
อาจารย์เข้ามาดูข้อมูลคนนี้โดยตรงไม่ได้
อาจารย์จะต้องสั่งผ่านจากข้างบน ค่อย ๆ ลงมาตาม
ลำดับชั้นเรื่อย ๆ จนถึงคนนี้ ถามว่าเราเป็นผู้ใช้งานจ่
เราอาจจะไม่รู้สึกว่ามันหาข้อมูลช้า
แต่ในทางการทำงานทางกายภาพของคอมพิวเตอร์นี่
มันทำงานโดยคิดเป็นหน่วยใหญ่ ๆ
ก็คือเป็นวินาที ยิ่งใช้เวลาหาข้อมูลนานเท่าไร
ก็ยิ่งมีค่าใช้จ่ายที่เพิ่มขึ้นตาม
ไปด้วยนะคะ เพราะฉะนั้น เหมือนในยุค
ปัจจุบัน ทำไมทุกคนอยากได้คอมพิวเตอร์ที่เร็ว คิดเร็ว
เร็ว หาข้อมูลเร็วนะคะ ถามว่า
อันนี้มันช้าจนเราทนไม่ได้ไหม
ถ้าข้อมูลมันมีแค่นี้มันทนได้ค่ะ แต่ถ้าข้อมูล
มันมากกว่านี้ล่ะ หลายลำดับชั้นกว่านี้ล่ะ แค่หาชื่อคน
อาจจะรอเป็นชั่วโมงก็ได้ ถ้าจำนวนข้อมูลมันเยอะ
นะคะ อันนี้ก็เป็นแบบจำลอง
ข้อมูลที่ถามว่าทำงานได้ดีค่ะ แต่ว่าอาจจะเสียเวลา
นะคะ
ข้อดีก็คือเข้าใจง่าย ลักษณะ
เหมือนรากของต้นไม้อย่างที่บอกนะคะ ข้อมูลมีความสัมพันธ์แบบ 1
ต่อมากกว่า 1
จริง ๆ อยากพูดภาษาอังกฤษมากกว่า One-to-Many แบบ
พ่อ 1 คน มีลูกได้หลายคนประมาณนี้
ความสามารถในการควบคุมความถูกต้องของข้อมูลมีสูง
นะคะ ข้อมูลที่เหมาะกับข้อมูลแบบจำลองแบบนี้
ส่วนมากจะเป็น เป็นการเรียงลำดับอย่างต่อ
เนื่องนะคะ ที่จะเหมาะที่จะใช้
แต่มันก็มีข้อเสียอย่างที่บอกนะคะ มันไม่สามารถรองรับข้อมูล
ที่มีความสัมพันธ์แบบ Many-to-Many
ได้ เดี๋ยว One-to-One
One-to-Many Many-to-Many หลายสิ่งต่อหลายสิ่ง หรือหลายสิ่ง ต่อหลายสิ่ง
อะไรพวกนี้ เดี๋ยวเราจะเรียนในบทถัด ๆ ไป มันคืออะไร
นะคะ เดี๋ยวจะอธิบายโดยละเอียดในบทถัด ๆ ไป
โดยแบบจำลองแบบลำดับชั้นนี่ ความยืดหยุ่นมันก็จะน้อย
นะคะ การปรับเปลี่ยนโครงสร้างมีความยุ่งยาก
เพราะทุกอย่างจะต้องเริ่มจากด้านบน ถ้าเปลี่ยน
ตรงใดตรงหนึ่งต้องไล่ดูทั้งหมด เพราะมันอาจจะ
กระทบกับอีกส่วนอื่นก็ได้นะคะ
อย่างที่บอกค่ะ การค้นหาข้อมูลระดับล่าง ๆ
จะต้องทำตั้งแต่บนลงล่างลงมา เข้าไปหาโดยตรง
ไม่ได้นะคะ เสียเวลา แล้ว
ก็ทำให้การเขียนโปรแกรมในอนาคต
มันยาก เพราะว่าทุกอย่างจะต้อง
วนกลับมาจุดเริ่มต้น วนกลับมาจุดเริ่มต้น เสียเวลามากนะคะ
มันก็เลยมีการพัฒนาแบบจำลองข้อมูลแบบเครือข่าย
ขึ้นมานะคะ โดยแบบจำลองข้อมูล
แบบเครือข่ายนี่ จะใช้ตัวชี้ตำแหน่งที่เรียกว่า
"Pointer" ก็คือใช้ลูกศร
นะคะ ใช้ลูกศร ก็จะมีการเชื่อมโยงความสัมพันธ์ร
ะหว่างข้อมูลในแต่ละแถวเข้า
ด้วยกันนะคะ ก็จะเป็น
เชื่อมโยงกันได้นะคะ ข้อมูล
สามารถวิ่งผ่านกันได้ ไม่จำเป็นต้องจากบนลงล่าง
มา อาจจะเลี้ยวซ้ายเลี้ยวขวาได้แล้วคราวนี้นะคะ ลักษณะ
ของแบบจำลองเชิงเครือข่ายก็จะเป็นแบบนี้นะคะ
แต่ก่อนเราจะเริ่มจากบนลงล่างใช่ไหม คราวนี้ถ้าใบส่งของ
นี่ มันสามารถไปหาใครได้บ้าง ใบส่งของ 1 ใบ มีข้อมูลอะไร
บ้าง ก็คือรายการในใบส่งของ
ใครเป็นคนขาย ใครเป็นคนซื้อ
เขาจ่ายเงินแบบไหน อันนี้ไม่ต้องจากบนลงล่าง
ใช่ไหมคะ หรือจะดูว่าพนักงานวันนี้ขายของอะไร
ได้บ้าง ก็สามารถดูได้ ลูกค้า
คนนี้อยู่ในใบส่งของไหน ใครเป็นคนขาย
ลูกค้าจ่ายเงินอย่างไรก็ดูได้ ดูได้ทุกตำแหน่ง
นะคะ โดยที่ไม่ต้องเริ่มจากบนลงล่าง สามารถเข้าไปดูได้โดยตรง
ข้อดีแบบจำลองข้อมูลแบบเครือข่ายนะคะ ก็
ความซ้ำซ้อนในการเกิดขึ้นของข้อมูลก็เกิดขึ้นน้อยกว
่าลำดับชั้น เรียกดูข้อมูลแบบไป-กลับได้ง่ายนะคะ เพราะว่า
การค้นหาข้อมูลทำได้ดีกว่า เพราะว่ามีตัวชี้ตำแหน่งหรือว่า Pointer
ในการเข้าถึงข้อมูลได้ในทันที
นะคะ แต่สิ่งที่มีข้อดีก็ต้องมีข้อเสีย
นะคะ ข้อเสีย ก็คือการป้องกันความปลอดภัย
ของข้อมูลมีน้อยนะคะ แล้ว
ก็สิ้นตัวเปลืองพื้นที่ในตัว
เก็บตัวชี้ตำแหน่ง ถ้าตารางข้อมูล
มันมีแค่นี้น่ะค่ะ มันก็ไม่เปลืองหรอก แต่ถ้าสมมติ
มันเป็นระดับห้างสรรพสินค้าล่ะ
ร้านค้าใหญ่ ๆ ข้อมูลเกิดขึ้น
แทบจะทุกนาที มันก็ต้องมี
ตัวชี้ตำแหน่งเก็บทุก ๆ ๆ ๆ สิ่งที่เกิดขึ้น
ทำไมถึงบอกว่าเปลืองไม่ได้ เพราะว่าใช้เชิงธุรกิจ
อะไรที่เป็นสิ่งที่เราต้องจ่ายเพิ่ม เช่น การซื้อ
ฮาร์ดดิสเพิ่มเพื่อเก็บข้
อมูล เป็นต้นทุน หมายความว่าคุณจะต้องลงทุกเพิ่มขึ้น
ในสิ่งที่อาจจะไม่ได้จำเป็นขนาดนั้นนะคะ
แล้วก็การเปลี่ยนแปลง
เชิงโครงสร้างก็อาจจะมีความยุ่งยาก เพราะ
หลาย ๆ อย่างมันเชื่อมต่อกันอยู่ เช่น อยู่ดี ๆ อาจารย์
บอกว่า อาจารย์อยากตัดใบส่งของออก แล้วพนักงาน
กับลูกค้าเขาจะเชื่อมโยงกันอย่างไร ผ่านสินค้า
หรือ แล้วคุณไม่ต้องไปส่งของลูกค้าหรือ
นะคะ อันนี้ก็จะมีข้อ
สงสัยกับข้อที่ต้องมาคิดตาม
เหมือนกันว่าถ้าเราจะมีการเปลี่ยนแปลง
ตำแหน่งบางตำแหน่ง สำหรับการชี้ตำแหน่ง
นะคะ มันต้องทำอย่างไร มันก็เลยมีการพัฒนาขึ้นมาอีก เป็น
แบบจำลองฐานข้อมูลเชิงสัมพันธ์นะคะ
ก็จะเป็นแบบจำลองข้อมูลที่
ได้รับความนิยมมากในปัจจุบัน
เพราะว่านำเสนอข้อมูลในลักษณะที่เป็นตาราง เข้าใจง่าย
มีแถว มีคอลัมน์นะคะ สามารถ
แสดงให้เห็นถึงความสัมพันธ์กับตารางอื่น ๆ ได้ง่าย
นะคะ แต่เราจะใช้สิ่งที่เรียกว่า "กุญแจ
" หรือ "Key" เพื่ออ้างอิงไปยังตารางอื่น ๆ
เหมือนอย่างนี้ อันนี้คือตารางพนักงานขาย
ตารางลูกค้าอะไรพวกนี้ค่ะ เราไม่รู้ว่าเราจะอ้างอิงด้วยอะไร
ใช่ไหมคะ อย่างเช่น ใบส่งของมีของ
อยู่ 5 อย่าง เราก็รู้ว่าแค่ 5 อย่าง
ไม่ได้มีจุดสังเกตใด ๆ ให้รู้
นะคะ มันก็เลยมีการพัฒนาสิ่งที่เรียกว่า "Key" หรื
อ "กุญแจ" ขึ้นมานะคะ โดยกุญแจ
ของ 1 คนนี่ มันสามาถเป็นได้ทั้งกุญแจหลัก
แล้วก็คีย์รองได้ เดี๋ยวรายละเอียดของคีย์หลักคีย์ รอง
คีย์ คีย์ภายนอกนะคะ
จะอธิบายโดยละเอียดในบท
ถัด ๆ ไปนะคะ อันนี้เอาให้เห็นคร่าว ๆ ก่อน
อย่างเช่นนะคะ ตาราง
นี้
นะคะ อันแรกจะเป็นตารางเก็บข้อมูลเกี่ยวกับสาขา
สมมติว่าเราเปิดร้านค้า มีตารางเกี่ยวกับ
สาขาที่เราเปิด กับตารางพนักงาน ทำไม
รหัสสาขาอาจารย์ต้องขีดเส้นใต้ด้วย
ทำไมรหัสพนักงานจะต้องขีดเส้นใต้ด้วย
ความสำคัญมีอยู่นะคะ ไม่ใช่ว่าขีดเฉย ๆ
เพื่อเน้นให้พวกคุณอ่าน ไม่ใช่ มันแสดงให้เห็น
ว่าในตารางนี้สิ่งใด
ที่ขีดเส้นใต้ ข้อนั้น ข้อมูลในตารางนั้น
จะซ้ำกันไม่ได้ เราเรียกสิ่งนี้ว่า "คีย์หลัก"
นะคะ รหัส
พนักงานขีดเส้นใต้ ก็แสดงว่ารหัส
พนักงานแต่ละคนจะต้องไม่ซ้ำกัน เพราะรหั
สพนักงานเป็นคีย์หลัก
แต่ถ้าสังเกตดี ๆ ในตาราง
พนักงานทำไมมีรหัสสาขา
โผล่ขึ้นมาตรงนี้ด้วย แล้วทำไมไม่ขีดเส้น
ใต้ล่ะในตารางนี้ เพราะในตารางพนักงาน
รหัสสาขา ไว้สำหรับ
เป็นคีย์นอกในการเชื่อมต่อกันว่า 2 ตาราง
นี้ มันมีความสัมพันธ์กันอย่างไร
นะคะ เดี๋ยวจะอธิบายอีกทีหนึ่ง
ว่าทำไมต้องมีความสัมพันธ์กันล่ะ เอาง่าย ๆ
เลยค่ะ พนักงานคนที่ 1 ถ้าอาจารย์
ไม่มีรหัสสาขา คุณจะรู้ได้ไหมว่าพนักงานค
นนี้ทำงานที่สาขาไหน ไม่รู้เลย
หรืออาจจะบอกว่าสาขาอุดรฯ มีใคร
ทำงานบ้างรู้ไหม ถ้าไม่เชื่อมกับตารางพนักงานก็ไม่
รู้เลยนะคะ เดี๋ยวจะอธิบาย
อีกทีหนึ่งในบทของการวาดความสัมพันธ์นะคะ
ข้อดีของแบบจำลอง
เชิงสัมพันธ์ที่เป็นตาราง อ่านง่ายเข้าใจง่าย เพราะนำ
เสนอในลักษณะของตาราง สามารถเลือกดู
ตามสิ่งที่เราสนใจ ความซับซ้อนก็มีน้อย
เพราะว่าข้อมูลในเชิง 2 มิตินี่ พอมัน
มองมันมองง่าย ความปลอดภัยค่อนข้างดีนะคะ
เพราะว่าผู้ใช้งานก็จะไม่รู้ว่าเรา
อยากเรียกใช้ข้อมูลอะไรได้บ้างนะคะ แล้วก็โครงสร้างของข้อมูล
แน่นอนถ้าเราเปลี่ยนโปรแกรมก็ยังสามารถทำงานได้
นะคะ แต่ข้อเสียของมันก็
มีนะคะ ก็คือค่าใช้จ่ายค่อนข้างสูง
นะคะ เพราะว่าทรัพยากร
ที่ใช้ในการจัดการนี่ ต้องมีสมรรถที่สูงนิดหนึ่ง
ประมวลผลต้องเร็วนะคะ
การปรับปรุงแก้ไขข้อมูลก็อาจจะมีความยุ่งยาก เพราะว่า
ไม่รู้ว่าข้อมูลภายในที่เก็บจริง ๆ แล้วนี่
มันเป็นอย่างไร มีคนเดียวที่รู้ ก็คือคนจัดการฐานข้อมูลเท่านั้น
บางครั้งผู้ใช้งานนี่อาจจะเป็นผู้
ที่ต้องคีย์ข้อมูลเข้าไป ก็อาจจะเริ่มงงว่าสรุปว
่าฉันต้องกรอกข้อมูลอะไร ทำไมข้อมูลมันไม่ผ่าน
นะคะ อย่างเช่น
อาจจะไม่มี อันนี้มันก็จะเกี่ยวเนื่องไปถึงการออก
แบบระบบด้วย เหมือนบางคนใส่เลยบัตรประชาชนไม่ครบ
13 หลัก ถ้าผู้
ดูแลระบบออกแบบระบบไม่ดี มันก็จะไม่มีแจ้งเตือนว่า
เลขบัตรประชาชนคุณน่ะไม่ครบ
คนใช้งานก็จะเริ่มงงแล้วว่า
ฉันผิดอะไรนะคะ มันตั้งแต่การออกแบบเลย
เพราะฉะนั้น คนดูแลระบบ
ก็ต้องป้องกันสิ่งที่จะเกิดขึ้นด้วย การแจ้งเตือนว่าเราผิดพลาดตรงไหน ข้อมูลจะเป็นอะไร
ได้บ้างนะคะ เหมือนการ
เก็บข้อมูลรูปภาพ รูปภาพต้องขนาดเท่าไร
ต้องเป็นภาพสีไหม หรือว่าต้องเป็นภาพขาวดำ
เท่านั้น จะต้องอธิบายให้ชัดเจนนะคะ เพราะว่าถ้า
มีการปรับปรุงข้อมูลทีหนึ่งนี่ บางทีถ้าผู้ใช้งานไม่เข
้าใจมันก็จะไม่สามารถบันทึกลงฐานข้อมูลได้นะคะ
กับแบบจำลอง
ข้อมูลเชิงวัตถุนะคะ ส่วนมากจะเป็นการ
ออกแบบเพื่อเขียน
แอปพลิเคชันนะคะ มองทุกอย่างให้เป็น
วัตถุชนิดหนึ่งนะคะ มันก็จะมี
การห่อหุ้มวัตถุนั้น ๆ ไว้ด้วย
อะไรบ้าง นะคะ อันนี้ก็พอ
เรียนปีสูงขึ้น ทุกคนก็จะได้เรียนการ
ทำงานเชิงวัตถุมากขึ้นนะคะ อันนี้ปี 1 ก็
ฐานข้อมูลเชิงสัมพันธ์นี่ก็เต็มที่แล้ว
นะคะ อันนี้อาจารย์เอามาให้รู้จักเฉย ๆ
เพราะว่าถ้าเป็นฐานข้อมูลหรือการเขียนโปรแกรม
เชิงวัตถุใด ๆ ก็ตาม มันจะ
ทำงานซับซ้อนได้ดีกว่า มันเหมาะกับการทำงาน
เกี่ยวกับภาพกราฟิก การเก็บวิดีโอ เสียง
อย่างเช่น เราเล่น Facebook มีหมดเลย ทั้งภาพ
ทั้งวิดีโอ ทั้งเสียง ที่เราต้องเก็บข้อมูล
แล้วก็สามารถเอาข้อมูลที่มีอยู่
หรือนานมาแล้วนี่ เรียกกลับมาใช้ซ้ำได้
ง่ายกว่ารูปแบบจัดการฐานข้อมูลชนิดอื่น ๆ
แต่ข้อเสียของการทำงานเชิงวัตถุ
ก็คือจะต้องมีความชำนาญมาก ๆ แล้วก็
เข้าใจในการมองโปรแกรม หรือ
มองข้อมูลนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่ง
อาจจะต้องใช้ประสบการณ์ในการจัดการกับ
ข้อมูลที่มีความซับซ้อนมาก ๆ
พอเราอายุเท่านี้อาจจะมองไม่เห็นความซับซ้อนของข้อมู
ลนะคะ แต่ถ้าไปทำงานจริง ๆ นี่ ถ้าคุณต้องดูแลระบบใหญ่ ๆ ใด ๆ ก็ตามนี่
ข้อมูลมันก็จะเริ่มซับซ้อนขึ้น มีส่วนย่อย ๆ
เกิดขึ้นมากมายนะคะ
เพราะฉะนั้น การที่เราจะเป็นคนที่ออกแบบข้อมูล
เราจะต้องมองภาพโดยรวมทั้งหมด
ให้ได้นะคะ เหมือนที่อาจารย์ยกตัวอย่างตอนแรก
ครั้งหน้า ๆ ถ้า
มีให้วาดรูป อาจารย์
ก็จะเริ่มถามแล้วว่าเคยไปห้องสมุดไหม
นะคะ เคยยืมหนังสือหรือเปล่า การที่
เราจะยืมหนังสือห้องสมุดได้ มันจะต้องเกี่ยวข้อง
กับอะไรบ้าง เช่น เราเป็นสมาชิกห้องสมุดไหม
นะคะ แล้วเราไปห้องสมุด เรา
ยืมหนังสือ มันจะต้องมีข้อมูลหนังสือที่เราจะยืมไหม
นะคะ ชื่อหนังสืออะไร
หนังสือมีรหัสหนังสือหรือเปล่า ยืมได้กี่วั
นนะคะ ใครเป็นคน
แต่งหนังสือเล่มนั้น นี่แค่การยืมหนังสือเล่มเดียว
ข้อมูลที่เกิดขึ้นก็มีเยอะแล้ว ใครเป็นคนยืม ใครเป็นคนแต่ง
ยืมได้กี่วัน หนังสือชื่ออะไร เลขหนังสืออะไร
นักศึกษาคนไหนเป็นคนยืม นะคะ อันนี้ก็
แค่ยืมหนังสือเฉย ๆ ใน
ข้อสอบหรือในชีวิตจริง พวกคุณจะต้องเจออะไร
ที่เยอะกว่านี้อีกเยอะนะคะ
กับอีกอันหนึ่งนะคะ เป็นแบบจำลองฐานข้อมูล
แบบหลายมิตินะคะ ใคร
เคยเล่นรูบิกลักษณะหลาย ๆ มิติจะเป็นแบบนั้นเลย
นะคะ เป็นก้อน ๆ นะคะ เช่น
การเก็บข้อมูลส่วนมากจะเกี่ยวกับเชิงธุรกิจ
เสียมากกว่านะคะ อาจจะเป็นเกี่ยวกับการเก็บข้อมูล
ผลิตภัณฑ์สินค้า อาจจะเป็นเกี่ยวข้องกับขายที่ไหน
บนที่เท่าไร มาประมวลผลเป็นตาราง เพราะว่า
มันจะทับซ้อนกันไปอีกเยอะมาก ขายอะไร
ขายที่ไหน ขายเมื่อไหร่ ใน
สินค้าชนิดเดียวนะคะ
เหมือนข้อมูลเวลาเราซื้อของ วันหมดอายุเท่าไร
ส่วนประกอบอะไร หลาย ๆ ทุกอย่าง ข้อมูลทุกอย่างจะซ้อน
กันเป็นมิติ เวลาเราดูขนม 1 ห่อ ส่วนประกอบคืออะไร
นะคะ ผลิตที่ไหน ต้องบริโภค
วันที่เท่าไร ใครเป็นคนผลิต ใครเป็นคนนำเข้า
ซ้อนทับกันจะเป็นหลาย ๆ มิตินะคะ ลักษณะ
คล้าย ๆ รูปทรงแบบนี้นะคะ แค่ของชิ้น
เดียวเก็บข้อมูลเยอะมากนะคะ
เป็นแบบนี้ จริง ๆ วันนี้ก็จะไม่มีอะไรมาก
เพราะว่าเป็นแค่แนะนำเพื่อปู
ทางในการวาดภาพแผนภาพ ER
ของเราในบทต่อไปนะคะ วันนี้ก็มีการบ้าน
เหมือนกันค่ะ 10 ข้อ เหมือนเดิม ทำใส่
กระดาษรายงานส่งนะคะ เนื้อหาที่
จะตอบก็อยู่ในสไลด์อาจารย์หมดแล้วนะคะ
ก็ไม่น่าจะมีปัญหาอะไร
มีอะไรสงสัยไหมคะ เดี๋ยว
จะได้ปล่อยทำงาน
ไม่มีอย่างนั้นเดี๋ยวจะให้นั่งทำงาน
นะคะ ก็เนื้อหา
ประมาณนี้ค่ะ ล่ามวันนี้เนื้อหาไม่เยอะ
ขอบคุณมากนะคะวันนี้ โอเค ขอบคุณค่ะ