(อาจารย์เกวลี) โอเคค่ะ
เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7
หลังปีใหม่สไลด์จะไม่เยอะ
นะคะ นิดเดียว
แล้วก็วันนี้
ไม่มีการบ้าน
เฉพาะอาทิตย์นี้เท่านั้นนะคะ ให้ปีใหม่
บทนี้นะคะ จะเป็นเกี่ยวกับพีชคณิตเชิงสัมพันธ์วิชาคณิตเชิงสัมพันธ์ก็จะเป็นกระบวนการ
โดยใช้
คณิตศาสตร์
อย่างง่าย
นะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย
โดยพีชคณิตเชิงสัมพันธ์
หรือว่าเป็นเกี่ยวกับโครงสร้างในการ
Query ข้อมูล ก็คือการ
การข้อมูลของเรา
นะคะ จะเป็นการกระทำที่เกิดขึ้นกับตาราง หรือความสัมพันธ์
นะคะ ที่เราสร้างตารางใหม่ขึ้น
มาะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้น
กับข้อมูลในฐานข้อมูลของเรา
นะคะ ซึ่งส่วนมากจะเป็นการกระทำพื้นฐาน
นะคะ
โดยมันจะมีอยู่ 2 กลุ่ม คือแบบดั้งเดิม
กับแบบพิเศษ
จะเป็นอย่างละ 4 ตัวนะ
คะ แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษก็คือ Traditional
นะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ โดยอาศัยทฤษฎีของเซต
ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์นะคะ
โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่
จะมีการกระทำ
นะคะ ต้องมี Attribute ก็คือในตารางจะต้องมีข้อมูลเกิดขึ้น
เช่นตาราง นักศึกษาก็จะมี Attribute หรือว่าข้อมูลที่เรามีก็คือ
ชื่อนามสกุลเป็นต้น
การกระทำของกลุ่มที่เป็นแบบดั้งเดิม
จะมีอยู่ 4 อย่าง
มี product มี Unionมี อินเตอร์เซคแล้วก็มีประเด็น
วันนี้จะต้องเป็นภาษาอังกฤษ
เพราะว่าคำสั่ง
ในระบบจัดการฐานข้อมูล
ก็จะเป็นภาษาอังกฤษ ประมาณนี้นะคะ
อันแรก Product นะคะ
เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัด
หรือทุก ๆ Record ที่เรามี
ที่สามารถเป็นไปได้โดยการจับคู่
ผลคูณ
Cartesian นี่ก็เป็นคณิตศาสตร์อย่างง่าย
คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะ ใช้คำว่า "Times"
นะคะ
T-i-m-e-s รูปแบบของมันก็คือ
ในกรอบสี่เหลี่ยมนะคะ ก็คือเอาเองกับบีมันมา
คูณกัน
เดี๋ยวจะมีตัวอย่างให้ดู
อย่างเช่นตัวอย่างนะคะ
เดี๋ยวอาจารย์เขียนให้ดูก่อน
เมื่อกี้
a กับ B
นี่
ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูล ใช้คำสั่ง Time
เอาทุกตัว
เป็นไปได้มาคูณ กัน
a คูณ x a คูณ y ใช่ไหมคะ ตัวนี้ ตัวนี้
B x X B x Y
คำสั่งนี้จริง ๆ
จับคู่ทุกตัวที่เป็นไปได้
นะคะ
อันนี้จะยังง่ายอยู่ ยังไงอยู่
ยังอีก
เหมือนในตัวอย่างค่ะ มีตาราง A
ตาราง B สั่งให้มัน
คุณกานต์ก็คือเป็น a time B
ผลลัพธ์ที่ได้
ก็จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้
นะคะ คำสั่งนี้
จะง่าย มันก็คือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้่นเอง
ถ้าจะเช็
กแนวข้อสอบ ก็ไม่ออกนะนะคะ
อันนี้ยังง่ายอยู่ ต่อมา การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกัน
ก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2
Relation เพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถว
ในรูปแบบของยูเนี่ยนตามทฤษฎีของเซต
คำสั่งก็คือ
Union นะคะ
a Union b คือเอา A กับบีมารวมกัน
ตัวนี้
มีตาราง a กับตาราง B
ทฤษฎีเซตของยูเนี่ยนนะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกัน
อย่างข้อมูล s1
ตาราง A ก็มี
ตาราง B ก็มี ตามทฤษฎียูเนี่ยนนะคะ
ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียว
จะเห็นว่าจากสี Record ก็คือสีแถวข้อมูลนะคะ
แต่ว่าอันเนี้ยกำลังเอกก็มี ตาราง Bก็มีมันซ้ำกัน
เราจะนับเป็นแค่ 1 ข้อมูลเท่านั้น
นะคะ
พอมันเอามา Union กันข้อมูลจาก 4
บรรทัด
จะเหลือแค่ 3 บรรทัดเพราะว่า s1
ไม่มีทั้ง 2 ตารางก็คือ a b เลย
Union นะคะ
ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว
Intersection
ก็ตามทฤษฎีเซตเหมือนกันค่ะ
มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record เล็กคอร์
ที่ปรากฏอยู่ทั้ง 2 ตาราง
ที่มันทับซ้อนกันนั่นแหละ
ในรูปแบบของ intersection ตามทฤษฎีของเซต
คำสั่งก็คือ
INTERSECT ให้ a INTERSECT b
ตัวอย่าง
ตารางเดิมเลยค่ะ ให้ A กับ B
ข้อมูลไหนที่ทับซ้อนกัน
คือข้อมูล s1
มันมีทั้ง 2 ตาราง ตาราง A กับกระบี่
เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้น
เพราะฉะนั้นคำสั่งA INTERSECT B จะมีผลลัพธ์แค่
1 record เท่านั้น ก็คือ
ทฤษฎีของเซต
นะคะ
ต่อมา Differenceเราม
ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตาราง
1 แปลตาราง 1 ไม่มีนะคะ ก็คือ
อะไรก็ตามที่อยู่ในตารางนั้น แต่ไม่อยู่กับอีกตาราง 1 คำสั่งที่ใช้
คือคำสั่ง
MINUS แต่เป็นภาษาไทยคือเครื่องหมายลบแล้วนี่ ไม่เอา
อย่างเช่นที่อยู่ใน
a แต่ไม่อยู่ใน B
เมื่เหมือนตัวที่ทำไฮไลท์สีเหลืองไว้
ไปนั่งดื่มด้วยค่ะ
ให้คำสั่ง
A MINUS B อะไรที่อยู่ในเอเชียไม่อยู่ในบี
อันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้น
MINUS B ก็จะเป็น S4
ในทางกลับกันค่ะ B MINUSก็คืออยู่ในบีแต่ไม่อยู่ใน A
อยู่ดี ๆ
S2
S1 ไม่ได้ s1 อยู่ในเองเหมือนกัน
ในทางกลับกันจะเป็นแบบนี้
นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหนเราจะเอาข้อมูลในวันข้างหน้า
ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้ จะเขียนแบบนี้นะคะ
แต่ถ้าอยู่ใน
B ไม่อยู่ใน a ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้
ไม่ใช่ว่าทุกตารางจะชื่อเองกับบีนะคะ แล้วแต่ว่า
ตารางที่นักศึกษา
ได้ทำ
มันชื่อตารางอะไร อย่างเช่นตาราง Student
Student แล้วก็ MINUS A ก็ได้นะคะ
อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address
ว่าไป
นะคะ
ต่อมาจะเป็น
ตัวดำเนินการแบบ
พิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจาก
รูปแบบการทำงานของเซต โดยทั่วไป
นะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษ
นี่ ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากัน
Attribute คืออะไร คือตัวนี้
คอลัมน์นะคะ
ถ้าเป็นแบบ Credit analyst นี่
คอลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากัน
เท่านั้น
ถ้าเป็น Special คือ
คอลัมน์หรือ senior
ไม่จำเป็นจะต้องมีจำนวนเท่ากัน
ไม่จำเป็น
ซึ่งคำสั่งพ
วกนี้นี่ จะถูกเรียกใช้บ่อย เพราะว่าฐานข้อมูล
ข้อมูลอาจจะมีตารางที่บรรจุอยู่
อาจจะมีรูปแบบที่แตกต่างกันไปนะคะ
โดย
ถึงแม้มันจะไม่มี Attribute ที่เท่ากัน ไม่เท่ากันนั่นแหละ
แต่ Attributeของทั้ง 2 ตาราง
จะถูกนำมาใช้
จะต้องมีเงื่อนไข
ต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน
ชื่อคอลัมน์เดียวกัน
อาจจะเป็น
ชื่อตารางใด ๆ
ในตารางนั้น อาจจะมี
อีกตารางหนึ่งมี 8 คอ
แต่จะต้องมีสิ่งที่เราจะเอามาดำเนินการ
นี่ ชื่อคอลัมน์จะต้องเหมือนกัน
นะคะ
คำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน
อันแรก
คำสั่งRestrict
หรือถ้าใน
ระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL
เราจะใช้คำสั่งเรียกว่า
Select oะคะ
เดี๋ยวประมาณอีก 2 สัปดาห์
0tต้องได้พิมพ์
ลองทำโค้ดภาษา SQL ดู
ซึ่งการกระทำเพื่อแสดงข้อมูลใน Record ของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุ
เงื่อนไขที่ใช้จะใช้คำว่า WHERE นะคะ
เช่น
A WHERE X operator Y อันนี้เป็นต้นนะคะ
เดี๋ยวตอนที่เราทำ
โปรแกรมจริง ๆ นี่ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้
อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ
นะคะ ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูล
ตัวอย่างเดิมค่ะ ตาราง a กับ
b ตัวอย่างอาจารย์อาจจะเห็นว่าเอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็
เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน
พอใช้คำสั่ง
Select หรือ Restrict นะคะ จะต้องมาคู่กับคำว่าเสมอ
อย่างเช่น
ขึ้นต้นด้วยดีก็คือในตาราง
B ให้ดูที่เงื่อนไข ตรงนี้แปลว่าชื่อเมืองนะคะ
ในตาราง B
ค่าของ Column City
อันไหน
ที่มีค่าเท่ากับ
Chai Nat เราก็ดูเลยค่ะ
ตาราง B City
Chai Nat นะคะ พอดีว่า City เท่ากับชัยนาท
ผลลัพธ์ที่ได้จะต้อง
แสดงผลลัพธ์ของ
TF2
ทั้งหมด
นะคะ
เงื่อนไข ก็คือในตาราง B จังหวัด
ข้อมูลอะไรที่มีข้อมูลว่าชัยนาท
เราต้องยกมาทั้งหมดมาแสดงผล
ต่อมา เป็น Projectนะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถว โดยเลือกมาเพียงแค่บางคอลัมน์
เช่นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ
ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา
โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์
ก็ได้ แ
ต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น
เราจะใช้คำสั่งที่เกี่ยวข้องกับ
การเรียกดูข้อมูล
คือ มันจะเป็นคำสั่งเกี่ยวกับการทำ Project นั่นเอง
รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารา ง แล้วตามด้วยเงื่อนไข
นะคะ ตารางเดิมค่ะ ตารางเดิม
คำสั่ง A ในวงเล็บ
SName กับ
Age นะคะ ก็คือ
อธิบายคือ
เอาข้อมูลในตาราง a เท่านั้น
อยู่ใน Column Sname
และคอลัมน์
ผลลัพธ์ที่ได้
แสดงผลแค่นี้
จากตอนแรกมันมีแค่ 14 คอลัมน์ใช่ไหมคะ 1 2 3 4
อาจารย์ให้แสดงผลแค่ s name
กับ age เท่านั้น
นี่คือการทํางานของคําสั่ง project
เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่
คอลัมน์ที่เราสนใจ
เราจะใช้คำสั่ง project
นะคะ
เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ก่อนนะ
หรืออย่างเช่น
ผลลัพธ์ทำไมมันโชว์แค่
รหัส s1
คำสั่งที่จะต้องใช้คืออะไร
เงื่อนไขของคำสั่งคือดูในตาราง B นะคะ
โดยค่าของคอลัมน์ City
มีค่าเท่ากับ
Bangkok แล้วให้แสดงผลเฉพาะ
S# เท่านั้น
คือ อยากรู้แค่รหัส
มีเมืองที่อยู่ในเมืองกรุงเทพฯ
นะคะ
ก็โชว์แค่ s1 เท่านั้น
จากเมื่อก่อนนี้เรียกว่า Where City
= bangkok
ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ
แต่ถ้าอาจารย์กำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้น
ก็สามารถทำได้
ความสามารถของคำสั่ง project
ประมาณคำสั่ง Join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด
ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป
โดยที่กำหนดค่าคอลัมน์หรือว่า Attribute อยู่ที่เหมือนกัน
อาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้
นะคะ
แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากัน
รูปแบบคำสั่งก็คือ A Join B
มาดูตัวอย่างกัน
Join นะคะ
จะคล้าย ๆ กับ
Union แต่เงื่อไขคือจะต้องมี Domain หรือว่า Column ที่เท่ากันถึงจะ ได้
นะคะ
อย่างตัวนี้มี 2 ค
อลัมมี 2 คอลัมน์
รายการข้อมูลที่ทันซ้อนกัน
จะอยู่ในรูปแบบคล้าย ๆ กับคำสั่ง UNION
นะคะ
เช่น ตัวนี้คำสั่งจอย
มีอะไรที่เหมือนกัน
City
ใช่ไหมคะ
A JOIN B
อันนี้มี 6 คอลัมน์นะคะ 1 2
ตัวนี้ City เหมือนกัน
แต่เนื่องจาก
Attribute ที่มีคำว่า City เหมือนกันนี่
มันจะต้องดูพิจารณาใน Record ของ
รหัสด้วย
เพราะฉะนั้น ถ้า
มันเกินมา
มันเกินแล้วต้องทำข้อมูลซ้ำ
ให้เกิดขึ้นอันนี้ก็จะเป็นอีก
รูปแบบหนึ่งของการทำงาน คือ เติมข้อมูลเข้าไป
นะคะ
เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ
Record นะคะ มีค่าAttribute ก็คือที่เท่ากัน
เดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ
ในตอนที่เราทำ
ตัวโปรแกรมเลย
ต่อมา
จะเป็นการแสดงข้อมูลจาก 2
Relation โดยที่
Relหรือว่าทั้งสองตารางเนี่ยมีแอตทริบิวต์หรือรอบมีคอลัมน์เนี่ยอย่างน้อย 1 คอลัมน์ที่เหมือนกัน
ผลลัพธ์จากคอลัมน์นะคะ
จากตารางที่มีจำนวนอธิบายมากกว่า
นี่ จะถูกจับคู่
คอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่า
คำสั่งรูปแบบก็คือ
A DIVIDED BY B มันจะเป็นคล้าย ๆ กับการหาร
นะคะ ค
ำสั่งตัวนี้ การเป็นตัวหาร
นะคะ
ต้องเป็น
Sub set ของตัวตั้ง
ก็คือในตัวตั้งมี a ไหม มี
มี b ไหม มี ไหมมี
รับทุกตัวคือตัวที่แมทกับตัวหาร
อะไรบ้าง ที่อยู่ใน
มี มีแค่ X C มีแค่ x
เพราะฉะนั้น
สิ่งที่
เอา ABC หารได้ครบทุกตัว
มีแค่ x ตัวเดียว
ก็คือตรงตามเงื่อนไขทั้งหมดนะคะ
เราอาจจะมีการตั้งเงื่อนไขมา
แล้วมีแค่ X ตัวเดียวเท่านั้น ที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราตั้งไว้
อันนี้จะใช้ตอนที่เราค้นหาข้อมูลอย่างเช่นใน
Google นะคะ อาจารย์อยากได้กระเป๋า
สีแดง มี 6 ล้อลาก
เงื่อนไข
อยากได้กระเป๋าสีแดง
มี 6 ล้อ
อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่อาจารย์ต้องการแค่
อย่างเดียวเท่านั้น
เป็นต้น
นะคะ เป็นต้น
อย่างเช่น ตัวอย่าง
มีข้อมูลนะคะ
ในตาราง A มีข้อมูลตามนี
้
ตาราง B มีคอลัมน์เดียว คือ ตัวนี้
p2 ให้A DIVIDED BY B ก็คือ
มีข้อมูล P2
อยู่ในชุดข้อมูลอะไรบ้าง ของ A2
อันนี้ P2 อันนี้ P2
เพราะฉะนั้น ผลลัพธ์ที่ได้จะมีแค่
2 Record เท่านั้น
ที่มี P2 อยู่ด้วย
อันนี้เข้าใจยัง
ตรงตามเงื่อนไข
ถ้าเพิ่มอีก
มี
B P1 P2 P3 P6 S2
มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรง
มีที่ตรงแค่ s1 เท่านั้น ที่เอา B ทุกตัว
หารได้ลงตัว
อันนี้คือหลักการ
นะคะ
ปัญหานั่นแหละ ต้องหาลงตัวนะคะ
วันนี้จะประมาณนี้ เพราะว่าเดี๋ยว
อาจจะให้เช็กโปรแกรมค่ะ
เนื้อหาจะมีแค่นี้ เดี๋ยวจะเช็กในห้อง Lab ว่า
โปรแกรมที่จะใช้สมบูรณ์หรือเปล่า
ก็วันนี้ก็น่าจะ
เนื้อหตะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็
กโปรแกรมในห้องเรียน
นะคะ
เนื้อหานิดหนึงเพราะว่าหลังปีใหม่ขอเช็คโปรแกรมก่อน
สัปดาห์หน้าอาจจะเริ่มใช้โปรแกรม อาทิตย์นี้ก็เลยเดี๋ยว
เนื้อหาจะหมดเท่านี้
เดี๋ยวเรามาเช็กดูว่าห้องเรียนเรา
ใช้โปรแกรมได้หรือเปล่า
นะคะ
วันนี้ก็ขอบคุณล่ามกับขอบคุณถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็คห้องแลปก่อน
ขอบคุณมากค่ะ