--- title: (ฝึก PE v.2 1 คน กับ Bot ASR) ห้องเรียนสกลฯ หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี 3 ม.ค. 66 ปลา subtitle: date: วันจันทร์ที่ 20 มีนาคม 2566 เวลา 09.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) โอเคค่ะ เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7 หลังปีใหม่ อะไรจะไม่เยอะนะคะ นิดเดียวแล้วก็วันนี้ไม่มีการบ้าน ไม่มีการบ้านเฉพาะอาทิตย์นี้เท่านั้นนะคะ ถึงให้ปีใหม่ บทนี้นะคะ จะเป็นเกี่ยวกับวิชาคณิตเชิงสัมพันธ์ก็จะเป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยเพชรชนิดเชิงสัมพันธ์ หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล คือการการข้อมูลของเรานะคะ จะเป็นการกระทำที่เกิดขึ้นกับตาราง หรือความสัมพันธ์นะคะ ที่เราสร้างตารางใหม่ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นกับข้อมูลในฐานข้อมูลของเรานะคะ ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่มคือแบบดั้งเดิมกับแบบพิเศษ จะเป็นอย่างละ 4 ตัวนะคะ แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษก็คือ intersectionที่นั่นนะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้ว ในวิชาคณิตศาสตร์ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นเนี่ยจะมีการกระทำต้องมี Attribute คือในตารางจะต้องมีข้อมูลเกิดขึ้นเช่นตารางนักศึกษาก็จะมี Attribute หรือว่าข้อมูลที่เรามีก็คือชื่อนามสกุลเป็นต้นการกระทำของกลุ่มที่เป็นแบบดั้งเดิมจะมีอยู่ 4 อย่างมี product มี ๊ืรนื อินเตอร์เซคแล้วก็มีประเด็นวันนี้จะต้องเป็นภาษาอังกฤษเพราะว่าคำสั่งในระบบจัดการฐานข้อมูล ก็จะเป็นภาษาอังกฤษมานี้นะคะ อันแรก Product นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัดหรือทุก ๆ เล็กคอร์ดที่เรามีที่สามารถเป็นไปได้โดยการจับคู่ผลคูณคาร์ทีเซียนนี่ก็เป็นคณิตศาสตร์อย่างง่ายนะคะ คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า Time T-i-m-e-s รูปแบบของมันก็คือในกรอบสี่เหลี่ยมนะคะ ก็คือเอาเองกับบีมันมาคูณกันเดี๋ยวจะมีตัวอย่างให้ดู อย่างเช่นตัวอย่างนะคะ การเขียนให้ดูก่อนเมื่อกี้ a กับ B นี่ ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Time ก็คือเอาทุกตัวเป็นไปได้ มาคูณกัน a คูณ x a คใช่ไหมคะ b e x y B x b y คำสั่งนี้จริง ๆ จับคู่ทุกตัวที่เป็นไปได้นะคะ อันนี้จะยังง่ายอยู่ยังอีก เหมือนในตัวอย่างค่ะ มีตาราง A มีตาราง B สั่งให้มันคูณกันก็คือเป็น a time B ผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้ คำสั่งนี้จะง่ายคือ 3 คูณ 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้นเอง ถ้าจะเช็คแนวข้อสอบก็ไม่ออกนะนะคะ ยัง ๆ ต่อมา Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 รีเลชั่นเพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถวในรูปแบบของยูเนี่ยนตามทฤษฎีของเซต คำสั่งก็คือยูเนี่ยนนะคะ a Union b คือเอา A กับ ฺ ฺมารวมกันตัวนี้มีตาราง a กับตาราง B ทฤษฎีเซตของยูเนี่ยนนะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกันข้อมูล ตาราง A ก็มี ตาราง ก็มีตามทฤษฎียูเนี่ยนนะคะ ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวจะเห็นว่าจากสี Records ก็คือสีแถวข้อมูลนะคะ แต่ว่าอันนี้ ตาราง A ก็มีแต่รังบีก็มีมันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามายูเนี่ยนกันข้อมูลจาก 4 บรรทัดจะเหลือแค่ 3 บรรทัดเพราะว่า s1ไม่มีทั้ง 2 ตารางก็คือ a b เลย ตามทฤษฎียูเนี่ยนนะคะ ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว ต่อมา intersection ก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ เร็กคอร์ดที่ปรากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นแหละในรูปแบบของ intersection ตามทฤษฎีของเซตคำสั่งก็คือ intersection ให้ a intersection b ตัวอย่างตารางเดิมเลยค่ะ A กับ B ข้อมูลไหนที่ทับซ้อนกันคือข้อมูล s1 มันมีทั้ง 2 ตาราง A กับ B เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้น เพราะฉะนั้นคำสั่ง a intersection b จะมีผลลัพธ์แค่ Accord เท่านั้นก็คือทฤษฎีของเซตนะคะ ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตารางหนึ่ง แต่ตารางหนึ่งไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตาราง 1 คำสั่งที่ใช้คือคำสั่ง Minas แปลเป็นภาษาไทยคือเครื่องหมายลบแล้วนี่ไม่เอาอย่างเช่นที่อยู่ในเอแต่ไม่อยู่ใน B เมื่อคืนเหมือนตัวที่ทำไฮไลท์สีเหลืองไว้ ตารางเดิมเลยค่ะ ให้คำสั่ง A ไป Minas Bอะไรที่อยู่ใน A ไม่อยู่ใน B อันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้นไม่นะ B ว่าจะเป็น S4 ในทางกลับกันค่ะ B ก็คืออยู่ในบีแต่ไม่อยู่ใน A อยู่ดี ๆ S2 S1 ไม่ได้ s1 อยู่ในเองเหมือนกันในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหนเราจะเอาข้อมูลในวันข้างหน้านะคะ ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้ จะเขียนแบบนี้นะคะ แต่ถ้าอยู่ในB ไม่อยู่ใน a ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้ ไม่ใช่ว่าทุกตารางจะชื่อ A กับ B นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำชื่อตารางอะไร อย่างเช่นตาราง Student Student แล้วก็ Minas Address ก็ได้นะคะ อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address ก็ว่าไปนะคะ ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไปนะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากัน Attribute คืออะไร คือตัวนี้คอลัมน์นะคะ ถ้าเป็นแบบ Credit analyst เนี่ อลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากันเท่านั้นถ้าเป็น Special คือคอลัมน์หรือ senior ไม่จำเป็นจะต้องมีจำนวนเท่ากันไม่จำเป็นซึ่งคำสั่งพวกนี้นี่ จะถูกเรียกใช้บ่อยเพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่รูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากัน ก็คอคอลัมน์ไม่เท่ากันนั่นแหละ Attributeของทั้ง 2 ตารางจะถูกนำมาใช้จะต้องมีเงื่อนไขต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน ชื่อคอลัมน์เดียวกันอาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมี 10 คอลัมน์ อีกตารางหนึ่งมี 8 ค่ำ แปลต้องมีสิ่งที่เราจะเอามาดำเนินการเนี่ยชื่อคอลัมน์จะต้องเหมือนกันนะคะ คำสั่งจะมีอยู่ 4 คำสั่งด้วยกันอันแรกคำสั่ง regedit หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL เราจะใช้คำสั่งเรียกว่า Select นะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ต้องได้พิมพ์ลองทำโค้ดภาษา SQL ดูซึ่งการกระทำเพื่อแสดงข้อมูลในเรคคอร์ดของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุเงื่อนไขที่ใช้จะใช้คำว่า where เช่น a Vegetable อันนี้เป็นต้นนะคะ แต่เดี๋ยวตอนที่เราทำโปรแกรมจริง ๆ น่ะ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้ อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูล ตัวอย่างเดิมค่ะ ตาราง a กับ B ตัวอย่างอาจารย์อาจจะเห็นว่า เอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน พอเชาให้คำสั่ง Select หรือ Racing นะคะ จะต้องมาคู่กับคำว่าเสมออย่างเช่นขึ้นต้นด้วยดีก็คือในตารางดีให้ดูที่เงื่อนไข City Cตรงนี้แปลว่าชื่อเมืองนะคะ ในตาราง B ค่าของ Column City อันไหนที่มีค่าเท่ากับชัยนาทขอดูหน่อยค่ะ ตาราง D City ชัยนาทนะคะ พอดีว่า City เท่ากับชัยนาท ผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของ S2 ทั้งหมดนะคะ เพราะว่าเงื่อนไขในตาราง B จังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาท เราต้องยกมาทั้งหมดมาแสดงผล ต่อมาเป็นโปรเจกต์นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถว โดยเลือกมาเพียงแค่บางคอลัมน์ อาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ก็ได้ แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูล คือมันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจกต์นั่นเอง รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไข ตารางเดิมค่ะ ตารางเดิม คำสั่ง A ในวงเล็บ Sname กับ age นะคะ ก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้น อยู่ใน Column Snameและคอลัมน์ Age ผลลัพธ์ที่ได้แสดงผลแค่นี้จากตอนแรกมันมีแค่ 14 คอลัมน์ใช่ไหมคะ 1 2 3อาจารย์ให้แสดงผลแค่ Sname กับ age เท่านั้น นี่คือการทํางานของคําสั่ง project เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจ เราจะใช้คำสั่ง project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ว่านะ หรืออย่างเช่นผลลัพธ์ทำไมมันโชว์แค่รหัส s1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่งคือดูในตาราง B โดยค่าของคอลัมน์ City มีค่าเท่ากับ Bankokแล้วให้แสดงผลเฉพาะ S Sharp เท่านั้น ครูอยากรู้แค่รหัสมีเมืองที่อยู่ในเมืองกรุงเทพฯนะคะ ก็ส่งแค่ s1 เท่านั้น จากเมื่อก่อนนี้เรียกว่า Where City กลับ Bangkok ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ แต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้น อันนี้คือสามารถทำได้ ความสามารถของคำสั่ง project ประมาณคำสั่งจอยค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป โดยที่กำหนดค่าคอลัมน์หรือว่าอาทิตย์อยู่ที่เหมือนกันอาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้นะคะ แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากันคำสั่งก็คือ A join B มาดูตัวอย่างกัน join นะคะ จะคล้าย ๆ กับ Unoin แต่เงินไขคือจะต้องมีโดเมนหรือว่า Column ที่เท่ากันถึงจได้นะคะ อย่างตัวนี้มี 2 คนล่ำมี 2 คอลัมน์รายการข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้าย ๆ กับคำสั่ง Unoiนะคะ เช่นตัวนี้คำสั่งจอยมีอะไรที่เหมือนกันCityใช่ไหมคะ A join B มี 6 คอลัมน์นะคะ City เหมือนกัน แต่เนื่องจาก Attribute ที่มีคำว่า City เหมือนกันนี่ มันจะต้องดูพิจารณาใน Reของรหัสด้วยเพราะฉะนั้นถ้ามันเกินมามันเกินแล้วต้องทำข้อมูลซ้ำให้เกิดขึ้นอันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงานคือเติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ Records นะคะ มีค่า Attribute ก็คือที่เท่ากันเดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลยตอบมาจะเป็นการแสดงข้อมูลจาก 2 รีเลชั่น โดยที่รีเลชั่นหรือว่าทั้ง 2 ตารางนี่ มีAttribute หรือรอบมีคอลัมน์เนี่ยอย่างน้อย 1 คอลัมน์ที่เหมือนกันกดรับจากคอลัมน์นะคะ จากตารางที่มีจำนวน Attribute มากกว่านี่จะถูกจับคู่คอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่าคำสั่งรูปแบบก็คือ a b y by B มันจะเป็นคล้าย ๆ กับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะ ต้องเป็นสับเซตของตัวตั้ง ก็คือในตัวตั้งมี a ไหม B มี มี C ไหม มีไ รับทุกตัวคือตัวที่แมตกับตัวหารอะไรบ้าง ที่อยู่ใน AAV XYZมีมีแค่ X C มีแค่ x เพราะฉะนั้น สิ่งที่เอา ABC หารได้ครบทุกตัว มีแค่ X ตัวเดียวก็คือตรงตามเงื่อนไขทั้งหมด เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้น ที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไข ที่เราต้องตั้งไว้อันนี้จะใช้ตอนที่เราค้นหาข้อมูลใน Gooogle อย่างเช่นในอาจารย์อยากได้กระเป๋าสีแดงมี 6 ล้อลาก เงื่อนไขกระเป๋าสีแดง 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่ฉันต้องการแค่อย่างเดียวเท่านั้น เป็นต้นนะคะ เป็นต้น ตัวอย่างข้อมูลในตาราง A มีข้อมูลตามนี้ ตาราง B มีคอลัมน์เดียวคือตัวนี้ให้ a d y B B ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้าง ของเอ E2อันนี้ P2 เพราะฉะนั้น ผลลัพธ์ที่ได้จะมีแค่ 2 giคอร์ดเท่านั้นที่มี P2 อยู่ด้วย อันนี้ก็จะยังตรงตามเงื่อนไข ถ้าเพิ่มอีก P1 P2 P3 ป6 S2 มีแค่นี้มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรงมีที่ตรงแค่ s1 เท่านั้นที่เอา B ทุกตัวหารไม่ลงตัวI คือหลักการนะคะ หารนั่นละต้องหาลงตัวนะคะ วันนี้จะประมาณนี้เพราะว่าเดี๋ยวอาจจะให้เช็คโปรแกรมค่ะ เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็กในห้องแลปว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะเนื้อหาจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ นิดหนึ่งเพราะว่าหลังปีใหม่ขอเช็คโปรแกรมก่อน สัปดาห์หน้าอาจจะเริ่มใช้โปรแกรมอาทิตย์นี้ก็เลยเดี๋ยว เท่านี้เดี๋ยวเรามาเช็กดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ ถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็คห้องแลปก่อน ขอบคุณมากค่ะ