(อาจารย์เกวลี) โอเคค่ะ เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7 หลังปีใหม่สไลด์จะไม่เยอะนะคะ นิดเดียวแล้วก็วันนี้ไม่มีการบ้าน ไม่มีการบ้าน เฉพาะอาทิตย์นี้เท่านั้นนะคะ ถึงให้ปีใหม่งวดนี้นะคะ จะเป็นเกี่ยวกับวิชาคณิตเชิงสัมพันธ์ก็จะเป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพิชคณิตเชิงสัมพันธ์หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูลคือการการข้อมูลของเรา จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ที่เราสร้างตารางใหม่ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นกับข้อมูลในฐานข้อมูลของเรา ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิมกับแบบพิเศษ จะเป็นอย่างละ 4 ตัวนะคะ แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษ ก็คือTecnion นะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่ จะมีการกระทำต้องมีเดียว คือ ในตารางจะต้องมีข้อมูลเกิดขึ้นเช่นตารางนักศึกษาก็จะมีแอตทริบิวต์หรือว่าข้อมูลที่เรามี ก็คือ รหัส ชื่อ นามสกุล เป็นต้น การกระทำของกลุ่มที่เป็นแบบดั้งเดิมจะมีอยู่ 4 อย่าง มี product มี Union Intersec แล้วก็มีประเด็นวันนี้จะต้องเป็นภาษาอังกฤษเพราะว่าคำสั่งในระบบจัดการฐานข้อมูลก็จะเป็นภาษาอังกฤษมีมาณนี้นะคะ อันแรก Product นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัดหรือทุก ๆ เล็กคอร์ดที่เรามี ที่สามารถเป็นไปได้โดยการจับคู่ ผลคูณคาร์ทีเซียน นี่ก็เป็นคณิตศาสตร์อย่างง่าย คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า "Time" T-i-m-e-s ในกรอบสี่เหลี่ยมนะคะ ก็คือเอา A กับ B มันมาคูณกัน เดี๋ยวจะมีตัวอย่างให้ดู อย่างเช่นตัวอย่างนะคะ การเขียนให้ดูก่อนเมื่อกี้ A กับ B นี่ ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Time ก็คือเอาทุกตัวเป็นไปได้มาคูณกัน A x X A x Y ใช่ไหมคะ B x X x y B x b yfzy คำสั่งนี้จริง ๆ จับคู่ทุกตัวที่เป็นไปได้นะคะ อันนี้จะยังง่ายอยู๋ ยังอีกเหมือนในตัวอย่างค่ะ มีตาราง A มีตาราง B ถ้าสั่งให้มันคูณกัน ก็คือเป็น A time B ผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ A กับ B มันสามารถจับคู่กันได้คำสั่งนี้มันจะง่าย จริง ๆ คือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้นเองถ้าจะเช็คแนวข้อสอบก็มีออกนะนะคะ อันนี้ยังง่ายอยู่การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 รีเลชั่นเพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถวในรูปแบบของ Union ตามทฤษฎีของ Set คำสั่ง ก็คือ Union นะคะ A Union B คือเอาเองกับบีมารวมกันตัวนี้มีตาราง a กับตาราง B ทฤษฎีเซตของ Union นะคะ จะสังเกตได้ ว่าข้อมูลมันมีข้อมูลซ้ำกัน อย่างข้อมูล s1 ตาราง A ก็มีกำลังดีก็มีตามทฤษฎียูเนี่ยนนะคะ ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวจะเห็นว่าจาก 4Records ก็คือ 4 แถวข้อมูลนะคะ แต่ว่าอันนี้ตาราง A ก็มีแต่ก็มีมันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามา Union กันข้อมูลจาก 4 บรรทัด จะเหลือแค่ 3 บรรทัดเพราะว่า s1 ไม่มีทั้ง 2 ตารางก็คือ a b เลย Union นะคะ ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว Intersection ก็ตามทฤษฎี Set เหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record ที่ปรากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นแหละในรูปแบบของ intersection ตามทฤษฎีของ Set คำสั่งก็คือ Intersec ให้ a intersec b ตัวอย่างตารางเดิมเลยค่ะ A กับ B ข้อมูลไหนที่ทับซ้อนกัน คือข้อมูล s1 มันมีทั้ง 2 ตาราง ตาราง A กับตาราง B เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้นเพราะฉะนั้นคำสั่ง a อินเตอร์เซค b จะมีผลลัพธ์แค่ Rccord เท่านั้น ก็คือทฤษฎีของ Set นะคะ ต่อมาก็คือ Differrent ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตารางหนึ่ง แปลตาราง 1 ไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตาราง 1 คำสั่งที่ใช้คือคำสั่งไว้นะแปลเป็นภาษาไทยคือเครื่องหมายลบนี่ไม่เอา อย่างเช่น ที่อยู่ใน A แต่ไม่อยู่ใน B เหมือนตัวที่ทำไฮไลท์สีเหลืองไว้ ตารางเดิมเลยค่ะ ให้คำสั่ง A Minas B อะไรที่อยู่ในเอเชียไม่อยู่ใน B อันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้น Minis บีว่าจะเป็น S4ในทางกลับกันค่ะ ก็คืออยู่ในบีแต่ไม่อยู่ใน Aอยู่ดี ๆ S2F1 ไม่ได้ s1 อยู่ในเองเหมือนกัน ในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหน เราจะเอาข้อมูลไปไว้ข้างหน้านะคะ ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้จะเขียนแบบนี้นะคะ แต่ถ้าอยู่ใน B ไม่อยู่ใน A ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้ ไม่ใช่ว่าทุกตารางจะชื่อ A กับ B นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำชื่อตารางอะไรอย่างเช่นตาราง Studentดีเด่นStuden แล้วก็Minas Address ก็ได้นะคะ อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address ก็ว่าไปนะคะ ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไปโดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากัน Attribute คืออะไร คือตัวนี้ นะคะ ถ้าเป็นแบบ Credit analyst นี่คอลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากันเท่านั้น ถ้าเป็น Special คือคอลัมน์หรือ Colume ไม่จำเป็นจะต้องมีจำนวนเท่ากัน ไม่จำเป็นซึ่งคำสั่งพรุ่งนี้เนี่ยจะถูกเรียกใช้บ่อยเพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่ มีรูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากันไม่เท่ากัน นั่นแหละแอตทริบิวต์ของทั้ง 2 ตารางจะถูกนำมาใช้จะต้องมีเงื่อนไขต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกันชื่อคอลัมน์เดียวกัน อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมี 10 คอลัมน์ แต่อีกตาราง 8 คอลัมน์ แปลต้องมีสิ่งที่เราจะเอามาดำเนินการนี่ ชื่อคอลัมน์จะต้องเหมือนกันนะคะ คำสั่งจะมีอยู่ 4 คำสั่งด้วยกันอั นแรกคำสั่ง หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL เราจะใช้คำสั่งเรียกว่า Select นะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ จะต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดูนะคะ ซึ่งการกระทำเพื่อแสดงข้อมูลในเรคคอร์ดของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุเงื่อนไขที่ใช้จะใช้คำว่า where นะคะ เช่น A Where X Operatiอันนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำโปรแกรมจริง ๆ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ หาว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูล ตัวอย่างเดิมค่ะ ตาราง A กับ B นะคะ ในตัวอย่างอาจารย์อาจจะเห็นว่า เอ๊ะ Column มันก็ยังเท่ากันนี่แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อนพอเขาให้คำสั่ง Select หรือ Racing นะคะ จะต้องมาคู่กับคำว่าเสมอ อย่างเช่น ขึ้นต้นด้วยดีก็คือในตารางดีให้ดูที่เงื่อนไข City City ตรงนี้แปลว่าชื่อเมืองนะคะ ในตาราง B ค่าของ Column City อันไหนที่มีค่าเท่ากับชัยนาทขอดูหน่อยค่ะกำลังดีราก็ดูเลยค่ะ ตางราง B City ชัยนาทนะคะ พอเราพิมพ์ B Wh City เท่ากับชัยนาทผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของ TF2 ทั้งหมดนะคะ เงื่อนไขในตารางบีจังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาทนะคะ เราต้องยกมาทั้งหมดมาแสดงผลต่อมาเป็นโพรเจกต์นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถวโดยเลือกมาเพียงแค่บางคอลัมน์ เช่น อาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์แปลแต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูลคือมันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจคนั่นเองนะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไขนะคะ ตารางเดิมค่ะ ตารางเดิม คำสั่ง A ในวงเล็บ SName กับ Age นะคะ ก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้น อยู่ใน Column SName และคอลัมน์ Age ผลลัพธ์ที่ได้จะแสดงผลแค่นี้ จากตอนแรกมันมีแค่ 4 คอลัมน์ใช่ไหมคะ 1 2 3 4 อาจารย์ให้แสดงผลแค่ SNameเท่านั้น นี่คือการทํางานของคําสั่ง โพรเจกต์ เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจ เราจะใช้คำสั่ง Project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ว่านะ อย่างเช่น ผลลัพธ์ทำไมมันโชว์แค่รหัส s1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่ง คือ ดูในตาราง B นะคะ โดยหน่วยค่าของคอลัมน์ City มีค่าเท่ากับ Bangkok แล้วให้แสดงผลเฉพาะ s# เท่านั้น คืออยากรู้แค่รหัส มีเมืองที่อยู่ในเมืองกรุงเทพฯ นะคะ ก็ Show แค่ s1 เท่านั้น จากเมื่อก่อนนี้เรียกว่า Where City กับ Bangkok ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ แต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้นก็สามารถทำได้ อันนี้คือความสามารถของคำสั่ง Project ต่อมาคำสั่ง Join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไปโดยที่กำหนดค่าคอลัมน์หรือ Attribute ที่เหมือนกัน อาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้นะคะ แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากันคำสั่ง ก็คือ A Join B มาดูตัวอย่างกัน Join นะคะ จะคล้าย ๆ กับ Union แต่เงินไข คือ จะต้องมี Domain หรือว่า Column ที่เท่ากันถึงจะ ได้นะคะ อย่างตัวนี้มี 2 คอลัมน์มี 2 คอลัมน์รายการข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้าย ๆ กับคำสั่งอยู่นี่นะคะ เช่นตัวนี้คำสั่ง Join มีอะไรที่เหมือนกัน City ใช่ไหมคะ มี 6 คอลัมน์นะคะ City เหมือนกัน แต่เนื่องจาก Attribute ที่มีคำว่า City เหมือนกันนี่ มันจะต้องดูพิจารณาใน Recorของรหัสด้วยเพราะฉะนั้นถ้ามันเกินมามันเกินแล้วต้องทำข้อมูลซ้ำให้เกิดขึ้นอันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงานคือเติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ Records นะคะ มีค่า Attribure ก็คือที่เท่ากัน เดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลย ต่อมาจะเป็นการแสดงข้อมูลจาก 2 รีเลชั่นโดยที่รีเลชั่น หรือว่าทั้งสองตารางนี่ มี Attribute หรือรอบมีคอลัมน์นี่อย่างน้อย 1 คอลัมน์ที่เหมือนกันกดรับจากคอลัมน์นะคะ จากตารางที่มีจำนวนอธิบดีมากกว่านี่ จะถูกจับคู่กับคอลัมน์หนึ่ง ที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่าคำสั่งรูปแบบก็คือ a b y by B มันจะเป็นคล้าย ๆ กับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะ ต้องเป็น Subset ของตัวนี้ ก็คือในตัวตั้งมี a ไหมมี มีไหม มีไหมมี รับทุกตัว คือ ตัวที่แมทกับตัวหารอะไรบ้าง ที่อยู่ใน A B X Y Z มีมีแค่ X C มีแค่ x เพราะฉะนั้นสิ่งที่เอา A B C หารได้ครบทุกตัว มีแค่ X ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมดน่าจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้อันนี้จะใช้ตอนที่เราค้นหาข้อมูลอย่างเช่นใน Google อาจารย์อยากได้กระเป๋าสีแดง มี 6 ล้อลาก เงื่อนไขกระเป๋าสีแดง มีล้อ 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่ฉันต้องการแค่อย่างเดียวเท่านั้น เป็นต้น นะคะ เป็นต้น เช่นตัวอย่าง มีข้อมูลนะคะ ในตาราง A มีข้อมูลตามนี้ ตารางดีมีคอลัมน์เดียว คือ ตัวนี้ P2 ให้ A B Y by B มีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้าง ของ A อันนี้ P2 อันนี้ P2เ พราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่ 2 Records เท่านั้น ที่มี P2 อยู่ด้วยอันนี้ก็จะยังตรงตามเงื่อนไขนะคะ ถ้าเพิ่มอีกนะคะ B P1 P2 P3 P6S 2 มีแค่นี้ มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรงมีที่ตรงแค่ s1 เท่านั้นที่เอาบีทุกตัวหารได้ลงตัว อันนี้คือหลักการนะคะ การหารนั่นล่ะต้องหาลงตัวนะคะ วันนี้จะประมาณนี้เพราะว่าเดี๋ยวอาจจะให้เช็กโปรแกรมค่ะ เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็กในห้อง Lab ว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะแม่จ๋าจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ น้อยนิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็กโปรแกรมก่อนสัปดาห์หน้าอาจจะเริ่มใช้โปรแกรมอาทิตย์นี้ก็เลยเดี๋ยวเท่านี้ เดี๋ยวเรามาเช็คดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ ถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็คห้องแลปก่อน ขอบคุณมากค่ะ