--- title: ฝึก PE กับ Bot ASR ห้องเรียนสกลฯ หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี 3 ม.ค. 66 นาโน subtitle: date: วันพฤหัสบดีที่ 5 มกราคม 2566 เวลา 09.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์เกวลี) โอเคค่ะ เดี๋ยวเริ่มเลยละกันนะคะ บทนี้จะเป็นบทที่ 7 หลังปีใหม่ สไลด์จะไม่เยอะนะคะ นิดเดียวแล้วก็วันนี้ไม่มีการบ้านมีการบ้านเฉพาะอาทิตย์นี้เท่านั้นนะคะถึงให้ปีใหม่ บทนี้นะคะ จะเป็นเกี่ยวกับพีชคณิตเชิงสัมพันธ์ ก็จะเป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพีชคณิตเชิงสัมพันธ์ นะคะ หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล คือการการข้อมูลของเราจะเป็นการจัดการข้อมูลของเรา จะเป็นกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ที่เราสร้างตารางใหม่นะคะ มันจะเป็นแบบจำลองของการกระทำต่างๆที่อาจจะเกิดขึ้นข้อมูลในฐานข้อมูลของเรา นะคะ ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิม กับแบบพิเศษ จะเป็นอย่างละ 4 ตัวนะคะ แบบดั้งเดิม ก่อนนะคะ ภาษาอังกฤษ ก็คือ Traditional นะคะก็จะเป็นการกระทำที่เกิดขึ้นกับตาราง หรือความสัมพันธ์ โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์นะคะ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่ จะมีการกระทำนะคะ จะต้องมี Attribute คือในตารางจะต้องมีข้อมูลเกิดขึ้นเช่นตารางนักศึกษา ก็จะมี Attribute หรือว่าข้อมูลที่เรามีก็คือชื่อนามสกุลเป็นต้นนะคะ การกระทำของกลุ่มที่เป็นแบบดั้งเดิมนะคะ จะมีอยู่ 4 อย่าง มี product มี Union Intersection อินเตอร์เซคแล้วก็มีประเด็น วันนี้จะต้องเป็นภาษาอังกฤษเพราะว่าคำสั่งในระบบจัดการฐานข้อมูลก็จะเป็นภาษาอังกฤษประมาณนี้นะคะ อันแรก Product นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุกๆบรรทัด หรือทุกๆ Record ที่เรามี ที่สามารถเป็นไปได้โดยการจับคู่ แบบผลคูณ นี่ก็เป็นคณิตศาสตร์อย่างง่ายคำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า Timecimbs รูปแบบของมันก็คือในกรอบสี่เหลี่ยมนะคะก็คือเอา a กับบb มันมาx กันเดี๋ยวจะมีตัวอย่างให้ดู อย่างเช่นตัวอย่างนะคะ เดี๋ยวอาจารย์เขียนให้ดูก่อนเมื่อกี้a กับ b นี่ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Time ก็คือเอาทุกตัวเป็นไปได้มาคูณกัน a x x a x y ใช่ไหมคะ b x x b x y B x b yfzy คำสั่งนี้จริงๆจับคู่ทุกตัวที่เป็นไปได้ นะคะ อันนี้จะยังง่ายอยู่ ยังอีกเหมือนในตัวอย่างค่ะมีตาราง A มีตาราง B นะคะ สั่งให้มันคูณกัน ก็คือเป็น a time Bผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้คำสั่งนี้จริงๆคือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั่นเองนะคะ ถ้าจะเช็ก ในข้อสอบก็มีออกนะนะคะยังๆอยู่การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือน กันก็จะเป็นการรวมกันของข้อมูล 2 ตารางห รือว่า 2 รีเลชัน นะคะ เพื่อแสดงข้อมูลทุกๆเรื่องของเรื่องคือทุกๆแถว ในรูปแบบของ UNION ตามทฤษฎีของเซตคำสั่งก็คือยูเนี่ยนนะคะa Union b คือเอา a กับ b มารวมกัน อย่างเช่น ตัวนี้มีตาราง a กับตาราง B ทฤษฎีเซตของยูเนียนนะคะจะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกันข้อมูล อย่างข้อมูล s1 ตาราง a ก็มี ตาราง ดีก็มีตามทฤษฎียูเนี่ยนนะคะถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวจะเห็นว่าจากสี Records ก็คือสีแถวข้อมูลนะคะแต่ว่าอันเนี้ยกำลังเอกก็มีแต่รังบีก็มีมันซ้ำกัน เราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามายูเนียนกัน ข้อมูลจาก 4 บรรทัด จะเหลือแค่ 3 บรรทัด เพราะว่า s1 มันอยู่ทั้ง 2 ตารางก็คือ a b เลยยูเนียนนะคะ ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว ต่อมา อินเตอร์เซกชัน ก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record ที่ปรากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นแหละในรูปแบบของ intersection ตามทฤษฎีของเซต คำสั่ง ก็คือ INTERSECT ให้ A INTERSECT B ตัวอย่างจากตารางเดิมเลยค่ะ A กับ B ข้อมูลไหน ที่ทับซ้อนกัน คือ ข้อมูล s1 มันมีทั้ง 2 ตาราง ตาราง a กับตาราง b เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้น เพราะฉะนั้น คำสั่ง A INTERSECT B จะมีผลลัพธ์แค่ Record เท่านั้น ก็คือทฤษฎีของเซตนะคะ ต่อมา Difference ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้นๆที่ปรากฏอยู่ในตารางหนึ่ง แต่อีกตารางกหนึ่งไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตาราง 1 คำสั่งที่ใช้คือคำสั่งไว้นะ MINUS แปลเป็นภาษาไทยคือเครื่องหมายลบแล้วนี่ไม่เอาอย่างเช่น A MINUS B ที่อยู่ในเอแต่ไม่อยู่ใน Bเมื่อคืนเหมือนตัวที่ทำไฮไลท์สีเหลืองไว้นะ ตารางเดิมเลยค่ะ ให้คำสั่ง A MINUS B อะไรที่อยู่ A แต่ไม่อยู่ใน B อันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้นไม่นะบีว่าจะเป็น S4 ในทางกลับกันค่ะ B MINUS A ก็คืออยู่ในบีแต่ไม่อยู่ใน A อยู่ดีๆS2F1 ไม่ได้ s1 อยู่ใน a เหมือนกัน ในทางกลับกันจะเป็นแบบนี้นะค ะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหน เราจะเอาข้อมูลในวันข้างหน้านะคะ ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้ จะเขียนแบบนี้นะคะแต่ถ้าอยู่ในบีไม่อยู่ใน a ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้นะคะ ไม่ใช่ว่าทุกตารางจะชื่อ a กับb นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำมันชื่อตารางอะไร อย่างเช่นตาราง Student student แล้วก็ MINUS address ก็ได้นะคะอยู่ในตาราง student แต่ไม่อยู่ในร้าน Address ว่าไปนะคะ ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไปนะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากัน Attribute คืออะไร คือตัวนี้ นะคะถ้าเป็นแบบ Credit analyst เนีคอลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากันเท่านั้นถ้าเป็น Special คือคอลัมน์หรือ seniorไม่จำเป็นจะต้องมีจำนวนเท่ากัน นะคะ ไม่จำเป็น ซึ่งคำสั่งพวกนี้เนี่ยจะถูกเรียกใช้บ่อย เพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่ มีรูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากันไม่ คือ คอลัมน์เท่ากันนั่นแหละ Attribute ของทั้ง 2 ตารางจะถูกนำมาใช้จะต้องมีเงื่อนไขต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน ก็คือชื่อคอลัมน์เดียวกัน อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้น อาจจะมี 10 คอลัมน์ อีกตารางหนึ่ง 8 ค่ำแปลต้องมีสิ่งที่เราจะเอามาดำเนินการเนี่ยชื่อคอลัมน์จะต้องเหมือนกันนะคะคำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน อันแรกคำสั่งRestrict หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL เราจะใช้คำสั่งเรียกว่า Select นะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ จะต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดู นะคะ ซึ่งการกระทำเพื่อแสดงข้อมูล ในเรคคอร์ดของตารางนั้นๆจะต้องตรงตามเงื่อนไขที่ระบุนะคะ เงื่อนไขที่ใช้จะใช้คำว่า WHERE นะคะ เช่น A WHERE X operator Y อันนี้เป็นต้นนะคะ แต่เดี๋ยวตอนที่เราทำโปรแกรมจริงๆนี่ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้ อันนี้เป็นแค่การเกริ่นก่อนเฉยๆ นะคะ ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้างในการจัดการฐานข้อมูล นะคะ ตัวอย่างเดิมค่ะ ตาราง a กับ B นะคะ ในตัวอย่างอาจารย์อาจจะเห็นว่าเอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน บอกให้คำสั่ง Select หรือ Restrict นะคะจะต้องมาคู่กับคำว่า WHERE เสมออย่างเช่นขึ้นต้นด้วยดีก็คือในตารางดี ให้ดูที่เงื่อนไข city city ตี้ตรงนี้แปลว่าชื่อเมืองนะคะในตาราง Bค่าของ Column Cityอันไหนที่มีค่าเท่ากับชัยนาท ขอดูหน่อยค่ะ ตาราง B City ชัยนาทนะคะ พอพิมพ์ City เท่ากับชัยนาทผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของที่ s2 ทั้งหมดนะคะ เงื่อนไขในตารางบีจังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาท เราต้องยกมาทั้งหมดมาแสดงผล ต่อมา เป็น Project นะคะ ก็จะเป็นการเลือกข้อมูลทุกๆแถว โดยเลือกมาเพียงแค่บางคอลัมน์ เช่น อาจารย์อยากดูแค่รหัสนักศึกษากับชื่อก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ ก็ได้ แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูล คือ มันจะเป็นคำสั่งเกี่ยวกับการทำ Projectนั่นเองนะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไข นะคะ ตารางเดิมค่ะ ตารางเดิม คำสั่งใน a วงเล็บ sname กับเอดส์นะคะก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้นอยู่ใน Column snameและคอลัมน์ ผลลัพธ์ที่ได้แสดงผลแค่นี้ จากตอนแรกมันมีแค่ มันมี 4 คอลัมน์ใช่ไหมคะ 1 2 3อาจารย์ให้แสดงผลแค่เฟซ nameเท่านั้นนี่คือการทํางานของคําสั่ง project นะคะ เผื่อจะมีเป็นร้อย ๆ คอลัมน์ มาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจจะใช้คำสั่ง projectนะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ อันนี้แค่ตัวอย่างคร่าวๆก่อนนะ หรืออย่างเช่น ทำไมผลลัพธ์ทำไมมันโชว์แค่รหัส s1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่ง คือ ดูในตาราง b นะคะ โดยค่าของคอลัมน์ City มีค่าเท่ากับ bangkok แล้วให้แสดงผลเฉพาะ เท่านั้นกูอยากรู้แค่รหัสมีเมืองที่อยู่ในเมืองกรุงเทพฯนะคะก็ส่งแค่ s1 เท่านั้น จากเมื่อก่อนนี้เรียกว่า Where City เท่ากับ Bangkok ปกติแล้วมันแสดงข้อมูลทุกๆคนใช่ไหมคะแต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้ นก็สามารถทำได้ อันนี้คือความสามารถของคำสั่ง project ต่อมา คำสั่ง Joinค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไปโดยที่กำหนดค่าคอลัมน์หรือว่า Attribute อยู่ที่เหมือนกัน อาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้นะคะแต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกัน โดเมนของข้อมูลต้องเท่ากัน รูปแบบคำสั่งก็คือ A JOIN B มาดูตัวอย่างกัน Join นะคะ จะคล้ายๆกับ union แต่เงินไขคือจะต้องมีโดเมนหรือว่า Column ที่เท่ากันถึงจะจอยได้นะคะอย่างตัวนี้มี 2 คอลัมน์ มี 2 คอลัมน์ รายการข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้ายๆกับคำสั่งอยู่เนียนะคะ อย่างเช่นตัวนี้คำสั่ง join มีอะไรที่เหมือน กัน มี Cityใช่ไหมคะ อันนี้มี 6 คอลัมน์นะคะ City เหมือนกัน แต่เนื่องจาก Attribute ที่มีคำว่า City เหมือนกันนี่ มันจะต้องดูพิจารณาในเรคอร์ดของรหัสด้วย เพราะฉะนั้นถ้ามันเกินมามันเกินแล้วต้องทำข้อมูลซ้ำ ให้เกิดขึ้น อันนี้ก็จะเป็นอีกรูปแบบหนึ่ง ของการทำงาน คือ เติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้นี่ ทุกๆ Record นะคะมีค่า Attribute ก็คือที่เท่ากัน เดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลย ต่อมาจะเป็นการแสดงข้อมูลจาก 2 รีเลชัน โดยที่รีเลชันหรือว่าทั้งสองตารางนี่ มี Attribute หรือรอบมีคอลัมน์นี่ อย่างน้อย 1 คอลัมน์ที่เหมือนกันกดรับจากคอลัมน์นะคะจากตารางที่มีจำนวน Attribute มากกว่านี่ จะถูกจับคู่นะคะ กับอีกคอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่า คำสั่งรูปแบบก็คือ A DIVIDED BY B มันจะเป็นคล้ายๆกับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะ จะต้องเป็น Sub set ของตัวตั้งนะคะ ก็คือในตัวตั้งมี a ไหม มี มี b ไหมมี มี มี c ไหมมีรับทุกตัวคือตัวที่แมทกับตัวหารอะไรบ้างที่อยู่ใน A นะคะ A มี XYZ b มีแค่ X C มีแค่ xเพราะฉะนั้นสิ่งที่เอา ABC หารได้ครบทุกตัวมีแค่ x ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมด นะคะ เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้น ที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้ หลักการนี้จะใช้ตอนที่เราค้นหาข้อมูลใน google นะอย่างเช่นในอาจารย์อยากได้กระเป๋าสีแดงมี 6 ล้อลากเงื่อนไขกระเป๋าสีแดง มีล้อ 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่อาจารย์ต้องการแค่อย่างเดียวเท่านั้น เป็นต้นนะคะ เป็นต้น เช่น ตัวอย่าง มีข้อมูลนะคะ ในตาราง A มีข้อมูลตามนี้ ตาราง B มีคอลัมน์เดียว คือตัวนี้p2 ให้ A DIVIDED BY B ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้างของเอ อันนี้ p 2 อันนี้ p 2 เพราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่สองเรคอร์ดเท่านั้นที่มี P2 อยู่ด้วย อันนี้ก็จะยังตรงตามเงื่อนไข นะคะ ถ้าเพิ่มอีกนะคะ B p 1 p2 p3 p 6 S2 มีแค่นี้ ไม่ตรง มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรงมีที่ตรง มีแค่ s1 เท่านั้นที่เอา b ทุกตัวหารไม่ลงตัวI คือหลักการนะคะปัญหานั่นล่ะ ต้องหาลงตัวนะคะวันนี้จะประมาณนี้ เพราะว่าเดี๋ยวอาจจะให้เช็คโปรแกรมค่ะล่าม เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็คในห้องแลบว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะเนื้อหาจะประมาณนี้ค่ะเพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ ก็เลยสั้นนิดนึง เพราะว่าหลังปีใหม่ขอเช็คโปรแกรมก่อนสัปดาห์หน้าอาจจะเริ่มใช้โปรแกรม อาทิตย์นี้ก็เลยเดี๋ยวเหนื้อหาจะสิ้นสุดเท่านี้เดี๋ยวเรามาเช็ก ดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะวันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็กห้องแลปก่อน ขอบคุณมากค่ะ