(อาจารย์เกวลี) โอเคค่ะ เดี๋ยวเริ่มเลยแล้วกันนะคะ งวดนี้จะเป็นบทที่ 7 หลังปีใหม่อะไรจะไม่เยอะนะคะ นิดเดียวแล้วก็วันนี้ไม่มีการบ้าน มีการบ้านเฉพาะอาทิตย์นี้เท่านั้นนะคะ เพราะถึงให้ปีใหม่ บทนี้นะคะ จะเป็นเกี่ยวกับวิชาพีชคณิตเชิงสัมพันธ์ก็จะเป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพีชคณิตเชิงสัมพันธ์หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูลคือการการข้อมูลของเรา จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ที่เราสร้างตารางใหม่ขึ้นมานะคะ มันอาจจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นข้อมูลในฐานข้อมูลของเรา ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิม กับแบบพิเศษ จะเป็นอย่างละ 4 ตัว แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษก็คือ Denitional นะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์นะคะ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่ จะมีการกระทำต้องมีอาชีพเดียวคือในตารางจะต้องมีข้อมูลเกิดขึ้นเช่นตารางนักศึกษาก็จะมีแอตทริบิวต์หรือว่าข้อมูลที่เรามีก็คือชื่อ นามสกุล เป็นต้น การกระทำของกลุ่มที่เป็นแบบดั้งเดิมจะมีอยู่ 4 อย่างมี Product มี Uniaแล้วก็มีประเด็นวันนี้จะต้องเป็นภาษาอังกฤษเพราะว่าคำสั่งในระบบจัดการฐานข้อมูลก็จะเป็นภาษาอังกฤษประมาณนี้นะคะ อันแรก Product นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัดหรือทุก ๆ เล็กคอร์ดที่เรามีที่สามารถเป็นไปได้โดยการจับคู่ผลคูณคาร์ทีเซียนนี่ก็เป็นคณิตศาสตร์อย่างง่ายคำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า Time t-i-m-e-s รูปแบบของมัน ก็คือในกรอบสี่เหลี่ยมนะคะ ก็คือเอา ฟ บีมันมา x กันเดี๋ยวจะมีตัวอย่างให้ดูอย่างเช่นตัวอย่างนะคะ การเขียนให้ดูก่อนเมื่อกี้ a กับ B นี่ถ้าคำสั่ง Product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Timeเอาทุกตัวเป็นไปได้มาคูณกัน a x x a x y ใช่ไหมคะ b x x x y b x b y อันนี้คำสั่งนี้จริง ๆ จะง่าย จับคู่ทุกตัวที่เป็นไปได้นะคะ อันนี้จะยังง่ายอยู่ อีกเหมือนในตัวอย่างค่ะ มีตาราง A มี ตาคาง b ถ้าสั่งให้มันคูณกันก็คือเป็น a time B ผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้คำสั่งนี้จริง ๆ คือ 3 x 3 ได้ 9 ต้องได้ 9 Records 9 แถวoั่เองถ้าจะเช็คแนวข้อสอบก็ไม่ออกนะนะคะ ยัง ๆ อยู่การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกัน ก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 Relation เพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถวในรูปแบบของ Union ตามทฤษฎีของเซต คำสั่งก็คือ นะคะ a Union b คือเอาเองกับบีมารวมกันตัวนี้มีตาราง a กับตาราง b ทฤษฎีเซตของ Union นะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกัน อย่างข้อมูล s1 ตาราง ก็มีกำลังดีก็มีตามทฤษฎี นะคะ ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวจะเห็นว่าจากสี Records ก็คือสีแถวข้อมูลนะคะ แต่ว่าอันนี้ ตาราง a ก็มีแต่รังบีก็มีมันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามา Union กันข้อมูลจาก 4 บรรทัดจะเหลือแค่ 3 บรรทัดเพราะว่า s1 ไม่มีทั้ง 2 ตารางก็คือ a b เลย ตามทฤษฎี Union นะคะ ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียวอินเตอร์เซกชันก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record ที่มันปรากฏอยู่ทั้ง 2 ตาราง ที่มันทับซ้อนกันนั่นล่ะ ในรูปแบบของ Intersection ตามทฤษฎีของเซตคำสั่งก็คือให้ a intersให้ a อินเตอร์เซค b ตัวอย่างตารางเดิมเลยค่ะ a กับ b ข้อมูลไหนที่ทับซ้อนกันคือข้อมูล s1 ไม่มีทั้ง 2 ตารางa กับตาราง b เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้นเพราะฉะนั้น คำสั่ง a อินเตอร์เซค b จะมีผลลัพธ์แค่ 1 record เท่านั้น ก็คือทฤษฎีของเซตนะคะ ต่อมา different ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตารางนึ่งแปลตาราง 1 ไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตารางหนึ่ง คำสั่งที่ใช้คือคำสั่งไว้นะแปลเป็นภาษาไทยคือคำสั่ง Minus เครื่องหมายลบแล้วนี่ไม่เอาอย่างเช่นที่อยู่ใน a แต่ไม่อยู่ใน b เมื่อเหมือนตัวที่ทำไฮไลท์สีเหลืองไว้เหมือนเด้วยค่ะ ให้คำสั่ง a B อะไรที่อยู่ในเอเชียไม่อยู่ในบีอันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง b เพราะฉะนั้น ไม่นะบีว่าจะเป็น S4 ในทางกลับกันค่ะ บี ก็คืออยู่ในบีแต่ไม่อยู่ใน a อยู่ดี ๆ S2F1 ไม่ได้ s1 อยู่ในเองเหมือนกันในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหนเราจะเอาข้อมูลในวันข้างหน้าถ้าอยู่ใน a ไม่อยู่ใน b จะเป็นแบบนี้จะเขียนแบบนี้นะคะ แต่ถ้าอยู่ใน b ไม่อยู่ใน a ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้ไม่ใช่ว่าทุกตารางจะชื่อ นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำชื่อตารางอะไรอย่างเช่น ตาราง Student Student แล้ว Minus Student ก็ได้นะคะ อยู่ในตาราง Student แต่ไม่อยู่ในร้าน Address ว่าไปนะคะ ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากการทำงานของเซตโดยทั่วไป โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวนแอตทริบิวต์เท่ากันคิวคืออะไร คือตัวนี้ Column นะคะ ถ้าเป็นแบบ Credit analyst นี่ คอลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากันเท่านั้น ถ้าเป็น Special คือคอลัมน์หรือ Special ไม่จำเป็นจะต้องมีจำนวนเท่ากันไม่จำเป็นซึ่งคำสั่งพวกนี้นี่จะถูกเรียกใช้บ่อยเพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่รูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากันไม่เท่ากันนั่นแหละแอตทริบิวต์ของทั้ง 2 ตารางจะถูกนำมาใช้จะต้องมีเงื่อนไข จะต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมีอีกคอลัมน์มี 8 คอลัมน์ ต้องมีสิ่งที่เราจะเอามาดำเนินการเนี่ยชื่อคอลัมน์จะต้องเหมือนกันนะคะ คำสั่งจะมีอยู่ 4 คำสั่งด้วยกันอันแรกคำสั่ง Restic หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL เราจะใช้คำสั่งเรียกว่า Select นะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดูนะคะ ซึ่งการกระทำเพื่อแสดงข้อมูลในเรคคอร์ดของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุ เช่น a Where Operator y อันนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำโปรแกรมจริง ๆ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ หาว่านักศึกษาจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูลตัวอย่างเดิมค่ะ ตาราง a กับ b ตัวอย่างอาจารย์อาจจะเห็นว่า เอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อนพอบอกให้ใช้คำสั่ง Select หรือ Racing นะคะ จะต้องมาคู่กับคำว่าเสมออย่างเช่นขึ้นต้นด้วยดีก็คือในตารางดีให้ดูที่เงื่อนไขซิตี ซิตีตรงนี้แปลว่าชื่อเมืองนะคะ ในตาราง b ค่าของ Column City อันไหนที่มีค่าเท่ากับชัยนาทขอดูหน่อยค่ะกำลังดีตาราง b City ชัยนาทนะคะ พอดีว่า City เท่ากับชัยนาทผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ที่ F2 ทั้งหมดนะคะ เงื่อนไขในตาราง b จังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาท เราต้องยกมาทั้งหมดมาแสดงผลทั้งหมดต่อมาเป็น Project นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถวโดยเลือกมาเพียงแค่บางคอลัมน์เห็นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ก็ได้ แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูล คือมันจะเป็นคำสั่งเกี่ยวกับการทำ Project นั่นเอง รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไขนะคะ ตารางเดิมค่ะ ตารางเดิมคำสั่ง a ในวงเล็บ Ha นะคะ ก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้น อยู่ใน Column sname และคอลัมน์ age ผลลัพธ์ที่ได้จะแสดงผลแค่นี้ จากตอนแรกมันมีแค่ 4 คอลัมน์ ใช่ไหมคะ 1 2 3 อาจารย์ให้แสดงผลแค่ sname เท่านั้นนี่คือการทํางานของคําสั่ง P roject เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจจะใช้คำสั่ง Project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ว่านะ หรืออย่างเช่น ผลลัพธ์ทำไมมันโชว์แค่รหัส s1คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่งคือดูในตาราง b นะคะ โดยค่าของคอลัมน์ City มีค่าเท่ากับ Bangkok แล้วให้แสดงผลเฉพาะ s# เท่านั้นครูอยากรู้แค่รหัสมีเมืองที่อยู่ในเมืองกรุงเทพฯ นะคะ ก็โชว์แค่ s1 เท่านั้นจากเมื่อก่อนนี้เรียกว่า Where City กับ Bangkok ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ แต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้น ก็สามารถทำได้นะคะ นี่คือความสามารถของคำสั่ง Project ประมาณคำสั่ง Join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมดซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป โดยที่กำหนดค่าคอลัมน์หรือว่า Attribute ที่เหมือนกัน อาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้นะคะ แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากันคำสั่งก็คือ A BB มาดูตัวอย่างกันจอยนะคะ จะคล้าย ๆ กับ Union แต่เงื่อนไข ก็คือจะต้องมีโดเมนหรือว่า Column ที่เท่ากันถึงจะจอยได้นะคะอย่างตัวนี้มี 2 คนล่ำมี 2 คอลัมน์รายการข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้าย ๆ กับคำสั่งอยู่นี่นะคะ อย่างเช่น ตัวนี้คำสั่ง Join มีอะไรที่เหมือนกัน มี City ใช่ไหมคะ อันนี้มี 6 คอลัมน์นะคะ City เหมือนกัน แต่เนื่องจาก Attribute ที่มีคำว่า City เหมือนกันนี่ มันจะต้องดูพิจารณาในเรคคอร์ดของรหัสด้วย เพราะฉะนั้น ถ้ามันเกินมา มันเกินแล้วต้องทำข้อมูลซ้ำให้เกิดขึ้นอันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงานคือเติมข้อมูลเข้าไปนะคะเพื่อให้ผลลัพธ์ที่ได้ในทุกๆRecords นะคะ มีค่า Attribute ก็คือที่เท่ากันเดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลย ต่อมาจะเป็นการแสดงข้อมูลจาก 2 Relation โดยที่รีเลชั่นหรือว่าทั้ง ตารางนี่มีแอตทริบิวต์หรือรอบมีคอลัมน์เนี่ยอย่างน้อย 1 คอลัมน์ที่เหมือนกันกดรับจากคอลัมน์นะคะ จากตารางที่มีจำนวน Attribute ที่มีจำนวนมากกว่านี่ คอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่าคำสั่งรูปแบบก็คือ a b y by b มันจะเป็นคล้าย ๆ กับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะ จะต้องเป็นซับเซตของตัวตั้งนะคะ ก็คือในตัวตั้งมี a ไหมมี มี b ไหมมีไหมมี มีตัวรับทุกตัวคือตัวที่แมทกับตัวหารอะไรบ้าง ที่อยู่ใน A มี XYZ มีมีแค่ C มีแค่ x เพราะฉะนั้น สิ่งที่เอา ABC หารได้ครบทุกตัวมีแค่ X ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมด เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้อันนี้จะใช้ตอนที่เราค้นหาข้อมูลอย่างเช่นใน Google นะคะ อาจารย์อยากได้กระเป๋าสีแดงมี 6 ล้อลากเงื่อนไขอยู่ในกระเป๋าสีแดงมีล้อ 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่อาจารย์ต้องการแค่อย่างเดียวเท่านั้น เป็นต้นนะคะ เป็นต้น ตัวอย่างข้อมูลในตาราง A มีข้อมูลตามนี้ ตาราง B มีคอลัมน์เดียวคือตัวนี้ b2 ให้ ady bB B ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้าง ของ AB2 อันนี้2 เพราะฉะนั้น ผลลัพธ์ที่ได้จะมีแค่สองรักคอร์ดเท่านั้นที่มี P2 อยู่ด้วยอันนี้ก็จะยังตรงตามเงื่อนไขนะคะ ถ้าเพิ่มอีกนะคะ b P1 P2 P3 ปี 6 S2 มีแค่นี้มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรง มีที่ตรงแค่ s1 เท่านั้นที่เอา b ทุกตัวหารได้ลงตัว ก็คือหลักการนะคะ ปัญหานั่นล่ะต้องหาลงตัวนะคะ วันนี้จะประมาณนี้เพราะว่าเดี๋ยวอาจจะให้เช็กโปรแกรมค่ะ เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็กในห้องแลปว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ เหนื่อยนิดหนึ่งเพราะว่าหลังปีใหม่ขอเช็ดโปรแกรมก่อนสัปดาห์หน้าอาจจะเริ่มใช้โปรแกรมอาทิตย์นี้ก็เลยเดี๋ยวมาเท่านี้เดี๋ยวเรามาเช็กดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ ถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็คห้องแลปก่อนขอบคุณมากค่ะ