--- title: ฝึก PE กับ Bot ASR ห้องเรียนสกลฯ หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี 3 ม.ค. 66 มาริก subtitle: date: วันพฤหัสบดีที่ 5 มกราคม 2566 เวลา 09.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์เกวลี) มาแล้ว โอเคค่ะ เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7 หลังปีใหม่สไลด์จะไม่เยอะนะคะ นิดเดียว แล้วก็วันนี้ไม่มีการบ้าน ไม่มีการบ้าน เฉพาะอาทิตย์นี้เท่านั้นนะคะ ถือว่าให้ปีใหม่งวดนี้นะคะ จะเป็นเกี่ยวกับวิชาคณิตเชิงสัมพันธ์ก็จะเป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพีชคณิตเชิงสัมพันธ์หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล คือ การจัดการข้อมูลของเรา จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ที่เราสร้างตารางใหม่ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นกับข้อมูลในฐานข้อมูลของเรานะคะ ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิมกับแบบพิเศษ จะเป็นอย่างละ 4 ตัวนะคะ แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษ ก็คือ ที่นั่นนะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์นะคะ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่จะมีการกระทำนะคะ จะต้องมี Attribute คือ ในตารางจะต้องมีข้อมูลเกิดขึ้นเช่นตารางนักศึกษาก็จะมี Attribute หรือว่าข้อมูลที่เรามี ก็คือชื่อนามสกุล เป็นต้น การกระทำของกลุ่มที่เป็นแบบดั้งเดิมนะคะ จะมีอยู่ 4 อย่างมี product มียูเนี่ยน มีอินเตอร์เซค แล้วก็มี วันนี้จะต้องเป็นภาษาอังกฤษเ พราะว่าคำสั่งในระบบจัดการฐานข้อมูลก็จะเป็นภาษาอังกฤษมานี้นะคะ อันแรก Product นะคะเป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัด หรือทุกๆ Record ที่เรามี ที่สามารถเป็นไปได้โดยการจับคู่ผลคูณคาร์ทีเซียนนี่ ก็เป็นคณิตศาสตร์อย่างง่ายคำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า "Time" T-i-m-e-s รูปแบบของมัน ก็คือในกรอบสี่เหลี่ยมนะคะ ก็คือเอาเองกับบีมันมา x กันเดี๋ยวจะมีตัวอย่างให้ดู อย่างเช่นตัวอย่างนะคะการเขียนให้ดูก่อน เมื่อกี้ A กับ B นี่ A B ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลน่ะใช้คำสั่ง Time ก็คือเอาทุกตัวเป็นไปได้มาคูณกัน A x X B x Y ใช่ไหมคะ คำสั่งนี้จะง่ายนะคะ ก็คือจับคู่ทุกตัวที่เป็นไปได้นะคะ อันนี้จะยังง่ายอยู่ ยังอีกเหมือนในตัวอย่างค่ะ ตาราง A มีตาราง D สั่งให้มันคูณกัน ก็คือเป็น a time Bผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ A กับ B มันสามารถจับคู่กันได้คำสั่งนี้จริงๆคือ 3 x 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั่นเอง ถ้าจะเช็ก ในข้อสอบก็มีออกนะ นะคะ ยังง่ายอยู่ การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 Relation เพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถวในรูปแบบของยูเนี่ยนตามทฤษฎีของเซต คำสั่งก็คือยูเนี่ยนนะคะ a Union b คือเอาเองกับบีมารวมกัน อย่างเช่นตัวนี้ มีตาราง a กับตาราง Bทฤษฎีเซตของยูเนี่ยนนะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกัน อย่างข้อมูล s1 ตาราง A ก็มี ตาราง D ก็มี ตามทฤษฎียูเนี่ยนนะคะถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียว จะเห็นว่าจาก 4 Records ก็คือ 4 สีแถวข้อมูลนะคะแต่ว่าอันนี้กำลังเอกก็มีแต่รังบีก็มีมันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามายูเนี่ยนกันข้อมูลจาก 4 บรรทัดจะเหลือแค่ 3 บรรทัด เพราะว่า s1 มันมีทั้ง 2 ตาราง ก็คือ a b เลยยูเนี่ยนนะคะ ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว ต่อมา อินเตอร์เซกชัน ก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record ที่ปรากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นแหละ ในรูปแบบของ intersection ตามทฤษฎีของเซต คำสั่งก็คืออินเตอร์เซคนะคะ ให้ a อินเตอร์เซค b นะคะ ตัวอย่างตารางเดิมเลยค่ะ a กับ b ข้อมูลไหนที่ทับซ้อนกัน คือ ข้อมูล s1 มันมีทั้ง 2 ตาราง ตาราง a และตาราง b เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้นนะคะ เพราะฉะนั้นคำสั่ง a อินเตอร์เซค b จะมีผลลัพธ์แค่ 1 Record เท่านั้น ก็คือทฤษฎีของเซตนะคะ ต่อมา ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้นๆที่ปรากฏอยู่ในตารางนึ่งแปลตาราง 1 ไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตาราง 1 คำสั่งที่ใช้คือคำสั่งไว้นะแปลเป็นภาษาไทยคือเครื่องหมายลบนั่นเอง ไม่เอานะคะ อย่างเช่น ที่อยู่ในเอแต่ไม่อยู่ใน b เมื่อคืนเหมือนตัวที่ทำไฮไลท์สีเหลืองไว้ ตารางเดิมเลยค่ะให้คำสั่ง a ไมนัส b อะไรที่อยู่ใน aไม่อยู่ในบีอันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง b เพราะฉะนั้น ไม่นะบีว่าจะเป็น S4 ในทางกลับกันค่ะ b ไมนัส a ก็คืออยู่ใน b แต่ไม่อยู่ใน ฟa อยู่ดีๆ ไม่ได้ s1 อยู่ในเองเหมือนกันในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหน เราจะเอาข้อมูลมาไว้ข้างหน้า ถ้าอยู่ใน a ไม่อยู่ใน b จะเป็นแบบนี้จะเขียนแบบนี้นะคะแต่ถ้าอยู่ในบีไม่อยู่ใน a ก็จะเขียนขึ้นต้นด้วย b นำหน้าแบบนี้นะคะ ไม่ใช่ว่าทุกตารางจะชื่อ a กับ b นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำชื่อตารางอะไร อย่างเช่น ตาราง Student Student แล้วก็ไมนัส Address ก็ได้นะคะอยู่ในตาราง student แต่ไม่อยู่ในร้าน Address ว่าไปนะคะต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะเป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไปนะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากัน Attribute คืออะไร คือตัวนี้ คอลัมน์นะคะถ้าเป็นแบบ Credit analyst เนี่ยคอลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากันเท่านั้นถ้าเป็น Special คือคอลัมน์หรือ Attribute ไม่จำเป็นจะต้องมีจำนวนเท่ากันนะคะ ไม่จำเป็น ซึ่งคำสั่งพวกนี้นี่จะถูกเรียกใช้บ่อย เพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่รูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากัน ไม่เท่ากันนั่นแหละแอตทริบิวต์ของทั้ง 2 ตารางจะถูกนำมาใช้จะต้องมีเงื่อนไขต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน ก็คือชื่อคอลัมน์เดียวกัน อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมีอีกตานึงมี 8 คอลัมน์ แต่จะต้องมีสิ่งที่เราจะเอามาดำเนินการเนี่ยชื่อคอลัมน์จะต้องเหมือนกันนะคะคำสั่งจะมีอยู่ 4 คำสั่งด้วยกันอันแรกคำสั่ง regedit หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL เราจะใช้คำสั่งเรียกว่า Select นะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ จะต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดูนะคะ ซึ่งการกระทำเพื่อแสดงข้อมูลใน Record ของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุ เงื่อนไขที่ใช้จะใช้คำว่า "where" นะคะ เช่น a where x op อันนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำโปรแกรมจริงๆอ่ะนักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้างในการจัดการฐานข้อมูลตัวนะคะ ตัวอย่างเดิมค่ะ ตาราง a กับ b ในตัวอย่างอาจารย์อาจจะเห็นว่าเอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน บอกให้คำสั่ง Select หรือ นะคะจะต้องมาคู่กับคำว่าเสมออย่างเช่นขึ้นต้นด้วยดี ก็คือในตารางดีให้ดูที่เงื่อนไขซิตี้ซิตี้ตรงนี้แปลว่าชื่อเมืองนะคะในตาราง B ค่าของ Column City อันไหนที่มีค่าเท่ากับชัยนาท เราก็ดูเลยค่ะ กำลัง B City ชัยนาทนะคะพอดีว่า City เท่ากับชัยนาท ผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของ S2 ทั้งหมดนะคะ เพราะว่าเงื่อนไขในตาราง B จังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาทนะคะ เราต้องยกมาทั้งหมดมาแสดงผล เป็น Project นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถว โดยเลือกมาเพียงแค่บางคอลัมน์ เช่น อาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ก็ได้ แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูล คือ มันจะเป็นคำสั่งเกี่ยวกับการทำ Project นั่นเองนะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไขนะคะ ตารางเดิมค่ะ ตารางเดิม คำสั่งในวงเล็บ SNAME กับ AGE นะคะ ก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้นอยู่ใน Column Sname และคอลัมน์ผลลัพธ์ที่ได้แสดงผลแค่นี้จากตอนแรกมันมีแค่ 14 ใช่ไหมคะ 1 2 3 อาจารย์ให้แสดงผลแค่ SNAME กับ AGE เท่านั้น อันนี้คือการทํางานของคําสั่ง projec t เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจจะใช้คำสั่ง project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะนี่แค่ตัวอย่างคร่าว ๆ นะ หรืออย่างเช่น ผลลัพธ์ทำไมมันโชว์แค่รหัส S1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่งคือดูในตาราง B นะคะ โดยค่าของคอลัมน์ City มีค่าเท่ากับ Bangkok แล้วให้แสดงผลเฉพาะ S# เท่านั้น คือ อยากรู้แค่รหัสมีเมืองที่อยู่ในเมืองกรุงเทพฯ นะคะ ก็โชว์แค่ S1 เท่านั้น จากเมื่อก่อนนี้เรียกว่า Where City กลับ Bangkok ปกติแล้วมันแสดงข้อมูลทุกๆคนใช่ไหมคะ แต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้นก็สามารถทำได้นะคะ อันนี้คือความสามารถของคำสั่ง Project ต่อมาคำสั่งจอยค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป โดยที่กำหนดค่าคอลัมน์หรือว่า Attribute ที่เหมือนกัน อาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้นะคะ แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกัน โดเมนของข้อมูลต้องเท่ากัน รูปแบบของคำสั่งก็คือ A จอย B มาดูตัวอย่างกัน จอยนะคะ จะคล้าย ๆ กับยูเนี่ยนนะคะ แต่เงื่อนไข คือ จะต้องมีโดเมนหรือว่า Column ที่เท่ากันถึงจะจอยได้นะคะ อย่างตัวนี้มี 2 คอลัมน์ มี 2 คอลัมน์รายการข้อมูลที่ทับซ้อนกันอยู่ในรูปแบบคล้าย ๆ กับคำสั่งอยู่นี่นะคะ เช่นตัวนี้คำสั่งจอยมีอะไรที่เหมือนกัน มี City ใช่ไหมคะ A จอย B มี 6 คอลัมน์นะคะ City เหมือนกัน แต่เนื่องจาก Attribute ที่มีคำว่า "City" เหมือนกันนี่ มันจะต้องดูพิจารณาใน Record ของรหัสด้วยนะคะ เพราะฉะนั้นถ้ามันเกินมา มันเกินแล้วต้องทำข้อมูลซ้ำให้เกิดขึ้น อันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงาน คือ เติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ Record นะคะมีค่า Attribute ก็คือที่เท่ากัน เดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลยตอบมาจะเป็นการแสดงข้อมูลจาก 2 Relation โดยที่ Relation หรือว่าทั้ง 2 ตารางเนี่ยมีแอตทริบิวต์หรือรอบมีคอลัมน์เนี่ยอย่างน้อย 1 คอลัมน์ที่เหมือนกันกดรับจากคอลัมน์นะคะ จากตารางที่มีจำนวนอธิบดีมากกว่านี่จะถูกจับคู่นะะ กับอีกคอลัมน์หนึ่ง ที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่า คำสั่งรูปแบบก็คือ ฤ b y by Bมันจะเป็นคล้าย ๆ กับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะต้องเป็นซับเซตของตัวตั้ง ก็คือในตัวตั้งมี A ไหม มี มี B ไหม มี ไหมมีรับทุกตัวคือตัวที่แมทกับตัวหารอะไรบ้างที่อยู่ใน AAXYZมีมีแค่ X C มีแค่ x เพราะฉะนั้น สิ่งที่เอา ABC หารได้ครบทุกตัวมีแค่ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมดนะคะ เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้ หลักการนี้จะใช้ตอนที่เราค้นหาข้อมูล อย่างเช่น หาใน Google นะคะ อาจารย์อยากได้กระเป๋าสีแดงมี 6 ล้อลาก เงื่อนไขกระเป๋าสีแดง มีล้อ 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่ฉันต้องการแค่อย่างเดียวเท่านั้น เป็นต้นนะคะ เป็นต้น อย่างเช่นตัวอย่าง มีข้อมูลนะคะ ในตาราง A มีข้อมูลตามนี้ ตาราง B มีคอลัมน์เดียวคือตัวนี้ P2 ให้ ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้าง ของ A P2 อันนี้ปี 2 เพราะฉะนั้น ผลลัพธ์ที่ได้จะมีแค่สองรักคอร์ดเท่านั้นที่มี P2 อยู่ด้วย อันนี้ก็จะยังตรงตามเงื่อนไขนะคะ ถ้าเพิ่มอีกนะคะ มี P1 P2 P3 P6 มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรง มีที่ตรงแค่ S1 เท่านั้นที่เอา B ทุกตัวหารได้ลงตัว อันคือหลักการนะคะ การหารนั่นแหละ ต้องหาลงตัวนะคะ วันนี้จะประมาณนี้เพราะว่าเดี๋ยวอาจจะให้เช็คโปรแกรมค่ะ เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็กในห้องแล็บว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ เหนื่อยนิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็คโปรแกรมก่อนสัปดาห์หน้าอาจจะเริ่มใช้โปรแกรมอาทิตย์นี้ก็เลยเดี๋ยวมหาสมุทรเท่านี้เดี๋ยวเรามาเช็กดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามค่ะ กับขอบคุณค่ะถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็คห้องแลปก่อนค่ะ ขอบคุณมากค่ะ