โหล โหล โอเคค่ะ บทที่ 7 สไลด์จะไรจะไม่เยอะนะคะ นิดเดียว แล้วก็วันนี้จะไม่มีการบ้าน ไม่มีปัญหา เฉพาะอาทิตย์นี้เท่านั้น หรือว่าให้ปีใหม่นี้นะคะ กลับเป็นเกี่ยวกับพีชคณิตเชิงสัมพันธ์น่าจะเป็นเกี่ยวกับกระบวนการโดยใช้คณิตศาสตร์ออย่างง่ายนะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพีชคณิตเชิงสัมพันธ์นะคะ หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล ก็คือการจัดการข้อมูลของเรานะคะ จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์นะคะ ที่เราสร้างตารางใหม่ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นกับข้อมูลและฐานข้อมูลของเรานะคะ ส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิมกับแบบพิเศษ จะเป็นอย่างละ 4 ตัวนะคะ แบบตั้งเดิมก่อนนะคะ ภาษาอังกฤษก็คือ... โดยมันจะเป็นสิ่งที่เกิดขึ้นกับตารางความสัมพันธ์ โดยอาศัยทฤษฎีของซึ่งเราเคยเรียน set มาแล้วในวิชาคณิตนะคะ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่จะมีการกระทำ จะต้องมีก็คือในตารางจะต้องมีข้อมูลเกิดขึ้นใช่ไหมคะ ตารางนักศึกษาก็จะมีก็คือข้อมูลที่มี ก็คือรหัสนักศึกษาชื่อ-นามสกุล เป็นต้นนะคะ การกระทำของกลุ่มที่เป็นแบบดั้งเดิมนะคะ จะมีอยู่ 4 อย่าง มี Product มี Union แล้วก็มี Intersection B different อันนี้จะเป็นภาษาอังกฤษนะคะ เพราะว่าคำสั่งในระบบจัดการฐานข้อมูลมันจะเป็นภาษาอังกฤษ ประมาณนี้นะคะ อันแรก Product นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัดหรือทุก ๆ recoed ที่เรามีนะคะ ที่สามารถเป็นไปได้โดยการจับคู่แบบคูณคาร์ทีเซียนนะคะ อันนี้ก็เป็นคณิตศาสตร์อย่างง่าย คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า "Time" T-i-m-e-s รูปแบบของมัน ก็คือในกรอบสี่เหลี่ยมนะคะ A time ก็คือเอา A กับ B มันมา8กันนะคะ เดี๋ยวจะมีตัวอย่างให้ดู เช่น ตัวอย่างนะคะ เดี๋ยวอาจารย์เขียนให้ดูก่อน เมื่อกี้ a กับ B A B ถ้าคำสั่ง Product หรือคำสั่งในระบบจัดการฐานข้อมูลเราจะใช้คำสั่ง TIMES ก็คือเอาทุกตัวที่เป็นไปได้มาคุยกันA x X A x Y ใช่ไหมคะ ก็จะมีตัวนี้ B x X B x Y ก็จะเป็น B X C Y คำสั่งนี้จริง ๆ นะคะ จับคู่ทุกตัวที่เป็นไปได้นะคะ อันนี้จะยังง่ายอยู่ ตัวอย่างอีกนะคะ เหมือนในตัวอย่างค่ะ มีตาราง A นะคะ มีตาราง B นะคะ ถ้าหสั่งให้มันคูณกันก็คือเป็น a timedsผลลัพธ์ที่ได้จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้คำสั่งนี้จริง ๆ มันก็คือ 3 * 3 ได้ 9 มันต้องได้ 9 record แถวนั่นเอง ถ้าจะเช็ก ในข้อสอบก็จะมีออกนะนะคะ อันนี้จะยังง่ายอยู่ ต่อมาการ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันนะคะ ก็จะเป็นการรวมกันของ 2 ข้อมูล หรือ 2 Relation เพื่อแสดงข้อมูลทุก ๆ Record หรือทุก ๆ แถวในรูปแบบของยูเนี่ยนตามทฤษฎีของเซต คำสั่งก็คือยูเนี่ยนนะคะ A UNION B ก็คือเอาเอกับบีมารวมกันนะ อย่างเช่นตัวนี้ตาราง a กับตาราง B ทฤษฎีเซตของยูเนี่ยนนะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกันแหล่งข้อมูล S1 ตาราง A ก็มีตาราง B ก็มี ตามทฤษฎี Union ถ้ามันซ้ำกันเราก็เอามาแยกข้อมูลเดียว จะเห็นว่า 4 Record ก็คือ 4 แถวข้อมูลนะคะ แต่ว่าอันนี้ตาราง A ก็มีอะไรดีก็มีมันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามายูเนี่ยนกันข้อมูลจาก 4 บรรทัดจะเหลือ 3 บรรทัดเพราะว่า s1 มันมีอยู่ทั้ง 2 ตารางตารางเลย ก็คือ a กับ B เลยตามทฤษฎียูเนี่ยนนะคะ ส่วนที่ทับซ้อนกัน ก็คือเอาแค่ข้อมูลเดียว ต่อมา Intersection ก็ตามทฤษฎีเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record นะคะ ที่ปรากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นล่ะ ในรูปแบบของIntersectionตามทฤษฎีของเซตคำสั่งก็คือนะคะ ให้ a อินเตอร์เซค bตัวอย่างจากตารไปค่ะ A กับ Bข้อมูลไหนที่ทับซ้อนกันคือ ข้อมูล S1 มันมีทั้ง 2 ตารางตาราง A กับตาราง B เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้น เพราะฉะนั้น คำสั่ง A intersect B จะมีผลลัพธ์แค่ 1 เท่านั้นก็คือ s1ตามทฤษฎีของเซตนะคะ ต่อมา Difference นะคะ ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ปรากฏอยู่ในตาราง 1 แต่อีกตาราง 1 ไม่มีนะคะ อะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่อีกตาราง 1 คำสั่งที่ใช้คือ คำสั่งใช้ คือ คำสั่ง MINUS แปลเป็นภาษาไทย ก็คือเครื่องหมายลบนั่นเอง ไม่เอานะคะ เช่น A MINUS B ก็คืออยู่ใน A แต่ไม่อยู่ใน B นะคะ คือ เหมือนตัวที่อาจารย์ทำไฮไลท์สีเหลืองเอาไว้นะตารางเดิมเลยค่ะ ให้คำสั่ง A MINUS B อะไรที่อยู่ใน a แต่ไม่อยู่ใน B อันนี้ไม่ใช่แน่นอน เพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้น A MINUS B ก็จะเป็น s4 ในทางกลับกันค่ะ A MINUS B เป็น B MINUS A อยู่ใน B แต่ไม่อยู่ใน A อยู่ใน B คือ S2เพราะว่า s1 ไม่ได้ s1 อยู่ใน A เหมือนกันนะคะ ในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหนเราจะเอาข้อมูลอะไรไว้ข้างหน้านะคะ ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้จะเขียนแบบนี้นะคะ แต่ถ้าอยู่ในบีไม่อยู่ใน a ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้นะคะ ไม่ใช่ทุกตารางนะคะ ขึ้นอยู่กับว่าตารางที่นักศึกษาได้ทำมันชื่อตารางอะไร อย่างเช่นตาราง Student Student แล้วก็ MINUS Address ก็ได้นะคะ อยู่ในตาราง Student แต่ไม่อยู่ในตาราง Address ก็ว่าไปนะคะ ต่อมาจะเป็น ตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการดำเนินการของเซตโดยทั่วไปนะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวนแอตทริบิวต์เท่ากัน Attribute คืออะไร อธิบายคือตัวนี้คอลัมน์นะคะ ถ้าเป็นแบบ Carditional Set จะต้องเท่ากันเท่านั้นนะคะ ถ้าเป็น Special ก็คือ Column หรืออธิบายไม่จำเป็นจะต้องมีจำนวนเท่ากัน ไม่จำเป็นซึ่งคำสั่งพวกนี้จะถูกเรียกใช้บ่อยเพราะว่าฐานข้อมูลแต่ละฐานข้อมูลอาจจะมีตารางที่บรรจุอยู่ มีรูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากันก็คือคอลัมน์มันไม่เท่ากันนั่นล่ะนะคะ Attribute ของทั้ง 2 ตารางถูกนำมาใช้ ต้องมีเงื่อนไขนะคะ ต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน ก็คือชื่อคอลัมน์เดียวกัน อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมี 10 คอลัมน์ อีกอีกตาราง มี 8 คอลัมน์ แต่จะต้องมีสิ่งที่เราเอามาดำเนินการ ชื่อคอลัมน์จะต้องเหมือนกันนะคะ คำสั่งจะมีอยู่กี่คำสั่งด้วยกันอันแรกคำสั่ง Restrict หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ ภาษา SQL ใช้คำสั่งที่เรียกว่า Select นะคะ ประมาณอีก 2 สัปดาห์จะต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดูนะคะ ซึ่งการกระทำใน Record ของข้อมูลนั้น ๆ จะต้องตามเงื่อนไขที่ระบุนะคะ เงื่อนไขที่ใช้จะใช้คำว่า where นะคะ เช่น a where x are Operator y อย่างนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำในโปรแกรมจริง ๆ นักศึกษาจะเห็นภาพให้เข้าใจมากกว่านี้อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ นะคะ ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูล ตัวอย่างเดิมค่ะ ตาราง A กับ B นะคะ ในตัวอย่างอาจารย์อาจจะเห็นว่า เอ๊ะ คอลัมน์มันอย่างเท่ากันนี่ เพื่อให้เห็นภาพได้ชัดเจนนะคะ อาจารย์จะยังยกตัวอย่างเป็นแบบนี้ก่อน พอใช้คำสั่ง Selectหรือ Restrict จะต้องมาคู่กับคำว่า Where เสมอ อย่างเช่นขึ้นต้นด้วย B ก็คือในตาราง B ให้ดูที่เงื่อนไข City City คือตรงนี้ แปลว่าชื่อเมืองนะคะ ในตาราง D ค่าของคอลัมน์ City อันไหนที่มีค่าเข้ากับชัยนาท เราก็ดูเลยค่ะ ตาราง B City Chinant นะคะ เราพิมพ์ B Where City เท่ากับชัยนาท ผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของ record ที่ S2 เพราะว่าเงื่อนไขมันก็คือในตารางบีจังหวัดข้อมูลอะไรที่มีข้อมูลก็ต้องยกมาทั้งหมดมาแสดงผล ต่อมาเป็น project นะคะ ก็จะเป็นการเรียกข้อมูลทุก ๆ แถวโดยเรียกว่าเพียงแค่บางคอลัมน์ เช่น อาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลนักศึกษาจะมีคอลมัน์20 Column ก็ได้อาจารย์อยากดูแค่ 2 คนนี้เท่านั้นเราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูลคือมันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจคนั่นเองนะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วก็ตามด้วยเงื่อนไขนะคะ ตารางเดิมค่ะ ตารางเดิม คำสั่ง A ในวงเล็บ S_NAME กับ Age ก็คืออธิบายก็คือเอาข้อมูลในตาราง A เท่านั้น อยู่ในคอลัมน์ S_name กับ Age และคอลัมน์เอกผลลัพธ์ที่ได้จะแสดงผลแค่นี้จากตอนแรกมันมีแค่ 4 คอลัมน์ใช่ไหมคะ 1 2 3 4 อาจารย์ให้แสดงผลแค่ S name กับ age เท่านั้นอันนี้คือการทํางานของคําสั่ง project อาจจะมีเป็นร้อย ๆ คอลัมน์ อาจารย์อาจจะเลือกรู้แค่อาจารย์สนใจ เราจะใช้คำสั่ง Project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ อันนี้แค่ตัวอย่างกับคร่าว ๆ นะ หรืออย่างเช่นผลลัพธ์มันโชว์แค่ S1 นะคะ โดยค่าของ Column City มีค่าเท่ากับ Bangkok แล้วให้แสดงผลเฉพาะ S# เท่านั้น คือ อยากรู้แค่รหัสที่มีเมืองที่อยู่ในเมืองกรุงเทพฯ นะคะ ก็โชว์แค่ s1 gท่านั้น จากเมื่อก่อนนี้บอกว่า Where City เท่ากับ Bangkok ปกติมันจะแสดงข้อมูลทุกคอลัมน์ใช่ไหมคะ ถ้าอาจารย์กำหนดให้มาแสดงแค่คอลัมน์ในคอลัมน์หนึ่งเท่านั้นก็สามารถทำได้นะคะ อันนี้คือความสามารถของคำสั่ง Project ต่อมาคำสั่ง Join ค่ะ จะเป็นการแสดงข้อมูลที่แสดงได้ทั้งหมด ซึ่งเกิดจากการเชื่อมโยงจากตาราง 2 ตารางขึ้นไป โดยที่กำหนดค่าคอลัมน์ หรือ Attribute ที่เหมือนกัน อาจจะเป็นคอลัมน์เดียวหรือมากกว่าก็ได้นะคะ แต่ที่สำคัญคือคอลัมน์จะต้อง ชื่อเหมือนกันโดเมนของข้อมูลชื่อเหมือนกัน รูปแบบคำสั่งก็คือ มาดูตัวอย่างกันจอยนะคะ จะคล้าย ๆ กับยูเนี่ยน เงื่อนไข คือ จะต้องมีโดเมนหรือคอลัมน์ที่เท่ากันถึงจะ Join ได้ อย่างตัวนี้มี 2 คอลัมน์วันนี้มี 2 คน ข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้าย ๆ กับคำสั่งอยู่ นะคะ อย่างเช่นตัวนี้ คำสั่งจอย มีอะไรที่เหมือนกัน มี City ใช่ไหมคะ A JOIN B อันนี้มี 6 คอลัมน์นะคะ ตัวนี้นะคะ City เหมือนกัน แต่เนื่องจาก ที่มีคำว่า City เหมือนกัน ลองดูพิจารณาในเรคคอร์ดของรหัสด้วยนะคะ เพราะฉะนั้น ถ้ามันเกินมานะคะ มันเกินเราจะต้องทำข้อมูลซ้ำให้เกิดขึ้น อันนี้เป็นรูปแบบหนึ่งของการทำงาน คือ เติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้นี่ ทุก ๆ Record นะคะ แอตทริบิวต์ก็คือที่เท่ากัน เดี๋ยวอันนี้เราจะไปดูอีกทีหนึ่ง ในตอนที่เราทำตัวโปรแกรมเลย ต่อมา จะเป็นการแสดงข้อมูลจาก 2 รีเลชั่น โดยที่รีเลชั่นหรือว่าทั้ง 2 ตารางนี่ มี Attribute Attribute หรือว่ามีคอลัมน์อย่างน้อย 1 คอลัมน์ที่เหมือนกันนะคะ ผลลัพธ์จากคอลัมน์จากตารางที่มีจำนวน Attribute มากกว่านี่จะถูกจับคู่ อีกคอลัมหนึ่งกับอีกคนตารางที่มีคอลัมน์น้อยกว่าคำสั่งรูปแบบก็คือ A DIVIDED BY B มันจะเป็นคล้าย ๆ กับการหารนะคะ คำสั่งตัวนี้ การเป็นตัวหารนะคะ จะต้องเป็นสับเซตของตัวตั้งนะคะ ก็คือในตัวตั้งมี A ไหม มี B ไหม มี ใบิ๊กซีไหมมีผลลัพธ์ทุกตัว คือ ตัวที่แม็ตกับตัวหาร อะไรบ้างที่อยู่ใน A A มี X Y Z B มี L E X C B เพราะฉะนั้น สิ่งที่เอา A B C หารได้ครบทุกตัวมีแค่ X ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมดนะคะ เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ x ตัวเดียวเท่านั้น ที่ชื่อเข้าทุกเงื่อนไข 3 เงื่อนไขที่เราตั้งไว้ รายการนี้จะใช้ในการที่เราค้นหาอย่างเช่นใน Google อาจารย์อยากได้กระเป๋าสีแดง มี 6 ล้อลาก เงื่อนไข อยากได้กระเป๋าสีแดง มีล้อ 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่อาจารย์ต้องการแค่อย่างเดียวเท่านั้น เป็นต้นนะคะ เป็นต้นเช่นตัวอย่างมีข้อมูลนะคะ ในตาราง A มีข้อมูลตามนี้ ตาราง b มีคอลัมน์เดียวคือตัวนี้ P2 ให้ A DIVIDED BY B ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้าง ของเออันนี้ p2อันนี้ P2 เพราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่ 2 เรคคอร์ดเท่านั้น ที่มี P2 อยู่ด้วยนะคะ อันนี้ก็จะยังตรงตามเงื่อนไขนะคะ ถ้าเพิ่มอีกนะคะ B P12 P2 P3 S6 S2 มีแค่นี้ไม่ตรง S3 มีแค่นี้ไม่ตรง แค่นี้ไม่ตรง พี่โต vs หนึ่งเท่านั้นที่เอา B ทุกตัวหารได้ลงตัว อันนี้คือหลักการนะคะ ก็คือการหารนั่นแหละ ก็คือหารลงตัวนะคะ วันนี้จะประมาณนี้นะคะ เดี๋ยวจะให้เช็คโปรแกรมค่ะล่าม เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็คในห้องแลปว่า โปรแกรมนี้จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะเนื้อหาจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ ก็เลยสั้นนิดหนึ่ง เพราะหลังปีใหม่จะขอเช็กโปรแกรมก่อน สัปดาห์หน้าอาจจะเริ่มใช้โปรแกรมอาทิตย์นี้ก็เลยเดี๋ยวหาจะหมดเท่านี้แล้วเดี๋ยวมาเช็คดูว่าในห้องเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามค่ะ กับขอบคุณถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะเดี๋ยวเช็คแลปก่อนขอบคุณมากค่ะ