(อาจารย์เกวลี) วันนี้จะเป็นเนื้อหาบทที่ 2
นะคะ จะเกี่ยวข้องกับสถาปัตยกรรมฐานข้อมูล แล้วก็
ทฤษฎีเกี่ยวกับแบบจำลองข้อมูลนะคะ ข้อมูลที่
เราใช้ปัจจุบันนี่บางคนก็ไม่รู้ว่าทำไมเราต้อง
เก็บ เหมือนนักศึกษา 1 คนทำไมต้องถามด้วยล่ะ
ชื่ออะไร นามสกุลอะไร เรียนจบที่ไหนมา
นะคะ เกรดเฉลี่ยตอนจบ ม. 6 หรือ
จบสายอาชีพได้เกรดเฉลี่ยเท่าไร เทอมที่แล้ว
เราเรียนไปกี่วิชานะคะ ได้คะแนนเท่าไร
ได้เกรดเท่าไร ทำไมต้องเก็บแบบนี้
นะคะ ทุกอย่างก็จะมีเหตุมีผลเพราะว่าข้อมูลทุกรูปแบบนี่ ก็จะมี
เนื้อหาความสำคัญ
ของชุดข้อมูลนั้น ๆ อยู่นะคะ
โดยที่เราจะเรียกสิ่งนั้น ๆ ว่า "แนวคิด
เกี่ยวกับการออกแบบฐานข้อมูล" หรือสถาปัตยกรรมฐานข้อมูล
นะคะ มันก็จะเป็นข้อกำหนดแล้วก็
ข้อตกลงรวมถึงขอบเขตหรืออาจจะเป็นกรอบ
ความคิดนะคะ ในการบรรยายว่า
ฐานข้อมูลนั้น ๆ ควรจะเป็นอย่างไรนะคะ โครงสร้าง ก็คือข้อมูลที่เรา
จะเก็บมีอะไรบ้าง ส่วนประกอบที่เอามาประกอบกันไป
จนเป็นระบบฐานข้อมูลมีอะไรนะคะ
โดยที่สถาปัตยกรรมฐานข้อมูลนี่
มันจะส่วนประกอบสำคัญอยู่ 3 ส่วนนะคะ ก็คือในตัวสถาปัตยกรรมระบบเอง
นะคะ และก็ความเป็นอิสระของข้อมูล
นะคะ เดี๋ยวจะอธิบายว่าแต่ละอันคืออะไร
กับภาษาที่ใช้ในการ
จัดการฐานข้อมูล 3 อย่างนี้จะต้องทำงานร่วมกัน
สถาปัตยกรรมของฐานข้อมูลนี่
กับขอบเขตนะคะ หรือกรอบถ้าเป็น
ภาษาทางเชิงวิชาการเขาเรียกว่า "กรอบ
" เชิงวิชาการเขาเรียกว่า "กรอบ" ที่ใช้ประโยชน์ในการบรรยายว่า
ทำไมเราถึงสร้างฐานข้อมูลแบบนี้ ทำไมเรา
เก็บข้อมูลแบบนี้ และในฐานข้อมูลนี่ เรามีโครงสร้าง
เก็บข้อมูลแบบไหนบ้างนะคะ ซึ่งหลัก ๆ แล้วนี่
โครงสร้างที่ใช้ในการสร้างฐานข้อมูลนี่ มันจะมีอยู่ 3 ระดับ
นะคะ มีระดับภายนอก ระดับภายใน แล้วก็ระดับแนวคิด
เดี๋ยวจะอธิบายไปทีละอย่าง ทีละอย่างนะคะ
ความเป็นอิสระของข้อมูลคืออะไร
นะคะ ก็คือการที่ผู้ใช้งานสามารถ
เปลี่ยนแปลงข้อมูลอาจจะเป็นในระดับของการ
ออกแบบฐานข้อมูลหรือระดับถึงขั้นการ
เก็บข้อมูลแล้วก็ได้ โดยที่ถ้าเรามีการเก็บข้อมูล
หรือเปลี่ยนแปลงการจัดเก็บข้อมูล โปรแกรม
ที่ใช้งานจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลง
นะคะ โปรแกรมก็อยู่ส่วนของโปรแกรม ข้อมูลก็อยู่ของข้อมูล
จะแยกออกจากกันนะคะ โดยที่
ผู้ใช้งานนี่จะมองเห็นแค่ว่า
การเก็บข้อมูลระดับภายนอก ก็คือเราเก็บข้ออะไรบ้าง
เหมือนเวลาคุณอยากเล่น TikTok
อยากเล่น Facebook อยากเล่น
Instargram
หรือเปล่า มีเบอร์โทรศัพท์ไหม มีโปรไฟล์
อันนี้คือข้อมูลระดับ
ภายนอกที่ผู้ใช้งานอย่างเรา ๆ นี่ เป็นคน
ให้ข้อมูลไป แล้วก็เป็นสิ่งที่เราเป็นคนเห็นเองว่าข้อมูล
ที่กรอกลงไปนี่มีอะไรบ้าง นะคะ แต่ถามว่าถ้า
เราอยากเปลี่ยนแปลงได้ไหม ว่านอกจากรูปภาพนี่
อยากให้เขาขอเกี่ยวกับอะไรดีล่ะ
สถานะการเรียน เราจะไปบอกเขาว่า
อยากบอก อยากให้เพิ่มเมนูตรงนี้ได้ไหม เราทำไม่ได้
นะคะ เพราะอันนั้นเป็นระดับโครงสร้างระดับแนวคิด ระดับ
ภายใน ซึ่งผู้ใช้งานธรรมดาจะแก้ไขไม่ได้
นะคะ โดยที่ เพราะฉะนั้นนี่
สมมติเรามีการเปลี่ยนแปลงข้อมูลจะมีการเปลี่ยนแปลง
ในระดับที่ต่ำ ข้อมูลส่วนตัวเรานี่ล่ะนะคะ ถ้าเราเปลี่ยนแปลงเฉพาะ
ข้อมูลเราตัวเองนี่ มันจะไม่กระทบกับคนอื่น
รวมถึงไม่ได้กระทบกับ Facebook ไม่ได้กระทบกับ Instagram
TikTok เขาก็ยังใช้งานปกติได้ ถึงแม้คุณจะบอกว่าจะ
เปลี่ยนแปลงรูปโปร์ไฟล์ถามว่าโปรแกรมมันจะพังไหม
ไม่นะคะ อันนี้คือการเปลี่ยนแปลง
ระดับต่ำ ก็คือเป็นการเปลี่ยนแปลงของผู้ใช้งานโดยตรงนะคะ
ความเป็นอิสระข้อมูลเชิง
ตรรกะ ก็คือการเปลี่ยนแปลงมุมมอง
ของผู้ใช้งาน อย่างเช่น คุณอยาก
จะวันนี้เราอัปรูปไป 4 รูปนะคะ
คุณอยากจะสลับตำแหน่งนะคะ
ย้ายจากรูปสุดท้ายมารูปที่ 1 ถามว่า
โปรแกรมนั้นจะพังไหม ไม่พังนะคะ เพราะมันเป็นถือว่า
เป็นการเปลี่ยนแปลงภายนอก ไม่ได้เปลี่ยนแปล Code โปรแกรม
ไม่ได้บอกให้
ผู้ดูแลระบบลบเมนูตรงนี้ออก
ไม่ใช่นะคะ อันนี้ก็คือ
ถ้าผู้ใช้งานอยากเปลี่ยนแปลงข้อมูลส่วนตัวของตัวเองอย่างนี้ เปลี่ยนแปลงได้เลย
นะคะ ไม่กระทบกับคนอื่น ไม่กระทบกับระบบโดยรวม
นะคะ รวมถึงความเป็นอิสระของข้อมูล
เชิงกายภาพนะคะ ถ้าสมมติว่าวันหนึ่ง
Facebook ย้ายเครื่องคอมพิวเตอร์ในการ
เก็บข้อมูลคนใช้งาน ถามว่า
ย้ายจากเครื่องหนึ่งไปอีกเครื่องหนึ่ง ถามว่าเราใช้ Facebook ไ
ด้ไหม ใช้ได้ มันไม่กระทบกับเรานะคะ มันถือว่าเป็น
โครงสร้างของข้อมูลระดับภายใน ส่วนของ
บริการเขาอาจจะมีการปรับเปลี่ยนย้ายจากเครื่อง A
ไปเครื่อง B แต่ผู้ใช้งานก็ยังสามารถใช้งาน
ได้ตามปกติ ไม่ได้รู้สึกถึงความผิดปกติใด ๆ
อาจจะมีช่วงที่แบบ Restart เครื่อง
ตัว Server ของเขาบ้างอะไรอย่างนี้นะคะ แต่ถามว่า Facebook เราหายไปไหม ไม่นะคะ
อันนี้คือตัวอย่างคร่าว ๆ
เชิงตรรกะเป็นอย่างไร เชิงกายภาพเป็นอย่างไร
ต่อมาภาษาหลักของระบบ
จัดการฐานข้อมูลนะคะ ก็จะมีอยู่ 3 ภาษาหลัก ๆ
นะคะ อันนี้หมายถึงว่าภาษา
เชิงโครงสร้างนะคะ ที่ใช้ ไม่ได้หมายถึงชื่อภาษาทางโปรแกรม
อันแรกคือภาษาสำหรับนิยามข้อมูล
นะคะ ก็จะเป็นภาษาที่ใช้ในการกำหนดโครงสร้าง
ของฐานข้อมูลนะคะ ว่า
ระดับแนวคิด ก็คือคุณวางแผนไว้ว่าอย่างไร อย่างเช่น
อาจารย์อาจจะพอคุณเรียนปีสูง ๆ ขึ้น จะ
ต้องได้ทำ Project อาจจะทำโปรแกรมเป็นของตัวเอง สมมติ
ว่าได้ทำโปรเจกต์เกี่ยวกับร้าน
ในร้านหนังสือร้านหนึ่งเราต้องเก็บข้อมูลอะไรบ้าง เราต้องเขียนออกมาให้ได้
นะคะ สิ่งนี้เราจะเรียกว่าระดับแนวคิด
เราจะมาให้ความหมายว่าในฐานข้อมูลเรา
นี่ ระหว่างผู้ใช้งาน สมาชิก
เจ้าของร้าน สามารถทำอะไรได้บ้าง สิ่งเหล่านี้จะ
เรียกว่า "View" หรือจะเรียกว่ามุมมองของแต่ละคน
เอาง่าย ๆ ยกตัวอย่างอีกแล้ว Facebook Facebook หน้าที่คุณ
ดู กับหน้าที่เพื่อนดูอาจจะไม่เหมือนกัน
ใน Facebook สามารถกำหนดว่ารูปนี้จะเก็บไว้ดู
คนเดียว หรือรูปนี้จะเพื่อนดูได้
รูปนี้จะให้ใครก็ได้มาดู
ไม่ได้ปิดกั้น อย่างนี้ก็มีอันนี้คือ
การกำหนดสถานะมุมมองของการดูข้อมูลของเรา
เราจะกำหนดตั้งแต่การกำหนดโครงสร้างของฐานข้อมูล
ว่าผู้ใช้งานแต่ละคนดูข้อมูลส่วนไหน
ได้บ้างนะคะ ต่อมาเป็นภาษาในการจัดการข้อมูล
อันนี้จะเป็นภาษาในการจัดการข้อมูล อันนี้จะเป็นภาษาเชิง Programing
ซึ่งไว้สำหรับจัดการข้อมูลในฐานข้อมูล
ก็จะเป็นตั้งแต่การค้นหาข้อมูลการเพิ่ม
การลบการแก้ไขข้อมูลในฐานข้อมูล
นะคะ อันนี้ก็จะสามารถทำได้ตามสิทธิ์
ของผู้ใช้งานแต่ละคน บางคนค้นหา
ได้แต่เพิ่มไม่ได้ บางคนเพิ่ม
ได้แต่ห้ามลบนะคะ อันนี้ก็เป็น
คำสั่งที่ใช้ภายในฐานข้อมูล ต่อมา
เป็นภาษาควบคุมนะคะ มันจะเป็นภาษา
ที่เอาไว้สำหรับการควบคุมความถูกต้องของข้อมูล
เช่นอะไรบ้าง อย่างเช่น อาจารย์ให้คุณกรอกช
ื่อนะคะ กรอกชื่อ แต่ว่านักศึกษา
บางคนลืมเปลี่ยนภาษา หรือลืมเปลี่ยนปุ่ม
หรือลืมเปิดปุ่มตัวเลขไว้
นะคะ กลายเป็นว่าพิมพ์ชื่อตัวเองเป็นตัวเลข
ระดับควบคุม ก็คือมันจะเป็นการตรวจสอบว่าข้อมูลที่นักศึกษาใส่
มาถูกหรือผิด เช่น อาจารย์ให้
กรอกได้เฉพาะตัวหนังสือเท่านั้น ใส่ตัวเลขไม่ได้
นะคะ หรือการเกิดภาวะพร้อมกัน อย่างเช่น
จองตั๋วคอนเสิร์ต
ดังมาก เข้ามาจองพร้อมกันสัก 50,000 คน
เราจะมีการจัดการคน 50,000 คน
อย่างไรนะคะ ให้สามารถ
ทำงานได้ อันนี้คือการเกิดภาวะพร้อมกัน ก็คือเข้ามาใช้งานระบบพร้อมกัน
ทั้งหมดนะคะ
โดยสถาปัตยกรรมฐานข้อมูลนี่
มันก็จะมีโครงสร้างองค์ประกอบหลักนะคะ
ทั้งฐานข้อมูล หน้าที่แต่ละองค์ประกอบ แต่ละคน แต่ละผู้ใช้งาน
นะคะ รวมถึงการเขียนโปรแกรมเพื่อ
สื่อสารแล้วก็ติดต่อกับส่วนอื่น ๆ นะคะ
ในระบบฐานข้อมูลอาจจะไม่ได้มีแค่โปรแกรมเดียวที่ทำงานนะคะ
อาทิตย์ที่แล้วเคยบอกว่าระบบบัญชี ระบบบุคคล
ระบบการเงิน ก็ใช้ฐานข้อมูลร่วมกันนะคะ
โดยที่ถ้าสมมติว่าเรามีการเปลี่ยนแปลงโปรแกรม
นะคะ โครงสร้างของฐานข้อมูลจะยังอยู่นะคะ
ข้อมูลจะไม่หายไปไหน เพราะเราเปลี่ยนแค่ตัวโปรแกรม
เราไม่เปลี่ยนทั้งโครงสร้าง ถ้าเปลี่ยนโปรแกรมใหม่
มันก็จะมีการเชื่อมต่อที่ทำให้ข้อมูลมันสามารถทำงาน
ได้นะคะ
โดยระบบฐานข้อ
นี่ มันก็จะเป็นการเอาข้อมูลที่มีอยู่ในองค์กร หรือข้อมูลเพิ่มเติม
นะคะ ที่มีความเกี่ยวข้องกันมารวมไว้ในที่เดียวกันนะคะ
โดยผู้ใช้งานในฐานข้อมูลนี่ จะมอง
มุมมองหรือ View ที่แตกต่างกันไปตามสิทธิ์ของการใช้งาน
นะคะ โดยที่
ผู้ใช้งานนี่ ไม่จำเป็นต้องรู้ว่าถ้าสมมติว่าคุณเป็นผู้ใช้งาน
ทั่วไป เขาจำเป็นจะต้องรู้ไหมว่าโปรแกรมเมอร์
เขียนโปรแกรมอย่างไร โปรแกรมเมอร์ใช้วิธีอะไรในการแสดงภาพ
โปรแกรมเมอร์ทำอย่างไรให้เราดู Youtube ได้
อันนี้ไม่จำเป็นต้องรู้นะคะ
โดยที่ของสิ่งเหล่านี้มันซ่อนรายละเอียดไว้ได้
แต่ว่าให้แสดงออกมาได้ไหม แสดงได้ แต่ User
หรือผู้ใช้งานไม่จำเป็นต้องรู้ เพราะฉะนั้น เราซ่อนไว้ได้
นะคะ ยกเว้นบางอย่างนี่ ที่เป็นภาษาโปรแกรม
นี่ เหมือนเวลาเราใช้ Google Chrome
นี่ เราก็สามารถดูได้ว่าโค้ดโปรแกรมที่
ผู้ดูแลระบบเขียนไว้นี่ เขาเขียนอย่างไรบ้าง ดู
ได้นะคะ แต่ถามว่าพ่อแม่เราจะอยากรู้ไหมว่า Google เขียนโปรแกรมอย่างไร
ก็ไม่จำเป็นต้องเปิดดู แต่ถามว่าเปิดดูได้ไหม บางส่วนก็เปิดดูได้
นะคะ
โดยสถาปัตยกรรมฐานข้อมูลนี่ มีอยู่ 3 ระดับ
นะคะ เหมือนที่พูดไปตอนต้น ก็คือมี
ระดับภายนอก ระดับแนวคิด และระดับภายใน มี 3 ระดับ โดยแสดง
เป็นแผนภาพแบบนี้นะคะ
ให้... อันนี้ระดับ
ภายนอกนะคะ เดี๋ยวเติมเส้นแบบนี้
ระดับภายนอก ก็คือเราอาจจะมีผู้ใช้งาน 1 คน
2 คน หรือหลายคน แต่ละคนอาจ
ใช้ระบบเดียวกันแต่หน้าจอที่ดู
อยู่ ไม่เหมือนกันก็ได้นะคะ อย่างเช่น นักศึกษา
เข้าไปใช้ระบบทะเบียน
คนหนึ่งดูเกรด คนที่ 2 พิมพ์
ใบลงทะเบียน คนที่ 3
อาจจะค้นหาคำอธิบายรายวิชา ถามว่าเขาใช้โปรแกรมเดียวกันไหม ระบบ
เดียวกันไหม ใช่ ระบบเดียวกัน แต่เขาอาจจะทำงาน
ไม่เหมือนกันก็ได้นะคะ คุณอยากดูตรงไหนก็ได้
เหมือนกันก็ได้ แต่จะต้องเป็นข้อมูลของตัวเอง
อย่างเช่น เกรดคุณจะดูของเพื่อนไม่ได้ เพราะ
แต่ละคนมีสิทธิ์ของตัวเองเท่านั้น จะไปละเมิด
ความเป็นส่วนตัวของคนอื่นไม่ได้นะคะ
อันนี้ก็มันจะมีกฎหมายอยู่
เวลาเราจะดูข้อมูลใคร หรือโพสต์รูปใคร
หรือพิมพ์ถึงใคร มีกฎหมายกำหนดนะ
คะ ต่อมาเป็นในระดับแนวคิด
ก็จะดูแล้วว่าโครงสร้างฐานข้อมูลที่เราออกแบบ
ไว้ สำหรับการทำงานมันจะเป็นเหมือน
ตัวที่ไว้จัดการว่า User หรือผู้ใช้งานแต่ละคนนี่
เรียกเข้าเรียกข้อมูลอะไรเข้าไปดูเป็นการจัดการ
หลังจากนั้นก็จะทำหน้าที่เชื่อมต่อกับระบบภายใน
เพื่อดึงข้อมูลจากฐานข้อมูลไปแสดงผล
นะคะ การทำงานจะมีส่วนหลัก ๆ 3 ส่วนแบบนี้ ที่เราใช้งานกัน
แต่ถามว่า User จำเป็นต้องรู้แนวคิดเกี่ยวกับ
ระดับภายในไหม ไม่จำเป็นนะคะ
เขาก็จะดูแต่เฉพาะข้อมูลที่ตนเองสนใจในระดับภายนอก
นะคะ เหตุผลที่ว่า
ทำไมเราต้องแยกออกเป็น 3 ระดับ แยกออกจากกัน ไม่รวม
กันไว้นะคะ อันแรกก็คือผู้ใช้งานแต่ละคน
นี่ ก็อาจจะเข้าถึงข้อมูลเดียวกันได้ แต่
อาจจะเรียกดูผลไม่เหมือนกัน เหมือนบางคน
อย่างที่บอกค่ะ เข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรด
คนหนึ่งดูคนหนึ่งค้นหารายวิชา
หน้าตาแตกต่างกัน แต่ก็ใช้ฐานข้อมูล
เดียวกันนะคะ ผู้ใช้งานจะไม่สามารถ
เข้าถึงข้อมูลโดยตรงได้ โดยคุณจะไม่สามารถ
พิมพ์หรือเรียกใช้
ข้อมูลในฐานข้อมูลได้โดยตรง จะต้องผ่านระบ
บจัดการฐานข้อมูลเท่านั้นนะคะ Admin นะคะ
ในฐานข้อมูล ก็คือผู้บริหารฐานข้อมูล 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 ระดับนะคะ ระดับภายใน
ระดับภายนอก แล้วก็แนวคิด
แน่นอน มุมมองของผู้ใช้งานแต่ละคน
สามารถทำงานได้โดยอิสระแยกจากกัน
นะคะ อาจจะมีการ
นำข้อมูลหลาย ๆ ตารางมารวมกัน
นะคะ เพื่อให้สามารถ
ครอบคลุมในการเรียกดูข้อมูลได้ อาจจะมองใน
คนละมุมกันแต่ใช้
ฐานข้อมูลเดียวกันได้ แล้วก็ผู้ใช้งาน
ไม่จำเป็นต้องรู้ว่าข้อมูลที่เก็บไว้นี่ อยู่ตำแหน่งไหนของ
Harddisk ไม่จำเป็นต้องรู้ รู้แค่ว่าถ้า
อยากเรียกข้อมูลขึ้นมาดูได้ก็ต้องดูได้นะคะ
โดยที่แอดมินนี่ จะดูเองว่า
ที่ถูกเก็บไว้นี่จะต้องจัดเก็บไว้ตรงไหน แล้วก็เป็นคนที่
ดึงข้อมูลนั้น ๆ เข้ามาให้ผู้ใช้งานสามารถใช้งานได้
นะคะ
ประโยชน์ข้อต่อมา ก็คืออิสระที่
มีการเปลี่ยนแปลงข้อมูลหรือมีการเปลี่ยนแปลงโปรแกรม ทุกอย่างต้องไม่
ถูกได้รับผลกระทบนะคะ งานต้องยังสามารถ
เก็บได้หรือโปรแกรมก็ยังทำงานได้ถ้ามีการเปลี่ยนแปลง
ของข้อมูลนะคะ ไม่ใช่ว่า
มีคนหนึ่งเปลี่ยนนามสกุล ฐานข้อมูลทั้งมหาวิทยาลัย
ผิดพลาดหมดเลยอันนี้ไม่ได้นะคะ หรือ
บางคนเพิ่มที่อยู่กลายเป็นว่าที่อยู่เหมือนกัน
ทั้งมหาวิทยาลัยอย่างนี้ก็ไม่ได้ ข้อมูลต้องไม่
เหมือนกัน หรือว่าวันนี้อาจารย์บอกว่าฐานข้อ
มูลอาจารย์ อยากใช้ 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 รูปแบบเพื่อให้เรา
ตัดสินใจว่าเราจะออกแบบฐานข้อมูลแบบไหน
นะคะ อันแรกเลยเป็นแบบลำดับชั้น
นะคะ เป็นรูปแบบสถาปัตยกรรมฐานข้อมูล
ที่เก่าแก่ที่สุด ใช้มานานมาก
นะคะ โครงสร้างของข้อมูลหรือไฟล
์จะถูกจัดเก็บไว้จากบนลงล่างนะคะ ลักษณะคล้าย ๆ กับ
รากของต้นไม้นะคะ
โดยไฟล์ต่าง ๆ จะต้องมีข้อ
ก็คือเป็นถ้าเป็นภาษาอังกฤษก็คือ One Parent
เป็นข้อมูลเดียวเท่านั้น แล้วค่อย ๆ แตกสาขาออกไป
นะคะ ความถูกต้องในการเก็บ
ข้อมูลค่อนข้างมี
สูง การเปลี่ยนแปลงข้อมูลน้อยมาก แต่ปัจจุบันง
ไม่นิยมใช้เพราะมันยากต่อการไล่ลำดับของข้อมูล
นะคะ มันเวลาจะหาข้อมูลทีหนึ่ง
มันก็ต้องวิ่งไปข้างบนแล้วก็ลงมาข้างล่าง
ใหม่ ต้องเริ่มจากข้างบนแล้วค่อยมาข้างล่าง
สมมติตึกนี้มี 10 ชั้น
อยากไปชั้น 3 คุณจะขึ้นจากข้างล่าง
ไปชั้น 3 เลย
ทุกครั้งนะคะ แบบจำลองข้อมูลตัวนี้
ข้อมูลตัวนี้ถามว่าดีไหม ดี แต่ว่าทำงานช้า
นะคะ ลักษณะก็จะเป็นแบบนี้นะคะ เริ่มจาก
ตรงนี้กว่าจะลงมาถึงตรงนี้ได้
ต้องผ่านทุกชั้นนะคะ ถ้าเราอยากดูข้อมูล
ตรงนี้เลยนี่ ตรงนี้ที่อาจารย์วง ๆ ไว้นี่ เข้ามาตรงนี้เลยได้ไหม ไม่ได้
เพราะกฎของมัน คือ ต้องเริ่มจากบนสุดแล้วค่อยลงมาข้างล่าง
มันดีค่ะ แต่มันช้านะคะ
จะเป็นประมาณนี้นะคะ เป็น Root ลงมา
ตรงนี้ เหมือนข้อมูล
แบบนี้ค่ะ อันนี้คือแบบจำลองที่เรา
วาดกันจริง ๆ นะคะ สมมติอาจารย์อยากดูข้อมูลคนนี้
นะคะ ระดับล่างสุดเลย
อาจารย์เข้ามาดูข้อมูลคนนี้โดยตรงไม่ได้
อาจารย์จะต้องสั่งผ่านจากข้างบนลงมาตาม
ลำดับชั้นเรื่อย ๆ จนถึงตรงนี้ ถามว่าเราเป็นผู้ใช้งานจ
ริง ๆ นี่ เราอาจจะไม่รู้สึกว่ามันหาข้อมูลช้า
แต่ในทางการทำงานทางกายภาพของคอมพิวเตอร์นี่
มันทำงานโดยคิดเป็นหน่วยใหญ่ ๆ
ก็คือเป็นวินาที ยิ่งใช้เวลาหาข้อมูลนานเท่าไร
ก็ยิ่งมีค่าใช้จ่ายที่เพิ่มขึ้นตาม
ไปด้วยนะคะ เพราะฉะนั้น ในเหมือนในยุค
ปัจจุบันของคอมพิวเตอร์ทำไมทุกคนอยากได้คอมพิวเตอร์ที่เร็ว คิดเร็ว
นะคะ ถามว่า
อันนี้มันช้าจนเราทนไม่ได้ไหม
ถ้าข้อมูลมันมีแค่นี้มันทนได้ค่ะ แต่ถ้าข้อมูลมี
มากกว่านี้ค่ะ หลายลำดับชั้นกว่านี้ล่ะ แค่หาชื่อคน
อาจจะรอเป็นชั่วโมงก็ได้ ถ้าจำนวนข้อมูลมันเยอะ
นะคะ อันนี้ก็เป็นแบบจำลอง
ข้อมูลที่ถามว่าทำได้ดีค่ะ แต่ว่าอาจจะเสียเวลา
นะคะ
ข้อดีก็คือเข้าใจง่ายลักษณะ
เหมือนรากของต้นไม้อย่างที่บอกนะคะ ข้อมูลมีความสัมพันธ์แบบ 1
ต่อ มากกว่า 1
จริง ๆ อยากพูดภาษาอังกฤษมากกว่าเป็นความสัมพันธ์แบบ One-to-many แบบ
พ่อ 1 คน มีลูกได้หลายคนประมาณนี้
ความสามารถในการควบคุมความถูกต้องของข้อมูลมีสูง
นะคะ ข้อมูลที่เหมาะกับข้อมูลแบบจำลองแบบนี้
ควรน่าจะเป็นการเรียงลำดับอย่าง
ต่อเนื่องนะคะ ที่จะเหมาะที่จะใช้
แต่มันก็มีข้อเสียอย่างที่บอกนะคะ มันไม่สามารถรองรับข้อมูล
ที่มีความสัมพันธ์แบบ One-to-One One-to-Many, Many-to-Many
นะคะ 1 ต่อ 1, 1 ต่อหลายสิ่งอะไรพวกนี้ เดี๋ยวเราจะเรียนในบทถัด ๆ ไป หลายคนบอกมันคืออะไร
นะคะ เดี๋ยวจะอธิบายโดยละเอียดในบทถัด ๆ ไป
โดยแบบจำลองแบบลำดับชั้นนี่ ความยืดหยุ่นมันก็จะน้อย
นะคะ การปรับเปลี่ยนโครงสร้างมีความยุ่งยาก
เพราะทุกอย่างจะต้องเริ่มจากด้านบนถ้าเปลี่ยน
ตรงใดตรงหนึ่งต้องไล่ดูทั้งหมด เพราะมันอาจจะ
กระทบกับอีกส่วนอื่นก็ได้นะคะ
อย่างที่บอกค่ะ การค้นหาข้อมูลระดับล่าง ๆ
จะต้องทำตั้งแต่บนลงล่างลงมาเข้าไปหาโดยตรง
ไม่ได้นะคะ เสียเวลาแล้ว
ก็ทำให้การเขียนโปรแกรมในอนาคต
มันยาก เพราะทุกอย่างจะต้อง
วนกลับมาจุดเริ่มต้น วนกลับมาจุดเริ่มต้นเสียเวลามากนะคะ
มันก็เลยมีการพัฒนาแบบจำลองข้อมูลแบบเครือข่าย
ขึ้นมานะคะ โดยแบบจำลองข้อมูล
แบบเครือข่ายนี่ จะใช้ตัวชี้ตำแหน่งที่เรียกว่า
"Pointer" ก็คือใช้ลูกศร
นะคะ ใช้ลูกศร ก็จะมีการเชื่อมโยงความสัมพันธ์ของ
ข้อมูลในแต่ละแถวเข้า
ด้วยกันนะคะ ก็จะเป็น
ที่สามารถเชื่อมโยงกันได้นะคะ ข้อมูล
สามารถวิ่งผ่านกันได้ ไม่จำเป็นต้องจากบนลงล่าง
อาจจะเลี้ยวซ้ายเลี้ยวขวาได้แล้วตรงนี้นะคะ ลักษณะ
ของแบบจำลองเชิงเครือข่ายก็จะเป็นแบบนี้นะคะ
แต่ก่อนเราจะเริ่มจากบนลงล่างใช่ไหม คราวนี้ถ้าใบส่งของ
นี่ มันสามารถไปหาใครได้บ้าง ใบส่งของ 1 ใบ มีข้อมูลอะไร
บ้าง ก็คือรายการในใบส่งของ
ใครเป็นคนขาย ใครเป็นคนซื้อ
เขาจ่ายเงินแบบไหน อันนี้ไม่ต้องจากบนลงล่าง
ใช่ไหมคะ หรือจะดูว่าพนักงานวันนี้ขายของอะไร
ได้บ้าง ก็สามารถดูได้ ลูกค้า
คนนี้อยู่ในใบส่งของไหน ใครเป็นคนขาย
ลูกค้าจ่ายเงินอย่างไรก็ดูได้ ดูได้ทุกตำแหน่ง
โดยที่ไม่ต้องเริ่มจากบนลงล่าง สามารถเข้าไปดูได้โดยตรง
ข้อดีของแบบจำลองข้อมูลแบบเครือข่ายนะคะ ก็
ความซ้ำซ้อนในการเกิดขึ้นของข้อมูลเกิดขึ้น
ก็น้อยกว่าลำดับชั้น เรียกดูข้อมูลแบบไป-กลับได้ง่ายนะคะ เพราะว่า
การค้นหาข้อมูลทำได้ดีกว่า เพราะว่ามีตัวชี้ตำแหน่งหรือว่า Pointer
ในการเข้าถึงข้อมูลได้ในทันที
นะคะ แต่สิ่งที่มีข้อดีก็ต้องมีข้อเสีย
นะคะ ข้อเสีย ก็คือการป้องกันความปลอดภัย
ของข้อมูลมีน้อยนะคะ แล้ว
ก็สิ้นเปลืองตัวพื้นที่ในตัว
เก็บตัวชี้ตำแหน่ง ถ้าตารางข้อมูล
มันมีแค่นี้น่ะค่ะ มันก็ไม่เปลืองหรอก แต่ถ้าสมมติ
มันเป็นระดับห้างสรรพสินค้าล่ะ
ร้านค้าใหญ่ ๆ ข้อมูลเกิดขึ้น
แทบจะทุกนาที มันก็ต้องมี
ตัวชี้ตำแหน่งเก็บทุก ๆ ๆ ๆ สิ่งที่เกิดขึ้น
ทำไมถึงบอกว่าเปลืองไม่ได้เพราะว่าในเชิงธุรกิจ
อะไรที่เป็นสิ่งที่เราต้องจ่ายเพิ่ม เช่น จ่ายเงิน
ซื้อฮาร์ดดิสเพิ่ม เพื่อเก็บข้
อมูลเป็นต้น ทุกหมายความว่าคุณจะต้องลงทุกเพิ่มขึ้น
ในสิ่งที่อาจจะไม่ได้จำเป็นขนาดนั้นนะคะ
แล้วก็การเปลี่ยนแปลง
เชิงโครงสร้างก็อาจจะมีความยุ่งยาก เพราะ
หลาย ๆ อย่างมันเชื่อมต่อกันอยู่ เช่น อยู่ดี ๆ อาจารย์
บอกว่าอาจารย์อยากตัดใบส่งของออก แล้วพนักงาน
กับลูกค้าจะเชื่อมโยงกันอย่างไร ผ่านสินค้า
หรือ แล้วคุณไม่ต้องไปส่งของลูกค้าหรือ
นะคะ อันนี้ก็จะมีข้อ
สงสัยกับข้อที่ต้องมาคิดตาม
เหมือนกันว่าถ้าเราจะมีการเปลี่ยนแปลง
ตำแหน่งบางตำแหน่งสำหรับการชี้ตำแหน่ง
นะคะ มันต้องทำอย่างไร มันก็เลยมีการพัฒนาขึ้นมาอีก เป็น
แบบจำลองฐานข้อมูลเชิงสัมพันธ์นะคะ
ก็จะเป็นแบบจำลองข้อมูลที่
ได้รับความนิยมมากในปัจจุบัน
เพราะว่านำเสนอข้อมูลในลักษณะที่เป็นตาราง เข้าใจง่าย
มีแถว มีคอลัมน์นะคะ สามารถ
แสดงให้เห็นถึงความสัมพันธ์กับตารางอื่น ๆ ได้ง่าย
นะคะ แต่เราจะใช้สิ่งที่เรียกว่า "กุญแจ
" หรือ "Key" เพื่ออ้างอิงไปยังตารางอื่น ๆ
เหมือนอย่างนี้ อย่างตารางพนักงานขาย
อะไรพวกนี้ค่ะ เราไม่รู้ว่าเราจะอ้างอิงด้วยอะไร
ใช่ไหมคะ อย่างเช่น ใบส่งของอย่างนี้มีของ
อยู่ 5 อย่าง เราก็รู้ว่าแค่ 5 อย่าง
ไม่ได้มีจุดสังเกตใด ๆ ให้รู้
มันก็เลยมีการพัฒนาสิ่งที่เรียกว่า "Key" หรื
อกุญแจขึ้นมานะคะ โดยกุญแจ
ของคน 1 คนนี่ มันสามาถเป็นได้ทั้งกุญแจหลัก
แล้วก็คีย์รองได้ เดี๋ยวรายละเอียดของคีย์หลักคีย์รอง
คีย์ภายนอกนะคะ
จะอธิบายโดยละเอียดในบท
ถัด ๆ ไปนะคะ อันนี้เอาให้เห็นคร่าว ๆ ก่อน
อย่างเช่นนะคะ ตาราง
นี้
นะคะ อันแรกจะเป็นตารางเก็บข้อมูลเกี่ยวกับสาขา
สมมติว่าเราเปิดร้านค้ามีตารางเกี่ยวกับ
สาขาที่เราเปิดกับตารางพนักงาน ทำไม
รหัสสาขาอาจารย์ต้องขีดเส้นใต้ด้วย
ทำไมรหัสพนักงานก็ต้องขีดเส้นใต้ด้วย
ความสำคัญมีอยู่นะคะ ว่าไม่ใช่ว่าขีดเฉย ๆ
เพื่อเน้นให้พวกคุณอ่านไม่ใช่ มันแสดงให้เห็น
ว่าในตารางนี้ สิ่งใด
ที่ขีดเส้นใต้ ข้อนั้นข้อมูลในตารางนั้น
จะซ้ำกันไม่ได้ เราเรียกสิ่งนี้ว่า "คีย์หลัก"
นะคะ รหัส
พนักงานขีดเส้นใต้ ก็แสดงว่ารหัส
พนักงานแต่ละคนจะต้องไม่ซ้ำกัน เพราะรหั
สพนักงานเป็นคีย์หลัก
แต่ถ้าสังเกตดี ๆ ในตาราง
พนักงานทำไมมีรหัสสาขา
โผล่ขึ้นมาตรงนี้ด้วย แล้วทำไมไม่ขีดเส้น
ใต้ล่ะในตารางนี้ เพราะในตารางพนักงาน
รหัสสาขาไว้สำหรับ
เป็นคีย์นอกในการเชื่อมต่อกันว่า 2 ตาราง
นี้ มันมีความสัมพันธ์กันอย่างไร
นะคะ เดี๋ยวจะอธิบายอีกทีหนึ่ง
ว่าทำไมมันต้องมีความสัมพันธ์กันล่ะ เอาง่าย ๆ
เลยค่ะ พนักงานคนที่ 1 ถ้าอาจารย์
ไม่มีรหัสสาขาคุณจะรู้ไหมว่าพนักงานค
นนี้ทำงานที่สาขาไหน ไม่รู้เลย
หรืออาจจะบอกว่าสาขาอุดรธานีใคร
ทำงานบ้างรู้ไหม ถ้าไม่เชื่อมกับตารางพนักงานก็ไม่
รู้เลยนะคะ เดี๋ยวจะอธิบาย
อีกทีหนึ่งในบทของการวาดความสัมพันธ์นะคะ
ข้อดีของแบบจำลอง
ตารางอ่านง่ายเข้าใจง่ายเพราะนำ
เสนอในลักษณะของตาราง สามารถเลือกดู
สิ่งที่เราสนใจ ความซับซ้อนก็มีน้อย
เพราะว่าข้อมูลในเชิง 2 มิตินี่ เพราะมัน
มองมันมองง่ายความปลอดภัยค่อนข้างดีนะคะ
เพราะว่าผู้ใช้งานก็จะไม่รู้ว่าเรา
อยากเรียกใช้ข้อมูลอะไรได้บ้างนะคะ แล้วก็โครงสร้างของข้อมูล
แน่นอนถ้าเราเปลี่ยนโปรแกรมก็ยังสามารถทำงานได้
นะคะ แต่ข้อเสียของมันก็
มีนะคะ ก็คือค่าใช้จ่ายค่อนข้างสูง
นะคะ เพราะว่าทรัพยากร
ที่ใช้ในการจัดการนี่ ต้องมีสมรรถที่สูงนิดหนึ่ง
ประมวลผลต้องเร็วนะคะ
การปรับปรุงแก้ไขข้อมูลก็อาจจะมีความยุ่งยากเพราะว่า
ไม่รู้ว่าข้อมูลภายในที่เก็บจริง ๆ แล้วนี่
มันเป็นอย่างไร มีคนเดียวที่รู้ ก็คือคนจัดการฐานข้อมูลเท่านั้น
บางครั้งผู้ใช้งานนี่อาจจะเป็นผู้
ที่ต้องคีย์ข้อมูลเข้าไปก็อาจจะเริ่มงงแล้
วว่าฉันต้องกรอกข้อมูลอะไร ทำไมข้อมูลมันไม่ผ่าน
นะคะ อย่างเช่น
อาจจะไม่มีอันนี้มันก็จะเกี่ยวเนื่องไปถึงการออก
แบบระบบด้วย เหมือนบางคนใส่เลขบัตรประชาชนไม่ครบ
13 หลัก ถ้าผู้
ดูแลระบบออกแบบไม่ดี มันก็จะไม่มีแจ้งเตือนว่า
เลขบัตรประชาชนคุณน่ะ ไม่ครบ
คนใช้งานก็จะเริ่มงงแล้วว่า
ฉันผิดอะไรนะคะ มันตั้งแต่การออกแบบเลย
เพราะฉะนั้น คนดูแลระบบ
ก็ต้องมีการป้องกันด้วยว่าการแจ้งเตือนว่าเราผิดพลาดตรงไหน ข้อมูลจะเป็นอะไร
ได้บ้างนะคะ เหมือนการ
เก็บข้อมูลรูปภาพ รูปภาพต้องขนาดเท่าไร
ต้องเป็นภาพสีไหม หรือว่าต้องเป็นภาพขาวดำ
เท่านั้น จะต้องอธิบายให้ชัดเจนนะคะ เพราะว่าถ้า
มีการปรับปรุงข้อมูลทีหนึ่งนี่ ถ้าผู้ใช้งานไม่เข
้าใจมันก็จะไม่สามารถบันทึกลงฐานข้อมูลได้นะคะ
กับแบบจำลอง
ข้อมูลเชิงวัตถุนะคะ ส่วนมากจะเป็นการ
ออกแบบเพื่อเขียน
แอปพลิเคชันนะคะ มองทุกอย่างให้เป็น
วัตถุชนิดหนึ่งนะคะ มันก็จะมี
การห่อหุ้มวัตถุนั้น ๆ ไว้ด้วย
อะไรบ้างนะคะ อันนี้ก็พอ
เรียนปีสูงขึ้น ทุคนก็จะได้เรียนการ
ทำงานเชิงวัตถุมากขึ้นนะคะ อันนี้ปี 1 ก็
ฐานข้อมูลเชิงสัมพันธ์นี้ก็เต็มที่แล้ว
นะคะ อันนี้อาจารย์เอามาให้รู้จักเฉย ๆ
เพราะว่าถ้าเป็นฐานข้อมูลหรือการเขียนโปรแกรม
เชิงวัตถุใด ๆ ก็ตามมันจะ
ทำงานซับซ้อนได้ดีกว่ามันเหมาะกับการทำงาน
เกี่ยวกับภาพกราฟิก การเก็บวิดีโอเสียง
อย่างเช่น เราเล่น Facebook มีหมดเลย ทั้งภาพ
ทั้งวิดีโอ ทั้งเสียง ที่เราต้องเก็บข้อมูล
แล้วก็สามารถเอาข้อมูลที่มีอยู่
หรือนานมาแล้วนี่ เรียกกลับมาใช้ซ้ำได้
ง่ายกว่ารูปแบบจัดการฐานข้อมูลชนิดอื่น ๆ
แต่ข้อเสียของการทำงานเชิงวัตถุ
ก็คือจะต้องมีความชำนาญมาก ๆ แล้วก็
เข้าใจในการมองโปรแกรมหรือ
มองข้อมูลนะคะ มองทุกอย่างให้เป็นวัตถุชนิดหนึ่ง
อาจจะต้องใช้ประสบการณ์ในการจัดการกับ
ข้อมูลที่มีความซับซ้อนมาก ๆ
พอเราอายุเท่านี้อาจจะมองไม่เห็นความซับซ้อนข้อมู
ลนะคะ แต่ถ้าไปทำงานจริง ๆ นี่ ถ้าคุณต้องดูแลระบบใหญ่ ๆ ก็ตามนี่
ข้อมูลมันก็จะเริ่มซับซ้อนขึ้นมีส่วน
ย่อย ๆ เกิดขึ้นมากมายนะคะ
เพราะฉะนั้น ถ้าเราจะเป็นคนที่ออกแบบข้อมูล
เราจะต้องมองภาพโดยรวมทั้งหมด
ให้ได้นะคะ เหมือนที่อาจารย์ยกตัวอย่างตอนแรก
ครั้งหน้า ๆ ถ้า
มีให้วาดรูป อาจารย
์ก็จะเริ่มถามแล้วว่าเคยไปห้องสมุดไหม
นะคะ เคยยืมหนังสือหรือเปล่า การที่
เราจะยืมหนังสือห้องสมุดได้มันจะต้องเกี่ยวข้อง
กับอะไรบ้าง เช่น เราเป็นสมาชิกห้องสมุดไหม
นะคะ แล้วเราไปห้องสมุดเรา
ยืมหนังสือมันจะต้องมีข้อมูลหนังสือที่เราจะยืมไหม
นะคะ ชื่อหนังสืออะไร
หนังสือมีรหัสหนังสือหรือเปล่า ยืมได้กี่วั
นะคะ ใครเป็นคน
แต่งหนังสือเล่มนั้น นี่แค่การยืมหนังสือเล่มเดียว
ข้อมูลที่เกิดขึ้นก็มีเยอะแล้ว ใครเป็นคนยืม ใครเป็นคนแต่ง
ยืมได้กี่วัน หนังสือชื่ออะไร เลขหนังสืออะไร
นักศึกษาคนไหนเป็นคนยืมนะคะ อันนี้ก็
แค่ยืมหนังสือเฉย ๆ ใน
ข้อสอบหรือในชีวิตจริงพวกคุณจะต้องเจออะไร
ที่เยอะกว่านี้อีกเยอะนะคะ
กับอีกอันหนึ่งนะคะ เป็นแบบจำลองฐานข้อมูล
แบบหลายมิตินะคะ ใคร
เคยเล่นรูบิกลักษณะหลาย ๆ มิติจะเป็นแบบนั้นเลย
นะคะ เป็นก้อน ๆ นะคะ เช่น
การเก็บข้อมูลส่วนมากจะเกี่ยวกับเชิงธุรกิจ
เสียมากกว่านะคะ อาจจะเป็นเกี่ยวกับการเก็บข้อมูล
ผลิตภัณฑ์สินค้า อาจจะเกี่ยวข้องกับขายที่ไหน
เท่าไร มาประมวลผลเป็นตาราง เพราะว่า
มันจะทับซ้อนกันไปอีกเยอะมาก ขายอะไร
ขายที่ไหน ขายเมื่อไรใน
สินค้าชนิดเดียวนะคะ
เหมือนข้อมูลเวลาเราซื้อของวันหมดอายุเท่าไรห่
ส่วนประกอบอะไร หลาย ๆ ทุกอย่าง ข้อมูลทุกอย่างจะซ้อน
กันเป็นมิติ เวลาเราดูขนม 1 ห่อ ส่วนประกอบคืออะไร
นะคะ ผลิตที่ไหน ต้องบริโภค
วันที่เท่าไร ใครเป็นคนผลิต ใครเป็นคนนำ
ซ้อนทับกันจะเป็นหลาย ๆ มิตินะคะ ลักษณะ
คล้าย ๆ รูปทรงแบบนี้นะคะ แค่ของชิ้น
เดียวเก็บข้อมูลเยอะมากนะคะ
เป็นแบบนี้ จริง ๆ วันนี้ก็จะไม่มีอะไรมาก
เพราะว่าเป็นแค่แนะนำเพื่อปู
ทางในการวาดภาพแผนภาพ ER
ของเราในบทต่อไปนะคะ วันนี้ก็มีการบ้าน
เหมือนกันค่ะ 10 ข้อ เหมือนเดิมทำใส่
กระดาษรายงานส่งนะคะ เนื้อหาที่
จะตอบก็อยู่ในสไลด์อาจารย์หมดแล้วนะคะ
ก็ไม่น่าจะมีปัญหาอะไร
มีอะไรสงสัยไหมคะ เดี๋ยว
จะได้ปล่อยทำงาน
ไม่มีอย่างนั้นเดี๋ยวจะให้นั่งทำงาน
นะคะ ก็เนื้อหา
ประมาณนี้ค่ะ ล่ามวันนี้เนื้อหาไม่เยอะ
ขอบคุณมากนะคะวันนี้ โอเค ขอบคุณค่ะ [สิ้นสุดการถอดความ]