--- title: (ASR) หลักการและระบบการจัดการฐานข้อมูล subtitle: date: วันอังคารที่ 3 มกราคม 2566 เวลา 12.50 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์เกวลี) จอไม่ขึ้น โอเคค่ะ เดี๋ยวเริ่มเลยแล้วกันนะคะ บทนี้ จะเป็นบทที่ 7 ปีใหม่ อะไรจะไม่เยอะนะคะนิดเดียวแล้วก็วันนี้ไม่มีการบ้านมีการบ้านเฉพาะอาทิตย์นี้เท่านั้นนะคะถึงให้ปีใหม่ บทนี้นะคะจะเป็นเกี่ยวกับพีชคณิตเชิงสัมพันธ์ ก็จะเป็นกระบวนการโดยใช้คณิตศาสตร์อย่างง่ายนะคะเที่ยวมาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย โดยพีชคณิตเชิงสัมพันธ์ หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล ก็คือการการข้อมูลของเรานะคะ จะเป็นการกระทำที่เกิดขึ้นกับตาราง หรือความสัมพันธ์นะคะ ที่เราสร้างตารางใหม่ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นข้อมูลในฐานข้อมูลของเรา นะคะ ซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิม กับแบบพิเศษ จะเป็นอย่างละ 4 ตัว นะคะ แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษ ก็คือ Traditional นะคะก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นเนี่ยจะมีการกระทำต้องมีอาชีพเดียวคือในตารางจะต้องมีข้อมูลเกิดขึ้น ใช่ไหมคะ เช่นตารางนักศึกษาก็จะมีแอตทริบิวต์ หรือว่าข้อมูลที่เรามีก็คือ รหัสนักศึกษา ชื่อนามสกุลเป็นต้นการกระทำของกลุ่มที่เป็นแบบดั้งเดิมนะคะ จะมีอยู่ 4 อย่าง มี product มี Union Intersection Difference แล้วก็มีประเด็นวันนี้จะต้องเป็นภาษาอังกฤษเพราะว่าคำสั่งในระบบจัดการฐานข้อมูลก็จะเป็นภาษาอังกฤษ ประมาณนี้นะคะ อันแรก Product นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุกๆบรรทัดหรือทุกๆ Record ที่เรามีที่สามารถเป็นไปได้โดยการจับคู่ผลคูณคาร์ทีเซียน นี่ก็เป็นคณิตศาสตร์อย่างง่ายนะคะ คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูล จะใช้คำว่า Time นะคะ t-i-m-e-s รูปแบบของมันก็คือในกรอบสี่เหลี่ยมนะคะ ก็คือ A TIMES B เอาx กันเดี๋ยวจะมีตัวอย่างให้ดูอย่างเช่นตัวอย่างนะคะการเขียนให้ดูก่อนเมื่อกี้ a กับ B นี่ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูล ใช้คำสั่ง Times ก็คือเอาทุกตัวเป็นไปได้มาคูณกัน a x x a x y ใช่ไหมคะ b x xx y B x b yfzy คำสั่งนี้จริงๆจับคู่ทุกตัวที่เป็นไปได้นะคะ ยังไงอยู่ยังอีกเหมือนในตัวอย่างค่ะมีตาราง A นะคะ มีตาราง D นะคะ ถ้าสั่งให้มันคูณกัน ก็คือเป็น a time B ผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้นะคะ คำสั่งนี้จะง่าย มันก็คือ 3 x 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้นเองถ้าจะเช็ก ในข้อสอบก็ไม่ออกนะนะคะยังๆอยู่การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันนะคะ ก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 รีเลชัน เพื่อแสดงข้อมูลทุกๆ Record เรื่องคือทุกๆแถวในรูปแบบของยูเนียนตามทฤษฎีของเซตคำสั่งก็คือยูเนี่ยนนะคะa Union b คือเอา A กับ B มารวมกันตัวนี้ มีตาราง a กับตาราง B ทฤษฎีเซตของยูเนียนนะคะ จะสังเกตได้ว่า ข้อมูลมันมีข้อมูลซ้ำกัน อย่างข้อมูล s1 ตาราง A ก็มี ตดีก็มีตามทฤษฎียูเนี่ยนนะคะถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวจะเห็นว่าจาก 4 Records ก็คือสีแถวข้อมูลนะคะ แต่ว่าอันนี่ ตาราง A ก็มี แก็มีมันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะพอมันเอามายูเนี่ยนกันข้อมูลจาก 4บรรทัดจะเหลือแค่ 3 บรรทัด เพราะว่า s1 มันมีอยู่ทั้ง 2 ตาราง ก็คือ a b เลยยูเนี่ยนนะคะส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว ต่อมา อินเตอร์เซกชัน ก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตาราง หรือเล็กคอร์ดนะคะ ที่ปรากฏอยู่ทั้ง 2 ตาราง ที่มันทับซ้อนกันนั่นแหละ นะคะ ในรูปแบบของ intersection ตามทฤษฎีของเซต คำสั่ง ก็คือ INTERSECT ให้ a INTERSECT b นะคะ ตัวอย่างตารางเดิมเลยค่ะ A กับ B ข้อมูลไหนที่ทับซ้อนกัน คือ ข้อมูล s1 มันมีทั้ง 2 ตาราง A กับ 9kกระบี่เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้นเพราะฉะนั้นคำสั่ง a INTERSECT b จะมีผลลัพธ์แค่Accord เท่านั้น ก็คือ s1 ตามทฤษฎีของเซตนะคะ ต่อมา Difference ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้นๆที่ปรากฏอยู่ในตารางหนึ่ง แต่อีกตารางหนึ่ง ไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้น แต่ไม่อยู่กับกี่ตาราง 1 คำสั่งที่ใช้คือคำสั่ง MINUS แปลเป็นภาษาไทยคือเครื่องหมายลบ แล้วนี่ไม่เอาอย่างเช่น A MINUS B ที่อยู่ในเอแต่ไม่อยู่ใน Bเมื่อคืนเหมือนตัวที่ทำไฮไลท์สีเหลืองไว้ไป ตารางเดิมค่ะให้คำสั่ง AB อะไรที่อยู่ในเอเชียไม่อยู่ในบีอันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้น A MINUS B ก็จะเป็น S4 ในทางกลับกันค่ะ B MINUS A Bก็คืออยู่ในบีแต่ไม่อยู่ใน Aอยู่ดีๆS2F1 ไม่ได้ s1 อยู่ในเองเหมือนกันในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่า เราจะเอาข้อมูลจากตารางไหน เราจะเอาข้อมูลนั้นไว้ข้างหน้า ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้จะเขียนแบบนี้นะคะแต่ถ้าอยู่ในบีไม่อยู่ใน a ก็จะเขียนขึ้นต้นด้วย B นำหน้า แบบนี้นะคะ ไม่ใช่ว่าทุกตารางจะชื่อ A กับ B นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำชื่อตารางอะไร อย่างเช่นตาราง Student student แล้วก็MINUS ADDRESS ก็ได้นะคะ อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address ว่าไปนะคะ ต่อมา จะเป็นตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไปนะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวนแอตทริบิวต์เท่ากัน Attribute คืออะไรคือตัวนี้หมอลำนะคะถ้าเป็นแบบ Credit analyst นี่ คอลัมน์ทั้ง 2 ตาราง 3 ตารางต้องเท่ากันเท่านั้นนะคะ แต่ถ้าเป็น Special คือ คอลัมน์หรือ Attribute ไม่จำเป็นจะต้องมีจำนวนเท่ากัน ไม่จำเป็น ซึ่งคำสั่งพวกนี้นี่ จะถูกเรียกใช้บ่อย เพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่ มีรูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มี Attribute ที่เท่ากันไม่เท่ากัน คอลัมน์นั่นแหละแอตทริบิวต์ของทั้ง 2 ตารางจะถูกนำมาใช้จะต้องมีเงื่อนไขต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน ก็คือชื่อคอลัมน์เดียวกัน อาจจะเป็นชื่อตารางใดๆ ในตารางนั้นอาจจะมีอีกตารางหนึ่งมี 10 คอลัม ค่ำแปลต้องมีสิ่งที่เราจะเอามาดำเนินการเนี่ยชื่อคอลัมน์จะต้องเหมือนกันนะคะคำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน อันแรกคำสั่ง regeditหรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL เราจะใช้คำสั่งเรียกว่า Siri นะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ จะต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดูนะคะ ซึ่งการกระทำเพื่อแสดงข้อมูลในเรคคอร์ดของตารางนั้นๆจะต้องตรงตามเงื่อนไขที่ระบุ เงื่อนไขที่ใช้จะใช้คำว่า where นะคะ เช่น A WHERE X operator Y อันนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำในโปรแกรมจริงๆนี่ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้ อันนี้เป็นแค่การเกริ่นก่อนเฉยๆนะคะ ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้างในการจัดการฐานข้อมูล ตัวอย่างเดิมค่ะ ตาราง a กับ B นะคะ ในตัวอย่างอาจารย์อาจจะเห็นว่าเอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน พอให้คำสั่ง Select หรือ Restrict นะคะ จะต้องมาคู่กับคำว่าเสมอ อย่างเช่น ขึ้นต้นด้วยดีก็คือในตาราง D ให้ดูที่เงื่อนไข city city ตรงนี้แปลว่าชื่อเมืองนะคะในตาราง Bค่าของ Column Cityอันไหนที่มีค่าเท่ากับชัยนาท เราก็ดูเลยค่ะ ตาราง ดีCityชัยนาทนะคะพอดีว่า City เท่ากับชัยนาทผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของที่ s2 ทั้งหมดนะคะ เพราะว่าเงื่อนไขในตาราง B จังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาท เราต้องยกมาทั้งหมดมาแสดงผล เป็นโปรเจคต์นะคะ ก็จะเป็นการเลือกข้อมูลทุกๆ แถว โดยเลือกมาเพียงแค่บางคอลัมน์เห็นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ก็ได้ แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูล คือมันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจคต์นั่นเองนะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไข ตารางเดิมค่ะ ตารางเดิม คำสั่ง A ในวงเล็บ S name กับเอดส์นะคะก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้น อยู่ใน Column s name และคอลัมน์ age ผลลัพธ์ที่ได้แสดงผลแค่นี้ จากตอนแรกมันมีแค่ 14 คอลัมน์ใช่ไหมคะ 1 2 3อาจารย์ให้แสดงผลแค่เฟซ nameเท่านั้น นี่คือการทํางานของคําสั่ง project เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่คอลัมน์ที่อาจารย์สนใจ เราจะใช้คำสั่ง project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าวๆ น่ะนะ อย่างเช่น ผลลัพธ์ทำไมมันโชว์แค่รหัส s1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่ง คือ ดูในตาราง B โดยค่าของคอลัมน์ City มีค่าเท่ากับ bangkok แล้วให้แสดงผลเฉพาะ S# เท่านั้น ครูอยากรู้แค่รหัสมีเมืองที่อยู่ในเมืองกรุงเทพฯนะคะก็ส่งแค่ s1 เท่านั้น จากเมื่อก่อนนี้เรียกว่า Where City กลับ Bangkok ปกติแล้วมันแสดงข้อมูลทุกๆ คอลัมน์ใช่ไหมคะ แต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้นก็สามารถทำได้ อันนี้คือความสามารถของคำสั่ง project ต่อมา คำสั่ง join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมดซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไปโดยที่กำหนดค่าคอลัมน์หรือว่าอาทิตย์อยู่ที่เหมือนกันอาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้นะคะแต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากันคำสั่งก็คือ A join B มาดูตัวอย่างกัน join นะคะ จะคล้ายๆกับ UNION นะคะ แต่เงินไขคือจะต้องมีโดเมนหรือว่า Column ที่เท่ากันถึงจะจอยได้นะคะอย่างตัวนี้มี 2 คอลัมน์ มี 2 คอลัมน์ รายการข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้ายๆกับคำสั่ง UNION นะคะเช่น ตัวนี้คำสั่งจอยมีอะไรที่เหมือนกัน Cityใ ช่ไหมคะ A join B มี 6 คอลัมน์นะคะCity เหมือนกัน แต่เนื่องจากพี่บิวที่มีคำว่า City เหมือนกันนี่ มันจะต้องดูพิจารณาในเรคคอร์ดของรหัสด้วยนะคะ เพราะฉะนั้น ถ้ามันเกินมานะคะ มันเกินแล้วต้องทำข้อมูลซ้ำ ให้เกิดขึ้น อันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงานคือเติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้นี่ ทุกๆ Records นะคะ มีค่า Attribute ก็คือที่เท่ากัน เดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลย ต่อมาจะเป็นการแสดงข้อมูลจาก 2 Relation โดยที่ Relation หรือว่าทั้งสองตารางเนี่ยมีแอตทริบิวต์หรือรอบมีคอลัมน์เนี่ยอย่างน้อย 1 คอลัมน์ที่เหมือนกันกดรับจากคอลัมน์นะคะจากตารางที่มีจำนวนมากกว่านี่ จะถูกจับคู่คอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่าคำสั่งรูปแบบก็คือ a b y by B มันจะเป็นคล้ายๆกับการหารนะคะ การเป็นตัวหารนะคะต้องเป็น sub set ของตัวตั้ง ก็คือในตัวตั้งมี a ไหม มี มี B ไหม มี มี C ไหม มี รับทุกตัวคือตัวที่แมตช์กับตัวหารอะไรบ้างที่อยู่ใน AAV XYZ มีมีแค่ X C มีแค่ xเพราะฉะนั้นสิ่งที่เอา ABC หารได้ครบทุกตัว มีแค่ x ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมดนะคะ เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้น ที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้ หลักการนี้จะใช้ตอนที่เราค้นหาข้อมูล Google อย่างเช่น ในอาจารย์อยากได้กระเป๋าสีแดง มี 6 ล้อลาก เงื่อนไขกระเป๋าสีแดง 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่อาจารย์ต้องการแค่อย่างเดียวเท่านั้น เป็นต้น ราคาเป็นต้นตัวอย่าง มีข้อมูลในตาราง A มีข้อมูลตามนี้ ตาราง B มีคอลัมน์เดียวคือตัวนี้ คือ P2 ให้ a d y B B ก็คือมีข้อมูล P2 อยู่ในชุดข้อมูลอะไรบ้างของ A2 อันนี้ P2 เพราะฉะนั้น ผลลัพธ์ที่ได้จะมีแค่ 2 recoardคอร์ดเท่านั้นที่มี P2 อยู่ด้วยอันนี้ก็จะยังตรงตามเงื่อนไข ถ้าเพิ่มอีก B p1 p2 p3 p6 S2 มีแค่นี้มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรง มีที่ตรงแค่ s1 เท่านั้น ที่เอา B ทุกตัวหารไม่ลงตัว อันนี้คือหลักการนะคะ ปัญหานั่นแหละ ต้องหาลงตัวนะคะ วันนี้จะประมาณนี้ เพราะว่าเดี๋ยวอาจจะให้เช็กโปรแกรมค่ะ เนื้อหาจะมีแค่นี้ เดี๋ยวจะเช็กในห้องแลบว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็วันนี้ก็น่าจะเนื้อหาจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็คโปรแกรมในห้องเรียนนะคะ เลยสั้นนิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็กโปรแกรมก่อน สัปดาห์หน้าอาจจะเริ่มใช้โปรแกรม อาทิตย์นี้ก็เลยเดี๋ยว... เท่านี้ เดี๋ยวเรามาเช็คดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามกับขอบคุณถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็กห้องแลปก่อนขอบคุณมากค่ะ [lb [สิ้นสุดการถอดความ]