(อาจารย์เกวลี) โอเคค่ะ เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7 หลังปีใหม่สไลด์จะไม่เยอะนะคะ นิดเดียว แล้วก็วันนี้ไม่มีการบ้าน ไม่มีการบ้านเฉพาะอาทิตย์นี้เท่านั้นนะคะ ถือว่าให้ปีใหม่บทนี้นะคะ จะเป็นเกี่ยวกับวิชาพีชคณิตเชิงสัมพันธ์ ก็จะเป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพีชคณิตเชิงสัมพันธ์หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล ก็คือการจัดการข้อมูลของเรา จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์นะคะ ที่เราสร้างตารางใหม่ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นกับข้อมูลในฐานข้อมูลของเรานะคะ ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิมกับแบบพิเศษ จะเป็นอย่างละ 4 ตัวนะคะ แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษ ก็คือ Tecditional ที่นั่นนะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์นะคะ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่จะมีการกระทำนะคะ จะต้องมี Attribute คือในตารางจะต้องมีข้อมูลเกิดขึ้น เช่น ตารางนักศึกษาก็จะมี Attribute หรือว่าข้อมูลที่เรามีก็คือ ชื่อนามสกุล เป็นต้น การกระทำของกลุ่มที่เป็นแบบดั้งเดิมนะคะ จะมีอยู่ 4 อย่าง มี product มี Union มี Intersection แล้วก็มี Different อันนี้จะต้องเป็นภาษาอังกฤษ เพราะว่าคำสั่งในระบบจัดการฐานข้อมูลก็จะเป็นภาษาอังกฤษอันแรก Product นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัด หรือทุก ๆ Record ที่เรามีที่สามารถเป็นไปได้ โดยการจับคู่ผลคูณคาร์ทีเซียน นี่ก็เป็นคณิตศาสตร์อย่างง่ายคำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า "Time" นะคะ T-i-m-e-s รูปแบบของมัน ก็คือในกรอบสี่เหลี่ยมนะคะ ก็คือเอา A กับ B มันมาคูณกัน เดี๋ยวจะมีตัวอย่างให้ดูอย่างเช่นตัวอย่างนะคะ อาจารย์เขียนให้ดูก่อนเมื่อกี้ a กับ B A Bนี่ ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Time ก็เอาทุกตัวที่เป็นไปได้มาคูณกัน A x X A x Y ใช่ไหมคะ B x A x Y ก็จะเป็น BY คำสั่งนี้จับคู่ทุกตัวที่เป็นไปได้นะคะ อันนี้จะยังง่ายอยู่ นี่อีกนะคะ เหมือนในตัวอย่างค่ะ มีตาราง A มีตาราง B ถ้าสั่งให้มันคูณกัน ก็คือเป็น A time B ผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ A กับ B ที่มันสามารถจับคู่กันได้ คำสั่งนี้มันจะง่าย คือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้นเองถ้าจะเช็ก แนวข้อสอบก็มีออกนะนะคะ อันนี้ยังง่ายอยู่ ต่อมาการ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกัน ก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 Relation เพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถว ในรูปแบบของ Union ตามทฤษฎีของเซตคำสั่ง ก็คือ Union นะคะ a Union b คือเอา A กับB มารวมกัน ตัวนี้ มีตาราง A กับตาราง B ทฤษฎีเซตของ Unionนะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกัน ข้อมูล s1 ตาราง A ก็มีตาราง D ก็มี ตามทฤษฎี Union นะคะ ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวนะคะ จะเห็นว่าจาก 4 Record ก็คือ 4 แถวข้อมูลนะคะ แต่ว่าอันนี้ ตาราง A ก็มี ตาราง B ก็มี มันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามา Union กัน ข้อมูลจาก 4 บรรทัด จะเหลือแค่ 3 บรรทัด เพราะว่า s1 มีทั้ง 2 ตาราง ก็คือ a b เลย Union นะคะ ส่วนที่ทับซ้อนกัน ก็เอาแค่ข้อมูลเดียวต่อมา Intersection ก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record ที่ปรากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นแหละ ในรูปแบบของ Intersection ตามทฤษฎีของเซตคำสั่ง ก็คือ Intersec ให้ A Intersec B ตัวอย่างตารางเดิมเลยค่ะ A กับ B ข้อมูลไหนที่ทับซ้อนกัน คือข้อมูล s1 มันมีทั้ง 2 ตารางกำลัง A กับตาราง B เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้นเพราะฉะนั้น คำสั่ง A Intersect B จะมีผลลัพธ์แค่ 1 Record เท่านั้น ก็คือทฤษฎีของเซตนะคะ ต่อมา Different ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตารางหนึ่ง แต่อีกตารางหนึ่งไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้น แต่ไม่อยู่กับกี่ตารางหนึ่ง คำสั่งที่ใช้ คือ Minas แปลเป็นภาษาไทย คือ เครื่องหมายลบแล้วนี่ไม่เอา อย่างเช่น A minas b ที่อยู่ในเ A แต่ไม่อยู่ใน B เมื่อคืนเหมือนตัวที่อาจารย์ทำไฮไลท์สีเหลืองไว้ ตารางเดิมเลยค่ะ ให้คำสั่ง A MINUS B อะไรที่อยู่ใน A ไม่อยู่ใน B อันนี้ไม่ใช่แน่นอน เพราะ S1 มีทั้ง A ทั้ง B เพราะฉะนั้นA minas B ก็จะเป็น S4 ในทางกลับกันค่ะ B minas A ก็คืออยู่ในB แต่ไม่อยู่ใน Aอยู่ดี ๆ S2F1 ไม่ได้ s1 อยู่ในเองเหมือนกันในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหน เราจะเอาข้อมูลในวันข้างหน้าถ้าอยู่ใน A ไม่อยู่ใน B จะเป็นแบบนี้ จะเขียนแบบนี้นะคะ แต่ถ้าอยู่ใน B ไม่อยู่ใน A ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้นะคะ ไม่ใช่ว่าทุกตารางจะชื่อ A กับ B นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำมันชื่อตารางอะไร อย่างเช่น ตาราง Student Student แล้วก็ Minas Address ก็ได้นะคะ อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address ว่าไปนะคะ ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไปนะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากันAttribute คืออะไร Attribute คือตัวนี้ Columnนะคะ ถ้าเป็นแบบ Credit analyst นี่ Colum ทั้ง 2 ตาราง 13 ตารางต้องเท่ากันเท่านั้น ถ้าเป็น Special คือ Column หรือ Attribute ไม่จำเป็นจะต้องมีจำนวนเท่ากันไม่จำเป็น ซึ่งคำสั่งพวกนี้นี่จะถูกเรียกใช้บ่อย เพราะว่าฐานข้อมูลแต่ละฐานข้อมูลอาจจะมีตารางที่บรรจุอยู่รูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากัน ก็คือคอลัมน์ไม่เท่ากันนั่นแหละแต่ Attribute ของทั้ง 2 ตาราง จะถูกนำมาใช้จ ะต้องมีเงื่อนไข จะต้องมีชื่อ Domain ของข้อมูลชื่อเดียวกัน ชื่อ Column เดียวกันอาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมี อีกตารางหนึ่งมี 8 Comแต่จะต้องมีสิ่งที่เราจะเอามาดำเนินการนี่ ชื่อคอลัมน์จะต้องเหมือนกันนะคะ คำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน อันแรกคำสั่ง regedit หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQLเราจะใช้คำสั่งเรียกว่า Select ะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ต้องได้พิมพ์ ลองทำ Code ภาษา SQL ดูซึ่งการกระทำเพื่อแสดงข้อมูลใน Record ของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุเงื่อนไขที่ใช้จะใช้คำว่า "where" นะคะ เช่น A where x อันนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำโปรแกรมจริง ๆ อ่ะนักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้ อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ นะคะ เราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูลนะคะ ตัวอย่างเดิมค่ะ ตาราง A กับ B นะคะ ตัวอย่างอาจารย์อาจจะเห็นว่าเอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน พอใช้คำสั่ง SELECT หรือ Restrict นะคะ จะต้องมาคู่กับคำว่า "เสมออย่างเช่นขึ้นต้นด้วยดี ก็คือในตารางดีให้ดูที่เงื่อนไข City ตรงนี้แปลว่าชื่อเมืองนะคะ ในตาราง Bค่าของ Column City อันไหน ที่มีค่าเท่ากับ Chainat เราก็ดูเลยค่ะ ตาราง D City Chainatนะคะ พอดีว่า City เท่ากับชัยนาทผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของ S2 ทั้งหมดนะคะ เงื่อนไขในตาราง B จังหวัดข้อมูลอะไรที่มีข้อมูลว่า Chinat นะคะ เราต้องยกมาทั้งหมดมาแสดงผล ต่อมาเป็นโปรเจ็กต์นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถวโดยเลือกมาเพียงแค่บางคอลัมน์เช่นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ แต่าจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้นเราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูล คือ มันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจ็กต์นั่นเองนะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไข ตารางเดิมค่ะ ตารางเดิมคำสั่ง A ในวงเล็บ SName กับ Age นะคะ ก็คืออธิบายคือเอาข้อมูลในตาราง A เท่านั้น อยู่ใน Column SName และ Column Ageลัพธ์ที่ได้แสดงผลแค่นี้ จากตอนแรกมันมีแค่ 4 Column ใช่ไหมคะ 1 2 3 4 อาจารย์ให้แสดงผลแค่ S_Name กับ Age เท่านั้น อันนี้คือการทํางานของคําสั่ง project เผื่อจะมีเป็นร้อยคอลัมน์ มาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจ จะใช้คำสั่ง project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ว่านะหรือ อย่างเช่น เอ๊ะ ผลลัพธ์ทำไมมันโชว์แค่รหัส s1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่ง คือ ดูในตาราง B นะคะ โดยค่าของ Column City มีค่าเท่ากับ Bangkok แล้วให้แสดงผลเฉพาะS# เท่านั้น คือ อยากรู้แค่รหัสที่มีเมืองที่อยู่ในเมืองกรุงเทพฯ นะคะ ก็ส่งแค่ s1 เท่านั้น จากเมื่อก่อนนี้ที่อาจารย์บอกว่า Where City กับ Bangkok ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ แต่ถ้าตามกำหนดให้มาแสดงแค่ Column ใด อ หนึ่งเท่านั้น ก็สามารถทำได้ อันนี้คือความสามารถของคำสั่ง Project ต่อมาคำสั่ง Join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมดซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป โดยที่กำหนดค่าคอลัมน์หรือว่า Attribute ที่เหมือนกัน อาจจะเป็นคอลัมน์เดียวหรือมากกว่าก็ได้นะคะ แต่ที่สำคัญ คือ คอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากันรูปคำสั่ง ก็คือ A Join B มาดูตัวอย่างกัน Join นะคะ จะคล้าย ๆ กับ Union นะคะ แต่เงินไข คือ จะต้องมี Domain หรือว่า Column ที่เท่ากันถึงจะ ได้นะคะ อย่างตัวนี้มี 2 Column มี 2 Column รายการข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้าย ๆ กับคำสั่ง Union นะคะ อย่างเช่นตัวนี้คำสั่ง Join มีอะไรที่เหมือนกัน มี City ใช่ไหมคะ A Join B คอลัมน์นะคะ City เหมือนกัน แต่เนื่องจาก Attribute ที่มีคำว่า City เหมือนกันนี่ มันจะต้องดูพิจารณาในเรคคอร์ดของรหัสด้วย เพราะฉะนั้นถ้ามันเกินมานะคะ มันเกินแล้วต้องทำข้อมูลซ้ำให้เกิดขึ้น อันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงาน คือ เติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ Record นะคะ มีค่า Attribute ก็คือที่เท่ากัน เดี๋ยวอันนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำทำตัวโปรแกรมเลย ต่อมา จะเป็นการแสดงข้อมูลจาก 2 Relation โดยที่ Relation หรือว่าทั้งสองตารางนี่ มี Attribute หรือรอบมีคอลัมน์เนี่ยอย่างน้อย 1 คอลัมน์ที่เหมือนกันผลลัพธ์จากคอลัมน์นะคะ จากตารางที่มีจำนวน Attribute มากกว่านี่จะถูกจับคู่นะคะ กับคอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่า คำสั่งรูปแบบก็คือ A DIVIDED BY B มันจะเป็นคล้าย ๆ กับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะ จะต้องเป็น Subset ของตัวตั้ง ก็คือในตัวตั้งมี A ไหมมี มี B ไหม มี C ไหมมี รับทุกตัว คือตัวที่แมทกับตัวหารอะไรบ้าง ที่อยู่ใน A มี XYZ C มีแค่ X C มีแค่ X เพราะฉะนั้น สิ่งที่เอา A B C หารได้ครบทุกตัว มีแค่ X ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมดนะคะ เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้หลักการนี้จะใช้ตอนที่เราค้นหาข้อมูลอย่างเช่นใน Google นะคะ อาจารย์อยากได้กระเป๋าสีแดงมี 6 ล้อลากเงื่อนไขอยากได้กระเป๋าสีแดง มีล้อ 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่ฉันต้องการแค่อย่างเดียวเท่านั้น เป็นต้นนะคะ เป็นต้น อย่างเช่นตัวอย่าง มีข้อมูลนะคะ ในตาราง A มีข้อมูลตามนี้ ตาราง B มีคอลัมน์เดียว คือ ตัวนี้ P2 ให้ A DIVIDED BY B ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้าง ของ A อันนี้ P2อันนี้ P2 เพราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่ 2 Record เท่านั้น ที่มี P2 อยู่ด้วย อันนี้ก็จะยังตรงตามเงื่อนไขนะคะ ถ้าเพิ่มอีกนะคะ B P1 P 2 P3 P6 S2 มีแค่นี้ มีแค่นี้ไม่ตรง S4 มีแค่นี้ไม่ตรงมีที่ตรงแค่ S1 เท่านั้นที่เอา B ทุกตัวหารได้ลงตัว อันนี้คือหลักการนะคะ ปัญหานั่นแหละต้องหาลงตัวนะคะ วันนี้จะประมาณนี้ เพราะว่าเดี๋ยวอาจจะให้เช็กโปรแกรมค่ะ เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็กในห้องแล็บว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็... วันนี้ก็น่าจะ เนื้อหาจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ สั้นนิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็กโปรแกรมก่อนสัปดาห์หน้าอาจจะเริ่มใช้โปรแกรม อาทิตย์นี้ก็เลยเดี๋ยวเนื้อหาจะหมดเท่านี้ เดี๋ยวเรามาเช็คดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ กับขอบคุณถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็กห้องแล็บก่อนขอบคุณมากค่ะ