--- title: (ฝึก PE v.2 1 คน กับ Bot ASR) ห้องเรียนสกลฯ หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี 3 ม.ค. 66 นาโน subtitle: date: วันจันทร์ที่ 20 มีนาคม 2566 เวลา 09.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์เกวลี) โอเคค่ะ เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7 หลังผีใหม่สไลด์อะไรจะไม่เยอะนะคะ นิดเดียว แล้วก็วันนี้ไม่มีการบ้านมีการบ้าน เฉพาะอาทิตย์นี้เท่านั้นนะคะ ให้ปีใหม่ บทนี้นะคะ จะเป็นเกี่ยวกับวิชาคณิตเชิงสัมพันธ์ เป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะ เที่ยวมาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพีชคณิตเชิงสัมพันธ์ หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล คือ การการข้อมูลของเรา จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์นะคะ ที่เราสร้างตารางใหม่ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นกับข้อมูลในฐานข้อมูลของเรา ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิม กับแบบพิเศษ จะเป็นอย่างละ 4 ตัวนะคะ แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษก็คือน Transaction นะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์นะคะ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่ จะมีการกระทำ จะต้องมี Attribute คือในตารางจะต้องมีข้อมูลเกิดขึ้น เช่นตารางนักศึกษาก็จะมี Attribute หรือว่าข้อมูลที่เรามีก็คือชื่อนามสกุลเป็นต้น การกระทำของกลุ่มที่เป็นแบบดั้งเดิมจะมีอยู่ 4 อย่าง มี productวันนี้จะต้องเป็นภาษาอังกฤษเพราะว่าคำสั่งในระบบจัดการฐานข้อมูลก็จะเป็นภาษาอังกฤษมานี้นะคะ อันแรก Prโปรดักส์นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัดหรือทุก ๆ เล็กคอร์ดที่เรามีที่สามารถเป็นไปได้โดยการจับคู่ผลคูณคาร์ทีเซียน อันนี้ก็เป็นคณิตศาสตร์อย่างง่ายคำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า Times รูปแบบของมัน ก็คือในกรอบสี่เหลี่ยมนะคะ A TIMES B ก็คือ A กับ B มาคูณดี๋ยวจะมีตัวอย่างให้ดูอย่างเช่นตัวอย่างนะคะ การเขียนให้ดูก่อนเมื่อกี้ a กับ Bนี่ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูล ใช้คำสั่ง Time ก็คือเอาทุกตัวเป็นไปได้มาคูณกัน AxX A x y ใช่ไหมคะ b x x B x y B x b y คำสั่งนี้จริง ๆ จับคู่ทุกตัวที่เป็นไปได้นะคะอันนี้จะยังง่ายอยู่ ยังอีก เหมือนในตัวอย่างค่ะ มีตาราง A มีตาราง B สั่งให้มันคูณกัน ก็คือเป็น a time Bผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้คำสั่งนี้จริง ๆ คือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้นเองนะคะ ถ้าจะเช็ก ในข้อสอบก็ไม่ออกนะนะคะ อันนี้ยังง่ายอยู่ การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 Relation เพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถวในรูปแบบของยูเนี่ยนตามทฤษฎีของเซต คำสั่งก็คือ UNION นะคะ a Union b คือ เอา aกับb มารวมกัน ตัวนี้มีตาราง a กับตาราง B ทฤษฎีเซตของUNION นะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกัน อย่างข้อมูล s1 ตาราง A ก็มี ตาราง B ก็มี ตามทฤษฎียูเนี่ยนนะคะ ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวจะเห็นว่าจากสี Records ก็คือสีแถวข้อมูลนะคะ แต่ว่าอันเนี้ยกำลังเอกก็มีแต่รังบีก็มีมันซ้ำกัน เราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามายูเนี่ยนกันข้อมูลจาก 4บรรทัดจะเหลือแค่ 3 บรรทัดเพราะว่า s1 ไม่มีทั้ง 2 ตารางก็คือ a b เลย ยูเนี่ยนนะคะ ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียวอินเตอร์เซกชันก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Racoard รากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นแหละในรูปแบบของ intersection ตามทฤษฎีของเซตคำสั่งก็คืออินเตอร์เซคให้ a อินเตอร์เซค bตัวอย่างตารางเดิมเลยค่ะ A กับ B ข้อมูลไหนที่ทับซ้อนกัน คือ ข้อมูล s1 มันมีทั้ง 2 ตาราง ตาราง A กับตาราง B เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้นเพราะฉะนั้นคำสั่ง a อินเตอร์เซค b จะมีผลลัพธ์แค่ 1Record เท่านั้นก็คือทฤษฎีของเซตนะคะ เรามา Difference ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตาราง 1 อีกแปลตารางหนึ่งไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตาราง 1 คำสั่งที่ใช้ คือคำสั่งไว้นะMINUS แปลเป็นภาษาไทยคือเครื่องหมายลบแล้วนี่ไม่เอา อย่างเช่น A MINUS B ที่อยู่ใน A แต่ไม่อยู่ใน Bเ ก็คือเหมือนตัวที่ทำไฮไลท์สีเหลืองไว้ ตารางเดิมเลยค่ะ ให้คำสั่ง ABอะไรที่อยู่ใน Aไม่อยู่ในBอันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้น A MINUS B ก็จะเป็น S4 ในทางกลับกันค่ะ B ก็คืออยู่ในB แต่ไม่อยู่ใน A อยู่ดี ๆ S2 S1 ไม่ได้ s1 อยู่ในเองเหมือนกัน ในทางกลับกันจะเป็นแบบนี้ นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหน เราจะเอาข้อมูลในวันข้างหน้านะคะ ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้จะเขียนแบบนี้นะคะ แต่ถ้าอยู่ใน B ไม่อยู่ใน A จะเขียนนำหน้าแบบนี้นะคะ ไม่ใช่ว่าทุกตารางจะชื่อเองกับบีนะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำ ชื่อตารางอะไร อย่างเช่นตาราง Student student แล้วก็ MINUS Address ก็ได้นะคะ อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address ก็ว่าไปนะคะ ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไปนะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากันคิวคืออะไร คือตัวนี้หมอลำนะคะ ถ้าเป็นแบบ Credit analyst นี่ คอลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากันเท่านั้นถ้าเป็น Special คือ คอลัมน์หรือ Attribute ไม่จำเป็นจะต้องมีจำนวนเท่ากัน ไม่จำเป็น ซึ่งคำสั่งพวกนี้นี่ จะถูกเรียกใช้บ่อยเพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่รูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากันไม่เท่ากันนั่นแหละ Attribute ของทั้ง 2 ตารางจะถูกนำมาใช้จะต้องมีเงื่อนไข ต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกันก็คือชื่อคอลัมน์เดียวกัน อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมี 10 คอลัมน์ อีกตารางหนึ่งมี 8 คอลัมน์ แต่ต้องมีสิ่งที่เราจะเอามาดำเนินการเนี่ยชื่อคอลัมน์จะต้องเหมือนกันนะคะ คำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน อันแรกคำสั่ง Restrict หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQLเราจะใช้คำสั่งเรียกว่า Select นะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดูนะคะ ซึ่งการกระทำเพื่อแสดงข้อมูลในเรคคอร์ดของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุนะคะ เงื่อนไขที่ใช้จะใช้คำว่า where นะคะ เช่น A WHERE X operator Y อันนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำโปรแกรมจริง ๆ นี่ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้ อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ นะคะ ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูลนะคะ ตัวอย่างเดิมค่ะ ตาราง a กับ B นะคะ ในตัวอย่างอาจารย์อาจจะเห็นว่าเอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน พอใช้คำสั่ง Select หรือRestrict นะคะ จะต้องมาคู่กับคำว่าเสมออย่างเช่นขึ้นต้นด้วยดีก็คือในตาราง D ให้ดูที่เงื่อนไข City City ตรงนี้แปลว่าชื่อเมืองนะคะ ในตาราง B ค่าของ Column Cityอันไหนที่มีค่าเท่ากับ chinat ขอดูหน่อยค่ะ ตาราง D City ชัยนาทนะคะ พอดีว่า City เท่ากับชัยนาทผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของที่ s2ทั้งหมดนะคะ เงื่อนไขในตารางบีจังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาทนะคะ เราต้องยกมาทั้งหมดมาแสดงผล ต่อมาเป็น Project นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถวโดยเลือกมาเพียงแค่บางคอลัมน์เห็นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ก็ได้ แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูล คือ มันจะเป็นคำสั่งเกี่ยวกับการทำ Project นั่นเอง รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไข ตารางเดิมค่ะ ตารางเดิม คำสั่ง A ในวงเล็บ S name = age นะคะ ก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้นอยู่ใน Column sname และคอลัมน์ age ผลลัพธ์ที่ได้จะแสดงผลแค่นี้ จากตอนแรกมันมีแค่ 4 คอลัมน์ใช่ไหมคะ 1 2 3 4 อาจารย์ให้แสดงผลแค่เฟซ nameเท่านั้นนี่คือการทํางานของคําสั่ง project นะคะ คือ อาจจะมีเป็นร้อยคอลัมน์ มาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจจะใช้คำสั่ง projectนะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ก่อนนะ หรือ อย่างเช่นผลลัพธ์ทำไมมันโชว์แค่รหัส s1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่ง คือ ดูในตาราง B นะคะ โดยค่าของคอลัมน์ City มีค่าเท่ากับ bangkok แล้วให้แสดงผลเฉพาะ S# เท่านั้นครูอยากรู้แค่รหัสมีเมืองที่อยู่ในเมืองกรุงเทพฯนะคะ ก็ส่งแค่ s1 เท่านั้นจากเมื่อก่อนนี้เรียกว่า Where City เท่ากับ Bangkok ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ แต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้น ะคะ อันนี้คือความสามารถของคำสั่ง project ประมาณคำสั่ง Join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป โดยที่กำหนดค่าคอลัมน์หรือว่า Attribute ที่เหมือนกันอาจจะเป็นคอลัมเดียว หรือมากกว่าก็ได้นะคะ แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากัน คำสั่งก็คือ A B นะคะ มาดูตัวอย่างกัน Join นะคะ จะคล้าย ๆ กับ UNION แต่เงินไข คือ จะต้องมีโดเมนหรือว่าคอลัมน์ที่เท่ากันถึงจะจอยได้นะคะ อย่างตัวนี้มี 2 คอลัมน์ มี 2 คอลัมน์รายการข้อมูลที่ซับซ้อนกัน อยู่ในรูปแบบคล้าย ๆ กับคำสั่ง UNION นะคะ เช่น ตัวนี้คำสั่งจอยมีอะไรที่เหมือนกันCityใช่ไหมคะ A JOIN B อันนี้มี 6 คอลัมน์นะคะ 1 2 City เหมือนกัน แต่เนื่องจาก พี่บิวที่มีคำว่า City เหมือนกันเนี่ยนี่ มันจะต้องดูพิจารณาในเรคคอร์ดของรหัสด้วย เพราะฉะนั้น ถ้ามันเกินมามันเกินแล้วต้องทำข้อมูลซ้ำให้เกิดขึ้น อันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงาน คือ เติมข้อมูลเข้าไป นะคะเพื่อให้ผลลัพธ์ที่ได้ในทุกๆRecord นะคะ มีค่า Attribute ก็คือที่เท่ากัน เดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลย ต่อมา จะเป็นการแสดงข้อมูลจาก 2 Relation โดยที่ Relation หรือว่าทั้งสองตารางเนี่ยมีแอตทริบิวต์หรือรอบมีคอลัมน์เนี่ยอย่างน้อย 1 คอลัมน์ที่เหมือนกันกดรับจากคอลัมน์นะคะ จากตารางที่มีจำนวนอธิบดีมากกว่านี่ จะถูกจับคู่ คอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่า คำสั่งรูปแบบ ก็คือ A DIVIDED BY B มันจะเป็นคล้าย ๆ กับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะ ต้องเป็น sub set ของตัวตั้ง ก็คือในตัวตั้งมี a ไหมมี มี b ไหม มี มี c ไหม มี รับทุกตัวคือตัวที่แมทกับตัวหารอะไรบ้าง ที่อยู่ใน AAV XYZมีมีแค่ X C มีแค่ x เพราะฉะนั้น สิ่งที่เอา ABC หารได้ครบทุกตัว มีแค่ x ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมดนะคะ เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้ หลักการนี้จะใช้ตอนที่เราค้นหาข้อมูล อย่างเช่นใน Google อาจารย์อยากได้กระเป๋าสีแดง มี 6 ล้อลาก เงื่อนไข อยากได้กระเป๋าสีแดง มีล้อ 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่ฉันต้องการแค่อย่างเดียวเท่านั้น เป็นต้นนะคะ เป็นต้น อย่างเช่น ตัวอย่าง มีข้อมูลนะคะ ในตาราง A มีข้อมูลตามนี้ ตาราง D มีคอลัมน์เดียว คือตัวนี้ ย2 ให้ A DIVIDED BY B ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้าง ของA p2อันนี้ p2 เพราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่ 2 record เท่านั้น ที่มี P2 อยู่ด้วย อันนี้ก็จะยังตรงตามเงื่อนไขนะคะ ถ้าเพิ่มอีกนะคะ p1 p2 p3 p6 มีแค่นี้มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรงมีที่ตรงแค่ s1 เท่านั้นที่เอา b ทุกตัวหารไม่ลงตัวI คือหลักการนะคะ ปัญหานั่นแหละต้องหาลงตัวนะคะ วันนี้จะประมาณนี้ เพราะว่าเดี๋ยวอาจจะให้เช็คโปรแกรมค่ะล่าม เนื้อหาจะมีแค่นี้ เดี๋ยวจะเช็กในห้องแลปว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะแม่จ๋าจะประมาณนี้ค่ะเพราะเดี๋ยวจะให้เช็คโปรแกรมในห้องเรียนนะคะ เนื้อหาน้อยนิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็คโปรแกรมก่อนสัปดาห์หน้าอาจจะเริ่มใช้โปรแกรม อาทิตย์นี้ก็เลยเดี๋ยวมหาสมุทรเท่านี้เดี๋ยวเรามาเช็กดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ กับขอบคุณถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็กห้องแลปก่อน ขอบคุณมากค่ะ