--- title: (ฝึก PE v.2 1 คน กับ Bot ASR) ห้องเรียนสกลฯ หลักการและระบบการจัดการฐานข้อมูล อ.เกวลี 3 ม.ค. 66 มาริก subtitle: date: วันจันทร์ที่ 20 มีนาคม 2566 เวลา 09.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์เกวลี) โอเคค่ะ เดี๋ยวเริ่มเลยแล้วกันนะคะ บทนี้จะเป็นบทที่ 7 ปีใหม่อะไรจะไม่เยอะนะคะ นิดเดียวแล้วก็วันนี้ไม่มีการบ้านมีการบ้าน เฉพาะอาทิตย์นี้เท่านั้นนะคะ ถือให้ปีใหม่ บทนี้นะคะ จะเป็นเกี่ยวกับพีชคณิตเชิงสัมพันธ์ก็จะเป็นกระบวนการ โดยใช้คณิตศาสตร์อย่างง่ายนะคะ ที่งมาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วยโดยเพชรชนิดเชิงสัมพันธ์หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล คือ การการข้อมูลของเราจะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ที่เราสร้างตารางใหม่นะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นข้อมูลในฐานข้อมูลของเราซึ่งส่วนมากจะเป็นการกระทำพื้นฐานนะคะ โดยมันจะมีอยู่ 2 กลุ่มคือแบบดั้งเดิมแบบพิเศษ จะเป็นอย่างละ 4 ตัว แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษก็คือ Dinational ที่นั่นนะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ โดยอาศัยทฤษฎีของเซต ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์นะคะ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่ จะมีการกระทำต้องมี Aเดียว คือ ในตารางจะต้องมีข้อมูลเกิดขึ้นเช่นตารางนักศึกษาก็จะมีแอตทริบิวต์หรือว่าข้อมูลที่เรามีก็คือชื่อนามสกุลเป็นต้น การกระทำของกลุ่มที่เป็นแบบดั้งเดิมจะมีอยู่ 4 อย่างมี product มียูเนี่ยน มีอินเตอร์เซค แล้วก็มีประเด็นวันนี้จะต้องเป็นภาษาอังกฤษเพราะว่าคำสั่งในระบบจัดการฐานข้อมูลก็จะเป็นภาษาอังกฤษประมาณนี้นะคะ แลกโปรดักส์นะคะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัด หรือทุก ๆ Record ที่เรามี ที่สามารถเป็นไปได้โดยการจับคู่ผลคูณคาร์ทีเซียน นี่ก็เป็นคณิตศาสตร์อย่างง่าย คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า Timecimbsรูปแบบของมัน ก็คือในกรอบสี่เหลี่ยมนะคะ ก็คือเอา A กับ B มันมาคูณกัน เดี๋ยวจะมีตัวอย่างให้ดูอย่างเช่นตัวอย่างนะคะ อาจารย์เขียนให้ดู ก่อนเมื่อกี้ A กับ B นี่ ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Time ก็คือเป็นไปได้มาคูณกัน A x X A x Y ใช่ไหมคะ B e x x x y B x b yคำสั่งนี้จริง ๆ จับคู่ทุกตัวที่เป็นไปได้นะคะอันนี้จะยังง่ายอยู่ อีกเหมือนในตัวอย่างค่ะ มีตาราง A มีตาราง B สั่งให้มันคูณกัน ก็คือเป็น ฤ time B ผลลัพธ์ที่ได้ก็จะเป็นทุกตัวที่ ฤ กับ B มันสามารถจับคู่กันได้คำสั่งนี้จริง ๆ คือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั่นเอง ถ้าจะเช็ก ในข้อสอบก็มีออกนะนะคะ อยู่การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 Relation เพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถวในรูปแบบของยูเนี่ยนตามทฤษฎีของเซต คำสั่งก็คือ Union นะคะ a Union b คือ เอาเองกับบีมารวมกันตัวนี้มีตาราง a กับตาราง B ทฤษฎีเซตของยูเนี่ยนนะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกันข้อมูล s1นางเอกก็มี ตาราง ดีก็มีตามทฤษฎียูเนี่ยนนะคะ ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียวจะเห็นว่าจากสี Records ก็คือ สีแถวข้อมูลนะคะ แต่ว่าอันเนี้ยกำลังเอกก็มีแต่รังบีก็มีมันซ้ำกันเราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ พอมันเอามายูเนี่ยนกัน ข้อมูลจาก 4 บรรทัดจะเหลือแค่ 3 บรรทัด เพราะว่า s1 ไม่มีทั้ง 2 ตารางก็คือ a b เลยยูเนี่ยนนะคะ ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียวอินเตอร์เซกชันก็ตามทฤษฎีเซตเหมือนกันค่ะ มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือเล็กคอร์ดที่ปรากฏอยู่ทั้ง 2 ตารางที่มันทับซ้อนกันนั่นแหละ ในรูปแบบของ intersection ตามทฤษฎีของเซตคำสั่งก็คืออินเตอร์เซคให้ a อินเตอร์เซค bตัวอย่างจากตารางเดิมเลยค่ะ A กับ B ข้อมูลไหนที่ทับซ้อนกัน คือ ข้อมูล S1 มีทั้ง 2 ตารางกำลัง A กับ B เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้น เพราะฉะนั้นคำสั่ง A อินเตอร์เซค B จะมีผลลัพธ์แค่ 1 record เท่านั้น ก็คือทฤษฎีของเซตนะคะ ต่อมา Different ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตารางนึ่งแปลตาราง 1 ไม่มีนะคะ ก็คืออะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตารางหนึ่งคำสั่งที่ใช้คือคำสั่งไมนัส แปลเป็นภาษาไทยคือเครื่องหมายลบนั่นเอง แล้วนี่ไม่เอาอย่างเช่น ที่อยู่ในเอแต่ไม่อยู่ใน B เมื่อคืนเหมือนตัวที่ทำไฮไลท์สีเหลืองไว้ ตารางเดิมเลยค่ะ ให้คำสั่ง A B อะไรที่อยู่ใน A ไม่อยู่ในบีอันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้น ไมนัส B ว่าจะเป็น S4 ในทางกลับกันค่ะ B ก็คืออยู่ใน B แต่ไม่อยู่ใน A อยู่ดี ๆ S2 S1 ไม่ได้ S1 อยู่ในเองเหมือนกันในทางกลับกันจะเป็นแบบนี้นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหนเราจะเอาข้อมูลในวันข้างหน้านะคะ ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้จะเขียนแบบนี้นะคะ แต่ถ้าอยู่ใน B ไม่อยู่ใน A ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้ไม่ใช่ว่าทุกตารางจะชื่อเองกับ B นะคะ แล้วแต่ว่าตารางที่นักศึกษาได้ทำมันชื่อว่าตารางอะไร อย่างเช่นตาราง Student แล้วก็ไมนัส Address ก็ได้นะคะ อยู่ในตาราง student แต่ไม่อยู่ในตาราง Address ว่าไปนะคะ ต่อมาจะเป็นตัวดำเนินการแบบพิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจากรูปแบบการทำงานของเซตโดยทั่วไป โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่ ไม่จำเป็นจะต้องมีจำนวนแอตทริบิวต์เท่ากัน แอตทริบิวต์คืออะไร คือตัวนี้ คอลัมน์นะคะ ถ้าเป็นแบบ Credit analyst เนี่ยคอลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากันเท่านั้นถ้าเป็น Special คือคอลัมน์หรือ senior ไม่จำเป็นจะต้องมีจำนวนเท่ากันไม่จำเป็นซึ่งคำสั่งพวกนี้นี่ จะถูกเรียกใช้บ่อยเพราะว่าฐานข้อมูลข้อมูลอาจจะมีตารางที่บรรจุอยู่รูปแบบที่แตกต่างกันไปนะคะ โดยถึงแม้มันจะไม่มีคิวที่เท่ากัน ก็คือคอลัมน์ไม่เท่ากันนั่นแหละ แอตทริบิวต์ของทั้ง 2 ตารางจะถูกนำมาใช้ จะต้องมีเงื่อนไขจะต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน ชื่อคอลัมน์เดียวกัน อาจจะเป็นชื่อตารางใด ๆ ในตารางนั้นอาจจะมี 10 คอลัมน์ อีกตารางมี 8 คอลัมน์ ต้องมีสิ่งที่เราจะเอามาดำเนินการนี่ ชื่อคอลัมน์จะต้องเหมือนกันนะคะ คำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน อันแรกคำสั่ง regedit หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQLเราจะใช้คำสั่งเรียกว่า Siri SELECT นะคะ เดี๋ยวประมาณอีก 2 สัปดาห์ต้องได้พิมพ์ ลองทำโค้ดภาษา SQL ดู ซึ่งการกระทำเพื่อแสดงข้อมูลในเรคคอร์ดของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุเงื่อนไขที่ใช้จะใช้คำว่า "where" นะคะ เช่น a where x oparator y อันนี้เป็นต้นนะคะ เดี๋ยวตอนที่เราทำโปรแกรมจริง ๆ อ่ะนักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูล ตัวอย่างเดิมค่ะ ตาราง A กับ B ตัวอย่าง อาจารย์อาจจะเห็นว่า เอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อนพอใช้คำสั่ง SELECT หรือ... นะคะ จะต้องมาคู่กับคำว่า... เสมอ อย่างเช่นขึ้นต้นด้วยดีก็คือในตารางดีให้ดูที่เงื่อนไข CITY ตรงนี้แปลว่าชื่อเมืองนะคะ ในตาราง B ค่าของ Column City อันไหนที่มีค่าเท่ากับชัยนาท ขอดูเลยค่ะ ชัยนาทนะคะ พอพิมพ์ว่า City เท่ากับชัยนาทผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์ของ S2 ทั้งหมดนะคะ เงื่อนไขในตารางบีจังหวัดข้อมูลอะไรที่มีข้อมูลว่าชัยนาทนะคะ เราต้องยกมาทั้งหมดมาแสดงผล ต่อมาเป็นโปรเจ็กต์นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถวโดยเลือกมาเพียงแค่บางคอลัมน์เห็นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์ แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้นเราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูลคือมันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจ็กต์นั่นเอง รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไข ตารางเดิมค่ะ ตารางเดิมคำสั่งในวงเล็บ S_NAME กับ AGE นะคะ ก็คืออธิบายคือเอาข้อมูลในตาราง a เท่านั้นอยู่ใน Column Name และคอลัมน์ AGE ผลลัพธ์ที่ได้แสดงผลแค่นี้จากตอนแรกมันมีแค่ 14 คอลัมน์ใช่ไหมคะ 1 2 3 อาจารย์ให้แสดงผลแค่ S_NAME เท่านั้นนี่คือการทํางานของคําสั่ง project เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่คอลัมน์ที่น่าสนใจจะใช้คำสั่ง project นะคะ เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ว่านะ อย่างเช่นผลลัพธ์ทำไมมันโชว์แค่รหัส s1 คำสั่งที่จะต้องใช้คืออะไร เงื่อนไขของคำสั่งคือดูในตาราง B นะคะ โดยค่าของคอลัมน์ City มีค่าเท่ากับ Bangkok และให้แสดงผล S Sharp เท่านั้น คือ อยากรู้แค่รหัสมีเมืองที่อยู่ในเมืองกรุงเทพฯ นะคะ ก็ส่งแค่ s1 เท่านั้น จากเมื่อก่อนนี้เรียกว่า Where City กับ Bangkok ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ แต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้นก็สามารถทำได้ ความสามารถของคำสั่ง projectประมาณคำสั่งจอยค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมดซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไปโดยที่กำหนดค่าคอลัมน์หรือว่าอยู่ที่เหมือนกันอาจจะเป็นคอลัมน์เดียวหรือมากกว่าก็ได้นะคะ แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากันคำสั่งก็คือ A B มาดูตัวอย่างกันJoin นะคะ จะคล้าย ๆ กับยูเนี่ยน แต่เงื่อนไข คือ จะต้องมีโดเมนหรือว่า Column ที่เท่ากันถึงจะจอยได้นะคะ อย่างตัวนี้มี 2 คนล่ำมี 2 คอลัมน์รายการข้อมูลที่ซับซ้อนกัน จะยูเนียนนะคะ เช่นตัวนี้คำสั่ง Join มีอะไรที่เหมือนกัน City ใช่ไหมคะ A Join B มี 6 คอลัมน์นะคะ City เหมือนกัน แต่เนื่องจากแอตทริบิวต์ที่มีคำว่า "City" เหมือนกันนี่ มันจะต้องดูพิจารณาในเรคคอร์ดของรหัสด้วยเพราะฉะนั้นถ้ามันเกินมามันเกินแล้วต้องทำข้อมูลซ้ำให้เกิดขึ้นอันนี้ก็จะเป็นอีกรูปแบบหนึ่งของการทำงานคือเติมข้อมูลเข้าไปนะคะ เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ Records นะคะ มีค่า คือที่เท่ากันเดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ ในตอนที่เราทำโปรแกรมเลยตอบมาจะเป็นการแสดงข้อมูลจาก 2 รีเลชั่น โดยที่รีเลชั่นหรือว่าทั้งสองตารางนี่มี Attribute หรือรอบมีคอลัมน์เนี่อย่างน้อย 1 คอลัมน์ที่เหมือนกันกดรับจากคอลัมน์นะคะ จากตารางที่มีจำนวนอธิบดีมากกว่าเนี่ยจะถูกจับคู่คอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่านะคะ คำสั่งรูปแบบก็คือ A B Y by B มันจะเป็นคล้าย ๆ กับการหารนะคะ การเป็นตัวหารนะคะ ต้องเป็นสับเซตของตัวตั้งก็คือในตัวตั้งมี a ไหมมีมีไหมมีไหมมีรับทุกตัวคือตัวที่แมทกับตัวหาร มีอะไรบ้าง ที่อยู่ใน... มีแค่ X C มีแค่ x เพราะฉะนั้น สิ่งที่เอา A B C หารได้ครบทุกตัวมีแค่ตัวเดียว ก็คือตรงตามเงื่อนไขทั้งหมดน่าจะมีการตั้งเงื่อนไขมา แล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้ อันนี้จะใช้ตอนที่เราค้นหาข้อมูลใน Google อย่างเช่นอาจารย์อยากได้กระเป๋าสีแดงมี 6 ล้อลาก เงื่อนไขกระเป๋าสีแดง 6 ล้อ อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่อาจารย์ต้องการแค่อย่างเดียวเท่านั้น เป็นต้นนะคะ เป็นตัวอย่าง ข้อมูลในตาราง A มีข้อมูลตามนี้ตาราง B มีคอลัมน์เดียวคือตัวนี้ 2 ให้ A B Y by B ก็คือมีข้อมูล P2อยู่ในชุดข้อมูลอะไรบ้าง ของ E2 อันนี้ปี 2 เพราะฉะนั้น ผลลัพธ์ที่ได้จะมีแค่ 2 Record เท่านั้นที่มี P2 อยู่ด้วยอันนี้ก็จะยังตรงตามเงื่อนไขนะคะ ถ้าเพิ่มอีกนะคะ ที่S2 มีแค่นี้มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรงมีที่ตรงแค่ S1 เท่านั้นที่หารไม่ลงตัวI คือ หลักการนะคะ ปัญหานั่นแหละต้องหาลงตัวนะคะ วันนี้จะประมาณนี้ เพราะว่าเดี๋ยวอาจจะให้เช็กโปรแกรมค่ะ เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็กในห้องแล็บว่าโปรแกรมที่จะใช้สมบูรณ์หรือเปล่า ก็เนื้อหาวันนี้ก็น่าจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ เหนื่อยนิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็กโปรแกรมก่อนสัปดาห์หน้าอาจจะเริ่มใช้โปรแกรมอาทิตย์นี้ ก็เลยเดี๋ยวเท่านี้เดี๋ยวเรามาเช็กดูว่าห้องเรียนเราใช้โปรแกรมได้หรือเปล่านะคะ วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ ขอบคุณถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็กห้องแลปก่อน ขอบคุณมากค่ะ