โอเคค่ะ เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7 หลังปีใหม่ สไลด์จะไม่เยอะนะคะนิดเดียว แล้วก็วันนี้ไม่มีการบ้าน มีการบ้านเฉพาะอาทิตย์นี้เท่านั้นนะคะ ถึงให้ปีใหม่งวดนี้นะคะ จะเป็นเกี่ยวกับวิชาพีชคณิตเชิงสัมพันธ์ ก็จะเป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะ ทรามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพีชคณิตเชิงสัมพันธ์ หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูลคือการการข้อมูลของเราจะเป็นการกระทำที่เกิดขึ้นกับตาราง หรือความสัมพันธ์นะคะ ที่เราสร้างตารางใหม่นะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้น กับข้อมูลในฐานข้อมูลของเรา ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่มคือแบบดั้งเดิมกับแบบพิเศษ จะเป็นอย่างละ 4 ตัวนะคะแบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษก็คือ นะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์โดยอาศัยทฤษฎีของ Set ซึ่งเราเคยเรียน Set มาแล้วในวิชาคณิตศาสตร์ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่จะมีการกระทำต้องมี Attribute เดียวคือในตารางจะต้องมีข้อมูลเกิดขึ้นเช่นตารางนักศึกษาก็จะมี Attribute หรือว่าข้อมูลที่เรามีก็คือชื่อนามสกุลเป็นต้น การกระทำของกลุ่มที่เป็นแบบดั้งเดิมจะมีอยู่ 4 อย่างมี product มี ยูเนี่ยน อินเตอร์เซค แล้วก็มีประเด็นวันนี้จะต้องเป็นภาษาอังกฤษ เพราะว่าคำสั่งในระบบจัดการฐานข้อมูล ก็จะเป็นภาษาอังกฤษประมาณนี้นะคะ เป็น Product นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัดหรือทุก ๆ เล็กคอร์ดที่เรามี ที่สามารถเป็นไปได้โดยการจับคู่ผลคูณคาร์ทีเซียนนี่ก็เป็นคณิตศาสตร์อย่างง่าย คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า "Time" T-i-m-e-s รูปแบบของมันก็คือในกรอบสี่เหลี่ยมนะคะ ก็คือเอาเองกับบีมันมาคูณกันเดี๋ยวจะมีตัวอย่างให้ดูอย่างเช่นตัวอย่างนะคะ อาจารย์เขียนให้ดูก่อนเมื่อกี้ A กับ B นี่ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Time เอาทุกตัวเป็นไปได้มาคูณกัน A x X x Y ใช่ไหมคะ b x x x y B x b yคำสั่งนี้จริง ๆ จับคู่ทุกตัวที่เป็นไปได้นะคะ อันนี้จะยังง่ายอยู่ ตัวอย่างอีกเหมือนในตัวอย่างค่ะมีตาราง A มี B สั่งให้มัน ก็คือเป็น a time B ผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้นะคะ คำสั่งนี้จะง่าย มันคือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้นเองถ้าจะเช็ค ข้อสอบก็ไม่ออกนะนะคะ ยังง่าย ๆอยู่การ ต่อมา Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 รีเลชั่นเพื่อแสดงข้อมูลทุกเรื่องของเรื่องคือทุก ๆ แถวในรูปแบบของยูเนี่ยนตามทฤษฎีของเซตคำสั่งก็คือยูเนี่ยนนะคะ Union a Union b คือเอาเองกับบีมารวมกันตัวนี้มีตาราง a กับตาราง B ทฤษฎีเซตของยูเนี่ยนนะคะ จะสังเกตได้ว่า ข้อมูลมันมีข้อมูลซ้ำกัน อย่างข้อมูล s1 ตารางเอก็มีกำลังดีก็มีตามทฤษฎียูเนี่ยนนะคะ ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียว จะเห็นว่าจาก 4 Records ก็คือ 4 แถวข้อมูลนะคะ แต่ว่าอันนี้กำลังเอกก็มีแต่รังบีก็มีมันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามายูเนี่ยนกันข้อมูลจาก 4 บรรทัดจะเหลือแค่ 3 บรรทัดเพราะว่า s1 มันมีอยู่ทั้ง 2 ตารางก็คือ a b เลยยูเนี่ยนนะคะ ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว ต่อมาอินเตอร์เซกชันก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record ที่ปรากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นแหละในรูปแบบของ intersection ตามทฤษฎีของเซตคำสั่งก็คืออินเตอร์เซค ให้ a อินเตอร์เซค b นะคะ ตัวอย่างตารางเดิมเลยค่ะตาราง A กับ Bข้อมูลไหนที่ทับซ้อนกันคือข้อมูล s1 มันมีทั้ง 2 ตารางกำลังเอกับตารางบีเราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้นเพราะฉะนั้นคำสั่ง a อินเตอร์เซค b จะมีผลลัพธ์แค่ Record เท่านั้นก็คือทฤษฎีของเซตนะคะ ต่อมา Deferrence ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้นๆที่ปรากฏอยู่ในตารางหนึ่งแปลตาราง 1 ไม่มีนะคะก็คืออะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตาราง 1 คำสั่งที่ใช้คือคำสั่งไว้นะแปลเป็นภาษาไทยคือเครื่องหมายลบแล้วนี่ไม่เอานะคะ อย่างเช่นที่อยู่ในเอแต่ไม่อยู่ใน B เมื่อคืนเหมือนตัวที่ทำไฮไลท์สีเหลืองไว้นะ ตารางเดิมเลยค่ะ ให้คำสั่ง A B อะไรที่อยู่ในเอแต่ไม่อยู่ในบี อันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้น บีว่าจะเป็น S4 ในทางกลับกันค่ะ บีไมนัสก็คืออยู่ในบีแต่ไม่อยู่ใน A อยู่ใน B ก็คือ S2F1 ไม่ได้ s1 อยู่ในเองเหมือนกันในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหนเราจะเอาข้อมูลนั้นไว้ข้างหน้าถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้จะเขียนแบบนี้นะคะ แต่ถ้าอยู่ในบี ไม่อยู่ใน aง ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้ ไม่ใช่ว่าทุกตารางจะชื่อเอกับบีนะคะ แล้วแต่ว่าตารางที่นักศึกษา ได้ทำมันชื่อตารางอะไร อย่างเช่นตาราง Student Student แล้วก็ Minas Address ก็ได้นะคะ อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address ก็ว่าไปนะคะ ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะเป็น Special ซึ่งมันจะแตกต่างจาก รูปแบบการทำงานของเซตโดยทั่วไปนะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากันคิวคืออะไร คือตัวนี้คอลัมน์นะคะถ้าเป็นแบบ Credit analyst นี่คอลัมน์ทั้ง 2 ตาราง 1 3 ตารางต้องเท่ากันเท่านั้นถ้าเป็น Special คือคอลัมน์หรือ ไม่จำเป็นจะต้องมีจำนวนเท่ากัน ไม่จำเป็นซึ่งคำสั่งพรุ่งนี้นี่จะถูกเรียกใช้บ่อย เพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่ มีรูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากัน คอลัมน์ ไม่เท่ากันนั่นแหละแอตทริบิวต์ของทั้ง 2 ตารางจะถูกนำมาใช้จะต้องมีเงื่อนไขต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน ก็ชื่อคอลัมน์เดียวกัน อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมี 10 คอลัมน์ อีกอันหนึ่งมี 8 คอลัมน์ ต้องมีสิ่งที่เราจะเอามาดำเนินการเนี่ยชื่อคอลัมน์จะต้องเหมือนกันนะคะคำสั่งจะมีอยู่ 4 คำสั่งด้วยกันอันแรกคำสั่ง retic หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL เราจะใช้คำสั่งเรียกว่านะคะเดี๋ยวประมาณอีก 2 สัปดาห์ต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดูซึ่งการกระทำเพื่อแสดงข้อมูลในเรคคอร์ดของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุนะคะ เงื่อนไขที่ใช้จะใช้คำว่า "Where" นะคะ เช่นA Where X อันนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำโปรแกรมจริง ๆ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้ อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ หาว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้างในการจัดการฐานข้อมูล ตัวอย่างเดิมค่ะตาราง a กับ B นะคะ ในตัวอย่างอาจารย์อาจจะเห็นว่า Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน พอใช้คำสั่ง Select หรือ Recod นะคะจะต้องมาคู่กับคำว่าเสมออย่างเช่นขึ้นต้นด้วยดีก็คือในตารางดีให้ดูที่เงื่อนไข City City ตรงนี้แปลว่าชื่อเมืองนะคะในตาราง B ค่าของ Column City อันไหนที่มีค่าเท่ากับชัยนาท ก็ดูเลยค่ะ ตาราง D City ชัยนาทนะคะ พอดีว่า City เท่ากับชัยนาทผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของ 2 ทั้งหมดนะคะ เงื่อนไขในตารางบีจังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาท เราต้องยกมาทั้งหมดมาแสดงผล ต่อมาเป็นโปรเจคนะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถว โดยเลือกมาเพียงแค่บางคอลัมน์ เช่นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ ก็แสดงผลแค่ชื่อกับรหัสนักศึกษาโดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ก็ได้ แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูลคือ มันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจคนั่นเองนะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไขนะคะ ตารางเดิมค่ะตารางเดิม คำสั่ง A ในวงเล็บ S Name กับ Age นะคะก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้น อยู่ใน Column sname และคอลัมน์ age ผลลัพธ์ที่ได้ แสดงผลแค่นี้จากตอนแรกมันมีแค่ 1 4 คอลัมน์ใช่ไหมคะ 1 2 3 อาจารย์ให้แสดงผลแค่ s name กับ age เท่านั้นนี่คือการทํางานของคําสั่ง project เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจจะใช้คำสั่ง project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ว่านะ หรืออย่างเช่นผลลัพธ์ทำไมมันโชว์แค่รหัส S1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่งคือ ดูในตาราง B นะคะ โดยค่าของคอลัมน์ City มีค่าเท่ากับ Bangkok แล้วให้แสดงผลเฉพาะ S# เท่านั้น ครูอยากรู้แค่รหัสมีเมืองที่อยู่ในเมืองกรุงเทพฯนะคะก็ส่งแค่ s1 เท่านั้นจากเมื่อก่อนนี้เรียกว่า Where City = Bangkok ปกติแล้วมันแสดงข้อมูลทุก ๆ คอลัมน์ใช่ไหมคะแต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้น ก็สามารถทำได้ความสามารถของคำสั่ง project ต่อคำสั่ง join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมดซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไปโดยที่กำหนดค่าคอลัมน์หรืออยู่ที่เหมือนกันอาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้นะคะ แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากันคำสั่งก็คือ A join B มาดูตัวอย่างกัน join นะคะ จะคล้ายๆกับ Union แต่เงินไขคือจะต้องมีโดเมนหรือว่า Column ที่เท่ากันถึงจะ joiได้นะคะ อย่างตัวนี้มี 2 คนล่ำมี 2 คอลัมน์รายการข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้ายๆกับคำสั่ง union นะคะ เช่นตัวนี้คำสั่ง join มีอะไรที่เหมือนกั นCityใช่ไหมคะ A join B มี 6 คอลัมน์นะคะ City เหมือนกัน แต่เนื่องจาก Attribute ที่มีคำว่า City เหมือนกันนี่มันจะต้องดูพิจารณาในเรคคอร์ดของรหัสด้วย เพราะฉะนั้นถ้ามันเกินมามันเกินแล้วต้องทำข้อมูลซ้ำให้เกิดขึ้นอันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงานคือเติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ Records นะคะ มีค่า Attribute ก็คือที่เท่ากันเดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลย ต่อมาจะเป็นการแสดงข้อมูลจาก 2 รีเลชั่นโดยที่รีเลชั่นหรือว่าทั้งสองตารางนี่มีแอตทริบิวต์หรือรอบมีคอลัมน์นี่อย่างน้อย 1 คอลัมน์ที่เหมือนกัน ผลลัพธ์จากคอลัมน์นะคะจากตารางที่มีจำนวน Attribute มากกว่านี่จะถูกจับคู่คอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่านะคะ คำสั่งรูปแบบก็คือ a b y by B มันจะเป็นคล้ายๆกับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะต้องเป็น Subset ของตัวตั้งก็คือในตัวตั้งมี a ไหมมีมี b ไหมมี c ไหมมีรับทุกตัวคือตัวที่แมทกับตัวหารอะไรบ้างที่อยู่ใน Aมี X Y Z มี มีแค่ X C มีแค่ xเ พราะฉะนั้นสิ่งที่เอา ABC หารได้ครบทุกตัวมีแค่ X ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมด จะมีการตั้งเงื่อนไขมาแล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้ หลักการนี้จะใช้ตอนที่เราค้นหาข้อมูลอย่างเช่นใน Google นะคะ อาจารย์อยากได้กระเป๋าสีแดงมี 6 ล้อลากเงื่อนไขอยากได้กระเป๋าสีแดงมี 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่ฉันต้องการแค่อย่างเดียวเท่านั้นเป็นต้นนะคะ เป็นต้น อย่างเช่นตัวอย่างข้อมูลนะคะ ในตาราง A มีข้อมูลตามนี้ ตาราง B มีคอลัมน์เดียวคือตัวนี้P 2 ให้ a d y B B ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้างของ อันนี้ P2อันนี้ P2 เพราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่2 Record เท่านั้นที่มี P2 อยู่ด้วยอันนี้ก็จะยังตรงตามเงื่อนไขนะคะ ถ้าเพิ่มอีกนะคะ B P1 P2 P3 P6 S2 มีแค่นี้มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรงมีที่ตรงแค่ s1 เท่านั้นที่เอาฺ B ทุกตัวหารได้ลงตัว คือหลักการนะคะวันนี้จะประมาณนี้เพราะว่าเดี๋ยวอาจจะให้เช็คโปรแกรมค่ะเนื้อหาจะมีแค่นี้เดี๋ยวจะเช็คในห้องแลปว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะเนื้อหาจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็คโปรแกรมในห้องเรียนนะคะ ก็เลยสั้นนิดหนึ่งเพราะว่าหลังปีใหม่ขอเช็คโปรแกรมก่อนสัปดาห์หน้าอาจจะเริ่มใช้โปรแกรมอาทิตย์นี้ก็เลยเดี๋ยวเนื้อหาจะหมดเท่านี้เดี๋ยวเรามาเช็คดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ ความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็คห้องแลปก่อน ขอบคุณมากค่ะ