--- title: หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี วันที่ 22 พ.ย. 2565 นาโน subtitle: date: วันพฤหัสบดีที่ 20 เมษายน 2566 เวลา 13.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) โอเคค่ะ วันนี้จะเป็นเนื้อหาบทที่ 2 นะคะจะเกี่ยวข้องกับสถาปัตยกรรมของฐานข้อมูล แล้วก็ทฤษฎีเกี่ยวกับแบบจำลองข้อมูลนะคะ ข้อมูลที่เราใช้อยู่ปัจจุบันนี่บางคนก็ไม่รู้ว่าทำไมต้องเก็บ เหมือนนักศึกษา 1 คนทำไมต้องถามด้วยล่ะว่าเราชื่ออะไรนามสกุลอะไร เรียนจบที่ไหนมานะคะ เกรดเฉลี่ยตอนจบม 6 หรือจบสายอาชีพ ได้เกรดเฉลี่ยเท่าไร เทอมที่แล้วเราเรียนไปกี่วิชานะคะ ได้คะแนนเท่าไรได้เกรดเท่าไรทำไมต้องเก็บเท่านี้นะคะ ทุกอย่างมันก็จะมีเหตุมีผลเพราะว่าข้อมูลทุกรูปแบบนี่ มันก็จะมีเนื้อหาความสำคัญ ขอชุดข้อมูลนั้นๆอยู่ นะคะ โดยที่เราจะเรียกสิ่งนั้นว่าแนวคิดเกี่ยวกับการออกแบบฐานข้อมูลหรือว่าสถาปัตยกรรมของฐานข้อมูลนะคะ มันก็จะเป็น ข้อกำหนดแล้วก็ข้อตกลงรวมถึงขอบเขตหรืออาจจะเป็นกรอบความคิดนะคะ ในการบรรยายว่าฐานข้อมูลนั้นๆควรจะเป็นอย่างไรนะคะ โครงสร้างก็คือข้อมูลที่เราจะเก็บมีอะไรบ้างส่วนประกอบที่เอามาประกอบกันจนเป็นระบบฐานข้อมูลมีอะไรนะคะ โดยที่สถาปัตยกรรมฐานข้อมูลนี่มันมีส่วนประกอบสำคัญอยู่ 3 ส่วนนะคะ เมื่อคืนในตัวของสถาปัตยกรรมของระบบเองนะคะแล้วก็ความเป็นอิสระของข้อมูลนะคะ เดี๋ยวจะอธิบายว่าแต่ละอันคืออะไรนะคะ ภาษาที่ใช้ในการจัดการฐานข้อมูลนะคะ ถามอย่างนี้จะต้องทำงานร่วมกัน โดยสถาปัตยกรรมของฐานข้อมูลหนี้ มันจะเป็นเหมือนกับ ขอบเขตนะคะหรือกรอบ ถ้าเป็นภาษา ทางเชิงวิชาการเรียกว่ากรอบที่ใช้ประโยชน์ในการบรรยายว่าทำไมเราถึงสร้างฐานข้อมูลแบบนี้ ทำไมเราถึงเก็บข้อมูลแบบนี้ แล้วในฐานข้อมูลเรามีโครงสร้างในการเก็บข้อมูลแบบไหนบ้างนะคะ ซึ่งหลักๆแล้วนี่ โครงสร้างที่ใช้ในการสร้างฐานข้อมูลมันจะมีอยู่ 3 ระดับนะคะ คือระดับภายนอกระดับภายในแล้วก็ระดับแนวคิด อาจารย์จะอธิบายไปทีละอย่างทีละอย่างนะคะ ความเป็นอิสระของฐานข้อมูลคืออะไรนะคะ ก็คือการที่ผู้ใช้งานสามารถเปลี่ยนแปลงข้อมูล อาจจะเป็นในระดับของการออกแบบฐานข้อมูล หรือระดับ ถึงขั้นการเก็บข้อมูลแล้วก็ได้ โดยที่ถ้ามีการเปลี่ยนแปลงข้อมูลหรือเปลี่ยนแปลงรูปแบบการจัดเก็บข้อมูล โปรแกรมที่ใช้งาน จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนะคะ โปรแกรมก็อยู่ส่วนของโปรแกรมข้อมูลก็อยู่ส่วนของข้อมูลจะแยกจากกันนะคะ โดยที่ผู้ใช้งานจะมองเห็นแค่ว่า การเก็บข้อมูลระดับภายนอกก็คือเราเก็บข้อมูลอะไรบ้างนะคะ เหมือนเวลาคุณอยากเล่น tiktok อยากเล่น facebook อยากเล่นอินสตาแกรม เขาก็จะถามว่าคุณชื่ออะไรมีอีเมลหรือเปล่ามีเบอร์โทรศัพท์ไหม มีรูปโปรไฟล์เป็นรูปอะไร อันนี้คือข้อมูลระดับภายนอก ที่ผู้ใช้งานอย่างเราๆนี่เป็นผู้ให้ งานไปแล้วก็เป็นผู้ที่เห็นเองว่าข้อมูลที่กรอกลงไปมีอะไรบ้างนะคะ แต่ถามว่าเราอยากเปลี่ยนแปลงได้ไหมว่า นอกจากรูปภาพ อยากให้เขาขอเกี่ยวกับอะไรดีล่ะ สถานะการเรียนเราจะไปบอกเขาว่าอยากบอกอยากให้เพิ่มเมนูตรงนี้ได้ไหม รอทำไม่ได้นะคะ เพราะอันนั้นเป็นระดับโครงสร้างระดับแนวคิดระดับภายในซึ่งผู้ใช้งานธรรมดาจะแก้ไขไม่ได้นะคะ โดยที่ เพราะฉะนั้นนี่สมมุติว่ามีการเปลี่ยนแปลงข้อมูลเราเรียกว่าการเปลี่ยนแปลงข้อมูลระดับที่ต่ำ ข้อมูลส่วนตัวเรานี่แหละ ถ้าเราเปลี่ยนแปลงข้อมูลของเราเองจะไม่กระทบกับคนอื่นรวมถึงไม่ได้กระทบกับ Facebook ไม่ได้กระทบกับ Instagram ติดต่อเขาก็ยังใช้งานปกติได้ ถึงแม้เขาบอกว่าเปลี่ยนแปลงเปลี่ยนแปลงรูปโปรไฟล์ ถามว่าโปรแกรมจะพังไหมใหม่ นะคะ อันนี้คือการเปลี่ยนแปลงระดับต่ำก็คือเป็นการเปลี่ยนแปลงของผู้ใช้งานโดยตรงนะคะ ความเป็นอิสระของข้อมูลเชิงตรรกะก็คือการเปลี่ยนแปลงมุมมอง ของผู้ใช้งาน อย่างเช่นคุณอาจจะ อัพรูปเป็น 4 รูปนะคะ คุณ น่าจะสลับตำแหน่งนะคะ ย้ายจากรูปสุดท้ายเป็นรูปที่ 1 ถามว่าโปรแกรมนั้นจะพังไหม ไม่พังนะคะ เพราะมันถือว่าเป็นการเปลี่ยนแปลงภายนอก ไม่ได้เปลี่ยนแปลงโค้ดโปรแกรม ไม่ได้บอกให้ ผู้ดูแลระบบลบ เมนูตรงนี้ออกไม่ใช่นะคะ อันนี้ก็คือถ้าผู้ใช้งานอยากเปลี่ยนแปลงข้อมูลส่วนตัวของตัวเองอย่างนี้ก็ใช้งานได้เลยนะคะ ไม่กระทบกับคนอื่นไม่กระทบกับระบบโดยรวมนะคะ รวมถึงความเป็นอิสระของข้อมูลเชิงกายภาพนะคะ ถ้าสมมุติว่าวันหนึ่ง Facebook ย้ายเครื่องคอมพิวเตอร์ในการเก็บข้อมูล คนใช้งาน ถามว่าย้ายจากเครื่องหนึ่งไปอีกเครื่องหนึ่งถามว่าเรายังใช้ Facebook ได้ไหม ใช้ได้มันไม่กระทบกับเรานะคะ มันถือว่าเป็นโครงสร้างของข้อมูลระดับภายใน ก็คือผู้ให้บริการเขาอาจจะมีการปรับเปลี่ยนย้ายจากเครื่อง a ไปยังเครื่อง B ผู้ใช้งานก็ยังสามารถใช้งานทำงานได้อย่างปกติไม่ได้รู้สึกถึงความผิดปกติใดๆอาจจะมีช่วงที่แบบ Restart เครื่องของตัวเซิร์ฟเวอร์ของเขาบ้างอะไรอย่างนี้นะคะ แม่ถามว่า Facebook เราหายไปไหนไม่หายนะคะ อันนี้คือตัวอย่างคร่าวๆว่าเชิงตรรกะเป็นอย่างไร เชิงกายภาพเป็นอย่างไร ต่อมาภาษาหลักของระบบจัดการฐานข้อมูลนะคะ ว่าจะมีอยู่ 3 ภาษาหลักๆนะคะ อันนี้หมายถึงว่าภาษาเชิงโครงสร้างที่ใช้นะคะ ไม่ได้หมายถึงชื่อภาษาทางโปรแกรม อันแรกคือภาษาสำหรับนิยามข้อมูลนะคะ ก็จะเป็นภาษาที่ใช้ในการกำหนดโครงสร้างของฐานข้อมูล นะคะว่าระดับแนวคิดคือคุณวางแผนไว้ว่าอย่างไร อย่างเช่นอาจารย์อาจจะ พอกูเรียนปีสูงขึ้นจะต้องได้ทำโปรเจค อาจจะต้องเขียน โปรแกรมเป็นของตัวเอง สมมุติ ว่าทำโปรเจคเป็นร้านขายหนังสือ ในร้านขายหนังสือร้านหนึ่งเราต้องเก็บอะไรบ้างเราต้องเขียนให้ได้นะคะ สิ่งนี้เราจะเรียกว่าระดับแนวคิดเราจะมาให้ความหมายว่า ในฐานข้อมูลเรานี่ ระหว่างผู้ใช้งานสมาชิกเจ้าของร้าน สามารถทำอะไรได้บ้างสิ่งเหล่านี้จะเรียกว่าวิวนะคะหรือว่ามุมมองของผู้ใช้งานแต่ละคน เอาง่ายๆยกตัวอย่างอีกแล้ว Facebook Facebook ในหน้าที่คุณดูกับหน้าที่เพื่อนดูอาจจะไม่เหมือนกัน ใน Facebook เราสามารถกำหนดได้ว่ารูปนี้ฉันจะเก็บไว้ดูคนเดียว หรือรูปนี้จะให้เพื่อนดูได้ รูปนี้จะให้ใครก็ได้มาดู ไม่ได้ปิดกั้นอย่างนี้ก็มี อันนี้คือการกำหนดสถานะของมุมมองในการดูข้อมูลของเรา เราจะกำหนดตั้งแต่การกำหนดโครงสร้างของฐานข้อมูลเลยว่าผู้ใช้งานแต่ละคน ดูข้อมูลส่วนไหนได้บ้างนะคะ ตอบมาเป็นภาษาในการจัดการฐานข้อมูล อันนี้เป็นภาษาเชิง programming ซึ่งไว้ใช้สำหรับ จัดการฐานข้อมูลภายในฐานข้อมูลนะคะ ก็จะเป็นตั้งแต่การค้นหาข้อมูลการเพิ่มการลบการแก้ไขข้อมูลในฐานข้อมูล อันนี้ก็จะสามารถทำได้ตามสิทธิ์ของผู้ใช้งานแต่ละคน บางคนค้นหาได้แต่เพิ่มไม่ได้ บางคนเพิ่มได้แต่ห้ามลบ อันนี้ก็เป็นคำสั่ง ที่ใช้ภายในฐานข้อมูล ตอบมาเป็นภาษาที่ใช้ควบคุมนะคะ มันจะเป็นภาษาที่เอาไว้สำหรับการควบคุมการถูกต้องของข้อมูล เช่นอะไรบ้าง อย่างเช่นอาจารย์ให้คุณกรอกชื่อ นะคะ บอกชื่อ แต่ว่านักศึกษาบางคนลืมเปลี่ยนภาษา หรือลืมเปลี่ยนปุ่ม หรือเปิดปุ่มตัวเลขไว้ กลายเป็นว่าพิมพ์ชื่อตัวเองเป็นตัวเลข ภาษาระดับควบคุมก็คือมันจะเป็นการตรวจสอบว่าข้อมูลที่นักศึกษาใส่มา ถูกหรือผิด เช่นอาจารย์กำหนดให้กรอกได้เฉพาะตัวหนังสือเท่านั้น ใส่ตัวเลขไม่ได้นะคะ หรือการเกิดภาวะพร้อมกัน อย่างเช่น จองตั๋วคอนเสิร์ต ดังมาก เข้ามาจองพร้อมกันสัก 50 คน เราจะมีการจัดการคน 50 คนอย่างไร นะคะให้สามารถทำงานได้อันนี้คือการเกิดภาวะพร้อมกันก็คือ เข้ามาใช้งานระบบพร้อมๆกันทั้งหมดนะคะ โดยสถาปัตยกรรมฐานข้อมูลมันก็จะมีการศึกษาโครงสร้างองค์ประกอบหลักของระบบนะคะ ทั้งฐานข้อมูลหน้าที่ของแต่ละองค์ประกอบแต่ละคนแต่ละผู้ใช้งานนะคะ รวมถึงการเขียนโปรแกรมเพื่อสื่อสารแล้วก็ติดต่อส่วนอื่นๆ นะคะ ในระบบฐานข้อมูลอาจจะไม่ได้มีแค่โปรแกรมเดียวที่ทำงานนะคะอาทิตย์ที่แล้วเคยบอกแล้วว่า ระบบบัญชีระบบบุคคลระบบการเงินก็ใช้ฐานข้อมูลร่วมกันนะคะ โดยที่ถ้าสมมุติว่า เรามีการเปลี่ยนแปลงโปรแกรมนะคะ โครงสร้างของฐานข้อมูลจะยังอยู่นะคะ ข้อมูลจะไม่หายไปไหน เพราะเราเปลี่ยนแค่ตัวโปรแกรมเราไม่ได้เปลี่ยนทั้งโครงสร้างนะคะถ้าสมมุติว่าเปลี่ยนโปรแกรมใหม่ก็จะมีการเชื่อมต่อที่ทำให้ข้อมูลมันสามารถทำงานได้นะคะ โดยระบบฐานข้อมูลนี่มันก็จะเป็นการเอาข้อมูลที่มีอยู่ในองค์กรหรือข้อมูลที่เราจะเพิ่มเติมนะคะ ที่มีการเกี่ยวข้องกันมารวมไว้ที่เดียวกันนะคะ โดยผู้ใช้งานในฐานข้อมูลจะมองมุมมอง หรือวิว ที่แตกต่างกันไปตามชนิดของการใช้งานนะคะ โดยที่ ผู้ใช้งานไม่จำเป็นต้องรู้ว่าถ้าเราสมมุติว่าเป็นผู้ใช้งานทั่วไป เขาจำเป็นจะต้องรู้ไหมว่าโปรแกรมเมอร์จะต้องเขียนโปรแกรมอย่างไรโปรแกรมเมอร์ใช้วิธีอะไรในการแสดงภาพ โปรแกรมเมอร์ทำอย่างไรให้เราดู YouTube ได้ อันนี้ไม่จำเป็นต้องรู้ นะคะ โดยที่สิ่งของเหล่านี้สามารถซ่อนรายละเอียดไว้ได้ แต่ถามว่าให้แสดงออกมาได้ไหมแสดงได้ ใส่ User หรือผู้ใช้งานไม่จำเป็นต้องรู้ เพราะฉะนั้นเราก็ซ่อนไว้ได้นะคะ ยกเว้นบางอย่างให้เป็นภาษาโปรแกรมเหมือนเวลาเราใช้ Google Chrome หาข้อมูล เราก็สามารถดูได้ว่าโค้ชโปรแกรมที่ผู้ดูแลระบบเขาเขียนไว้ เขาเขียนไว้ว่าอย่างไรบ้างก็ดูได้นะคะ แต่ถามว่า พ่อแม่เราจะอยากรู้ไหมว่า Google เขียนโปรแกรมอย่างไรก็คงไม่นะคะ ไม่จำเป็นต้องเปิดดูแต่ถามว่าเปิดดูได้ไหมบางส่วนก็เปิดดูได้นะคะ โดยสถาปัตยกรรมของฐานข้อมูลมีอยู่ 3 ระดับนะคะ เหมือนที่พูดไปตอนต้นก็คือมีระดับภายนอกระดับ แนวคิดแล้วก็ระดับภายในนะคะมี 3 ระดับโดยแสดงเป็นแผนภาพแบบนี้นะคะ เดี๋ยวขีดเส้นให้ด้วย อันนี้ระดับภายนอกนะคะ เดี๋ยวเติมเส้นแบบนี้ระดับภายนอกก็คือเราอาจจะมีผู้ใช้งาน 1 คน 2 คนหรือหลายคน แต่ละคนอาจจะใช้ระบบเดียวกัน แต่หน้าจอที่ดูไม่เหมือนกันก็ได้ นะคะ อย่างเช่นนักศึกษาไปใช้ระบบ ทะเบียน คนหนึ่งดูเกรด คนที่ 2 พิมพ์ใบลงทะเบียน คนที่ 3 อาจจะค้นหาคำอธิบายรายวิชา ถามว่าเขาใช้โปรแกรมเดียวกันไหมระบบเดียวกันไหม ใช่ระบบเดียวกัน แต่เขาอาจจะทำงานไม่เหมือนกันก็ได้นะคะ คุณอยากดูตรงไหนก็ได้นะคะหรืออยากดู เหมือนกันก็ได้นะคะแต่ต้องเป็นข้อมูลของตัวเองอย่างเช่นเกรดคุณจะดูของเพื่อนไม่ได้เพราะแต่ละคนมีสิทธิ์ของตนเองเท่านั้น นะคะ จะไปละเมิดความเป็นส่วนตัวของคนอื่นไม่ได้นะคะ อันนี้ก็มันจะมีกฎหมายอยู่เวลาเราจะดูข้อมูลใคร หรือโพสต์รูปใคร หรือพิมพ์ถึงใคร มีกฎหมายกำหนดนะคะ ต่อมา เป็นในระดับแนวคิด ก็จะดูแล้วว่าโครงสร้างฐานข้อมูลที่เราออกแบบไว้ สำหรับการทำงาน มันจะเป็นเหมือนตัวที่ไว้จัดการว่า User หรือผู้ใช้งานแต่ละคน เรียกข้อมูลอะไรขึ้นไปดู ตัวจัดการหลังจากนั้นจะทำหน้าที่เชื่อมต่อกับระบบภายใน เพื่อดึงข้อมูลจากฐานข้อมูลไปแสดงผลนะคะ การทำงานจะมีส่วนหลักๆ 3 ส่วนแบบนี้นะคะ ที่เราใช้งานกัน แต่ถามว่า User จำเป็นต้องรู้เกี่ยวกับแนวคิดระดับภายในไหม ไม่จำเป็นนะคะ เขาก็จะดูแต่เฉพาะข้อมูลที่ตนเองสนใจระดับภายนอกเท่านั้นนะคะ เหตุผลที่ว่าทำไมเราต้องแยกออกเป็น 3 ระดับแยกออกจากกัน ทำไมเราไม่รวมกันไว้นะคะอันแรกก็คือผู้ใช้งานแต่ละคน ก็อาจจะเข้าถึงข้อมูลตัวเดียวกันได้ แต่อาจจะเรียกดูผลไม่เหมือนกัน เหมือนบางคนอย่างที่บอกค่ะเข้าไปใช้ระบบทะเบียน คนหนึ่งดูเกรดคนหนึ่งลงทะเบียน คนหนึ่งค้นหาคำอธิบายรายวิชา หน้าตาแตกต่างกัน แต่ก็ใช้ฐานข้อมูลเดียวกัน นะคะ ผู้ใช้งานจะไม่สามารถเข้าถึงข้อมูลโดยตรงได้ ก็คือคุณจะไม่สามารถพิมพ์ หรือเรียกใช้ ข้อมูลในฐานข้อมูลได้โดยตรง จะต้องผ่านระบบจัดการฐานข้อมูลเท่านั้นนะคะ Admin นะคะ ในฐานข้อมูลก็คือผู้บริหารฐานข้อมูลหรือว่า database Admin นี่ ตัวย่อก็คือ dba สามารถแก้ไขข้อมูลฐานข้อมูลได้ เข้าไปดูข้อมูลที่เก็บไว้ได้นะคะ แต่จะต้องไม่สร้างผลกระทบให้กับผู้ใช้งาน ก็คือตอนที่คุณอาจจะ ปรับปรุงเปลี่ยนแปลงฐานข้อมูลอยู่ผู้ใช้งานก็ยังต้องสามารถทำงานได้ตามปกตินะคะ โครงสร้างระดับภายในฐานข้อมูลนะคะ จะไม่ได้รับผลกระทบถ้าคุณมีการเปลี่ยนแปลงโปรแกรมซึ่งจะอยู่ในลักษณะของเชิงกายภาพนะคะ ถ้าเปลี่ยนโปรแกรมปุ๊บเปลี่ยนจากโปรแกรมเอไปใช้โปรแกรมบี ข้อมูลจะต้องไม่หายไปไหนอันนี้คือเหตุผลนะคะที่สามส่วนนี้เราจำเป็นจะต้องแยกออกจากกันนะคะ มาดูรายละเอียด เพิ่มเติมนะคะสำหรับระดับภายใน ก็จะเป็นระดับที่จัดเก็บข้อมูลอยู่ในลักษณะโครงสร้างที่เราออกแบบไว้แล้วนะคะ ถ้าเราเก็บข้อมูลได้ดี มันก็จะมีผลต่อความเร็วแล้วก็ประสิทธิภาพในการเลือกใช้ข้อมูลนะคะในระบบภายใน มันก็จะเป็นการดูว่าเรามีการสำรองข้อมูลหรือเปล่า รอเก็บข้อมูลอย่างไร นะคะส่วนมากข้อมูลในฐานข้อมูล อาจจะเก็บ ข้อมูลในฮาร์ดดิสก็ได้มีการทำงานร่วมกับระบบปฏิบัติการ สามารถเขียน รวมกันได้กับระบบปฏิบัติการด้วยทำไมถึงบอกว่าการจัดเก็บข้อมูลที่ดี มีผลต่อความเร็วแล้วก็ ประสิทธิภาพ การเข้าข้อมูลนะคะ เวลาเราเก็บข้อมูลเราจะเห็นได้ว่าทำไม เราต้องเรียงลำดับตามรหัสนักศึกษาด้วย เอา 207 ขึ้นก่อน 201 ได้ไหม ได้ แต่ถามว่าเวลาเราค้นหาข้อมูลถ้าเราเรียงตามลำดับแน่นอนเราค้นหาข้อมูลเร็วกว่า เราก็มาตกลงกันเลยว่าเราจะเรียงลำดับนักศึกษาในห้องนี้อย่างไรอย่างเช่น ซึ่งมาตรฐานทั่วไปก็จะเรียงตามรหัสนักศึกษาจากน้อยไปมากใช่ไหมคะ แต่ถ้าเราไม่มีรหัสนักศึกษาล่ะ โดยหลักทั่วไป ก็จะเรียงตามกอไก่ถึงฮอนกฮูก ใช่ไหมคะ แล้วแต่ว่าเราทำข้อตกลงอย่างไรหรือวางฐานข้อมูลก็จะบอกว่าเรียงตามอายุอายุใครมากขึ้นก่อน เหลืออะไรอีกล่ะ เพศชายขึ้นก่อนเพศหญิงตามมา คนเกิดวันอาทิตย์ขึ้นก่อน หรือคนเกิดวันจันทร์ขึ้นก่อนแล้วแต่โครงสร้างที่เรากำหนดไว้ ทำไม เพื่ออะไรเพื่อให้มาถามข้อมูลได้เร็วเพราะเรารู้แล้วเกณฑ์จัดการข้อมูลคืออะไร เพราะว่าข้อมูลที่เก็บอยู่ในฮาร์ดดิสก์ มันไม่เรียน 12345 ให้เรานะคะ มันจะเรียน แบบกระจัดกระจาย อยู่ตรงไหนก็ได้ที่มันมีพื้นที่ว่าง แต่มันจะใช้เรียกแทนตำแหน่ง อย่างเช่นสินสมุทร อาจารย์กำหนดให้เป็น 001 001 ในฮาร์ดดิสก์อาจจะเก็บตรงไหนก็ได้แต่ถ้าสมมุติอาจารย์ไม่ใส่ 001 ล่ะใส่คำว่าสินสมุทร มันจะหาข้อมูลเร็วขึ้นไหม ค่าแทนตัวเลขเรียงตามลำดับมันก็จะหาข้อมูลได้เร็วขึ้น เหมือนอาจารย์เรียงลำดับนักศึกษาจากน้อยไปหามาก เวลาเช็คชื่ออาจารย์ก็เช็คชื่อได้เร็วขึ้นว่าคนไหนหายไป หรือห้องนี้นักศึกษาไม่เยอะ มันก็ง่าย แต่บางวิชาอาจารย์สอน 50-60 คนขึ้นไป จำไม่ได้จำไม่ไหวนะคะ การเรียงลำดับราคาจากน้อยไปหามากก็ทำให้อาจารย์เช็คได้ง่ายขึ้น ว่าใครมาใครขาดนะคะ เพราะฉะนั้นอีกอย่างหนึ่งก็คือเวลาเรา ทำกิจกรรมใดๆก็ตามทำไมเวลาเหมือนสอบบรรจุก็ได้ค่ะสอบบรรจุครู ทำไมเขาถึงไม่เรียงลำดับตามคะแนน เพราะมันก็จะมีข้อสังเกต หรือข้อสงสัยเกิดขึ้น เขาก็เลยตัดปัญหาโดยการเรียงลำดับตามเลขที่สมัคร เพื่อให้มันค้นหาข้อมูลของผู้สมัครคนนั้นได้ง่ายแล้วก็ประกาศผลได้ง่ายนะคะ แต่ว่าแต่ก็แล้วแต่ถ้ามีผู้ดูแลระบบเขาอยากดูข้อมูลแบบไหนก็แล้วแต่สิ่งที่เขาจะเรียกขึ้นมาดูนะคะ อันนี้คือระดับ ภายใน ต่อมาระดับแนวคิด ก็จะเป็นโครงสร้างของฐานข้อมูลโดยรวม เราต้องดูว่าเราจะเก็บข้อมูลอะไรในฐานข้อมูลของเรา แต่ละข้อมูล มีส่วนอะไรที่มีความสัมพันธ์เกี่ยวข้องกันบ้างนะคะ โดยการกระทำ ใดๆก็ตามที่เกิดขึ้นในระดับแนวคิดนะคะ จะทำอยู่บนโครงสร้างฐานข้อมูลที่กำหนดไว้แล้วเท่านั้นนะคะ ในระดับแนวคิด จะมีอะไรเกิดขึ้นบ้างนะคะ อย่างเช่น จำนวนเอนทิตี้ เอนทิตี้ก็คือ ส่วนของคอลัมน์ นะคะ อย่างเช่นนักศึกษา 1 คน จะมีทั้งหมด เอนทิตี้ที่เข้ามาเกี่ยวข้องนะคะ entity ของอาจารย์ เป็นคอลัมน์อาจารย์เป็นตารางของอาจารย์ ตารางนักศึกษาตารางรายวิชา มาเกี่ยวข้องกัน ใน 1 ตารางจะประกอบไปด้วยแอตทริบิวต์คือตัวนี้นะคะ คือคอลัมน์ นักศึกษา 1 คนจะมีกี่ SCB จำง่ายๆเลย อาจจะมีประมาณ สมมุติว่าจะมีประมาณ 3 คอลัมน์ 3 แอตทริบิวต์ คอลัมน์ที่ 1 คอลัมน์นักศึกษา คอลัมน์ที่ 2 ชื่อนามสกุล คอลัมน์ที่ 3 อาจจะเป็นที่อยู่หรือเบอร์โทรศัพท์หรือชื่อเล่นก็ได้ นะคะ โดยแต่ละตารางหรือแต่ละ entity จะต้องมีความสัมพันธ์ระหว่างการหรือว่า relationship เช่นทำไมอาจารย์ตารางกับอาจารย์นักศึกษาถึงต้องมีความสัมพันธ์กัน เช่นอาจารย์สอนวิชานี้ในใบลงทะเบียนเรียนของทุกคนมีไหม แล้วลงทะเบียนวิชานี้มีชื่ออาจารย์ไหมมี อาจารย์สามารถดูได้เหมือนกันว่า วิชานี้ใครสามารถลงทะเบียนได้บ้าง อาจารย์กับนักศึกษาต้องมีความเกี่ยวข้องกันอย่างน้อย 3 ตารางอาจารย์ตารางก็เก็บข้อมูลตารางอาจารย์นักศึกษาก็เก็บข้อมูลนักศึกษา อาจารย์ลงทะเบียนเรียนก็รู้แล้วว่า อาจารย์ สอนวิชาอะไรบ้างนักศึกษาลงทะเบียนวิชาอะไรบ้าง อันนี้ก็เป็นความสัมพันธ์แบบง่ายๆนะคะ อันนี้ก็เหมือนกัน ระดับภายนอกจะเป็นส่วนที่ผู้ใช้งานเรียกดูข้อมูล นะคะ ผู้ใช้งานแต่ละคนจะดูข้อมูล เหมือนกันหรือต่างกันก็ได้นะคะโดยที่ฐานข้อมูลสามารถมีมุมมอง หรือเค้าร่างภายนอกได้หลายรูปแบบ แล้วแต่นะคะ อย่างเช่นตัวอย่างนี้ มีผู้ใช้งาน 3 คน นะคะ เรียกดูข้อมูลในฐานข้อมูลเดียวกันแต่อาจจะเป็นคนละตาราง เพราะว่าในฐานข้อมูล 1 ฐานข้อมูลหนี้ อาจจะมีตารางได้เยอะมากนะคะ แต่ทุกตารางจะต้องมีความสัมพันธ์กัน อยาก User หรือผู้ใช้งานคนที่ A อาจจะเรียกดูแค่ชื่อหรือเบอร์โทรศัพท์เท่านั้นก็ได้ นะคะ User หรือผู้ใช้งานคนที่บี อาจจะขอดูข้อมูลรหัส นักศึกษา ชื่อที่อยู่เบอร์โทรศัพท์ก็ได้แล้วแต่ คนที่ซี อาจจะไม่ได้อยากดูข้อมูลของทุกคนอาจจะดูว่าเทอมนี้มีวิชาอะไรเปิดสอนบ้าง รหัสวิชาอะไรชื่อวิชาอะไร มีกี่หน่วยกิตก็ได้ จากในฐานข้อมูลเดียวกันแต่แค่เอามาจากคนละตารางแค่นั้นเองนะคะ ประโยชน์ของสถาปัตยกรรมทั้ง 3 ระดับนะคะ ระดับภายในระดับภายนอกแล้วก็ระดับแนวคิด แน่นอนกูมองของผู้ใช้งานแต่ละคนก็สามารถทำงานได้อิสระแยกจากกัน นะคะ อาจจะมีการ นำข้อมูลหลายๆตารางมารวมกันนะคะ เพื่อให้สามารถครอบคลุมในการเรียกดูข้อมูลได้ อาจจะมองคนละ มุมกัน แต่ใช้ฐานข้อมูลเดียวกันได้ แล้วก็ผู้ใช้งานไม่จำเป็นต้องรู้ว่าข้อมูลที่ถูกเก็บไว้อยู่ตำแหน่งไหนของฮาร์ดดิสก์ ไม่จำเป็นต้องรู้ รู้แค่ว่าฉันอยากเรียกคืนข้อมูลขึ้นมาดูได้ก็ต้องดูได้โดยที่ Admin จะเป็นคนดูแลเองว่าข้อมูลที่เราเก็บ ที่ถูกเก็บไว้ จะต้องจัดเก็บอยู่ตรงไหน แล้วก็เป็นคนที่ดึงข้อมูลนั้นๆเข้ามาให้ผู้ใช้งานสามารถใช้งานได้นะคะ ประโยชน์ข้อต่อมาก็คือความเป็นอิสระของข้อมูลก็คือ ถ้ามีการเปลี่ยนแปลงข้อมูลหรือมีการเปลี่ยนแปลงโปรแกรมทุกอย่างจะต้องไม่ได้รับผลกระทบ งานต้องยังสามารถเก็บได้หรือโปรแกรมก็ยังสามารถทำงานได้ถ้ามีการเปลี่ยนแปลงของข้อมูลนะคะ ไม่ใช่ว่ามีคนหนึ่งเปลี่ยนนามสกุล ฐานข้อมูลทางมหาวิทยาลัยผิดพลาดหมดเลยอันนี้ไม่ได้นะคะ หรือบางคนเพิ่มที่อยู่ กลายเป็นว่าที่อยู่เหมือนกันทั้งมหาวิทยาลัยอย่างนี้ก็ไม่ได้นะคะ ข้อมูลต้องเป็นอิสระจากกันหรือว่าวันนี้อาจารย์บอกว่าฐานข้อมูลอาจารย์อยากใช้ Microsoft Access วันดีคืนดีบางคนอยากบอกว่าเปลี่ยนไปใช้ โปรแกรมอื่นได้ไหม เปลี่ยนได้นะคะ ไม่ใช่ว่าใช้โปรแกรมเดียวไปตลอด ไม่ได้ ถ้าสมมุติมีโปรแกรมที่ดีกว่าแล้วอยากเปลี่ยนก็ต้องเปลี่ยนได้ โดยที่ข้อมูลเราไม่หายอันนี้คือความเป็นอิสระของข้อมูล อันนี้พูดไปแล้วนะคะ อันนี้พูดไปแล้วนะ เดี๋ยวนะ ปิ้ง อันนี้พูดไปแล้วตอบมาแบบจำลองข้อมูลนะคะ แบบจำลองข้อมูลที่ก็เป็น ไว้ใช้สำหรับการอธิบาย แล้วใช้สำหรับการจัดการข้อมูลที่เกิดขึ้นในฐานข้อมูล ความสัมพันธ์ระหว่างข้อมูลของแต่ละตารางจะเกิดขึ้นอย่างไรบ้าง ข้อบังคับของข้อมูลในระบบที่จะมีการเพิ่มลบเปลี่ยนแปลงแก้ไขใดๆ จะต้องมีกฎเกณฑ์อะไรบ้างนะคะ ทั้งนี้ก็เพื่อใช้สำหรับการ เป็นข้อตกลงแล้วก็ข้อสื่อสารระหว่างคนออกแบบฐานข้อมูล กับคนที่ใช้งานฐานข้อมูลให้เข้าใจตรงกันนะคะ ว่าถ้าเรามีระบบนี้ควรจะสามารถทำอะไรได้บ้างทำอะไรไม่ได้ เรียกดูข้อมูลแบบไหนแก้ไขข้อมูลอย่างไร ทำแบบไหนถึงจะบันทึกข้อมูลได้ ถ้าอยากลบรหัสนักศึกษาออกได้ไหม อยากเป็นนักศึกษาแต่ไม่มีรหัสนักศึกษาได้ไหม ไม่ได้ก็ต้องเข้าใจตรงกันนะคะ อันแรกนะคะ แบบจำลองข้อมูลจะมีอยู่ 2 ประเภทประเภทแรกก็คือเป็นแบบจำลองที่ใช้การบรรยาย บรรยายโดยรวมทั้งหมดของระบบว่า มีอะไรบ้าง นะคะ ซึ่งจะนำเสนอในลักษณะของการวาดภาพ โดยที่ในฐานข้อมูล 1 ฐานข้อมูลนี้ จะหมายถึง การเก็บตารางกี่ตารางนะคะ ก็คือเอ็นติตี้นี่แหละนะคะ กลับตารางแต่ละตารางมีความสัมพันธ์อะไรบ้างเราต้องวาดรูปโยงเส้น ขีดเส้นใต้ ตีกรอบ เดี๋ยวอันนี้จะเป็นในครั้งถัดไปจะเป็นการวาดรูป เดี๋ยวถ้าวันไหนจะวาดรูปอาจารย์จะให้ถือกระดาษ A4 มาด้วยนะคะ ถ้าใครเคยเรียนสมัยมัธยม ใครวาดมายแมพ วาดแผนภาพ การวาดในฐานข้อมูลก็จะไม่ค่อยต่างกันค่ะ แต่ว่าสัญลักษณ์แต่ละสัญลักษณ์ที่เอามาใช้ในการวาดรูปของเรา มันมีความหมายนะคะ ไม่ใช่อยากวาดอยากใส่วงรีอยากใส่สี่เหลี่ยมอยากใส่สามเหลี่ยมอยากใส่วงกลม นึกอยากใส่อะไรก็ใส่ไม่ได้นะคะ มันจะมีกรดอยู่ โดยการวาดแบบนี้นี่หรือการสร้างแบบจำลองแบบนี้นี่ จะนำเสนอเพื่อให้เกิดความเข้าใจตรงกันระหว่างคนออกแบบกับคนใช้งานให้เห็นภาพคร่าวๆว่า ระบบที่เราจะทำขึ้นมามันทำงานอย่างไรนะคะ เก็บข้อมูลแบบไหนใช้ข้อมูลอะไรได้บ้างนะคะ ต่อมาจะเป็นแบบจำลองที่ใช้เพื่ออธิบายโครงสร้างของฐานข้อมูลนะคะ