(อาจารย์เกวลี) โอเคค่ะ
เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7
หลังปีใหม่
สไลด์จะไม่เยอะ
นะคะ นิดเดียว
แล้วก็วันนี้
ไม่มีการบ้าน
เฉพาะอาทิตย์นี้เท่านั้นนะคะ ถือว่าให้ปีใหม่
บทนี้นะคะ จะเป็นเกี่ยวกับวิชาพีชคณิตเชิงสัมพันธ์ ก็จะเป็นกระบวนการ
โดยใช้
คณิตศาสตร์
อย่างง่าย
นะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย
โดยพีชคณิตเชิงสัมพันธ์
หรือว่าเป็นเกี่ยวกับโครงสร้างในการ
Query ข้อมูล ก็คือ
การจัดการข้อมูลของเรา
จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์
นะคะ ที่เราสร้างตารางใหม่
ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้น
กับข้อมูลในฐานข้อมูลของเรา
นะคะ ซึ่งส่วนมากจะเป็นการกระทำพื้นฐาน
นะคะ
โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิม
กับแบบพิเศษ
จะเป็นอย่างละ 4 ตัวนะคะ
แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษ ก็คือ Tecditional ที่นั่น
นะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์ โดยอาศัยทฤษฎีของเซต
ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์
นะคะ โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่
จะมีการกระทำ
นะคะ จะต้องมี Attribute คือในตารางจะต้องมีข้อมูลเกิดขึ้น
เช่น ตารางนักศึกษาก็จะมี Attribute หรือว่าข้อมูลที่เรามีก็คือ
ชื่อนามสกุล เป็นต้น
การกระทำของกลุ่มที่เป็นแบบดั้งเดิมนะคะ
จะมีอยู่ 4 อย่าง
มี product มี Union มี Intersection แล้วก็มี
Different อันนี้จะต้องเป็นภาษาอังกฤษ
เพราะว่าคำสั่ง
ในระบบจัดการฐานข้อมูล
ก็จะเป็นภาษาอังกฤษ
อันแรก Product นะคะ
เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัด
หรือทุก ๆ Record ที่เรามี
ที่สามารถเป็นไปได้ โดยการจับคู่
ผลคูณคาร์ทีเซียน
นี่ก็เป็นคณิตศาสตร์อย่างง่าย
คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า "Time
" นะคะ T-i-m-e-s
รูปแบบของมัน ก็คือ
ในกรอบสี่เหลี่ยมนะคะ ก็คือเอา A กับ B มันมา
คูณกัน
เดี๋ยวจะมีตัวอย่างให้ดู
อย่างเช่นตัวอย่างนะคะ
อาจารย์เขียนให้ดูก่อน
เมื่อกี้
a กับ B
A Bนี่
ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Time
ก็เอาทุกตัว
ที่เป็นไปได้มาคูณกัน
A x X A x Y ใช่ไหมคะ
B x A x Y ก
็จะเป็น BY คำสั่งนี้
จับคู่ทุกตัวที่เป็นไปได้
นะคะ
อันนี้จะยังง่ายอยู่
นี่อีก
นะคะ เหมือนในตัวอย่างค่ะ มีตาราง A
มีต
าราง B ถ้าสั่งให้มัน
คูณกัน ก็คือเป็น A time B
ผลลัพธ์ที่ได้
ก็จะเป็นทุกตัวที่ A กับ B ที่มันสามารถจับคู่กันได้
คำสั่งนี้มันจะง่าย
คือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้นเอง
ถ้าจะเช็
ก แนวข้อสอบก็มีออกนะนะคะ
อันนี้ยังง่ายอยู่
ต่อมาการ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกัน
ก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2
Relation เพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถว
ในรูปแบบของ Union ตามทฤษฎีของเซต
คำสั่ง ก็คือ
Union นะคะ
a Union b คือเอา A กับB มารวมกัน
ตัวนี้
มีตาราง A กับตาราง B
ทฤษฎีเซตของ Unionนะคะ จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกัน
ข้อมูล s1
ตาราง A ก็มี
ตาราง D ก็มี
ตามทฤษฎี Union นะคะ
ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียว
นะคะ จะเห็นว่าจาก 4 Record ก็คือ 4 แถวข้อมูลนะคะ
แต่ว่าอันนี้ ตาราง A ก็มี ตาราง B ก็มี มันซ้ำกัน
เราจะนับเป็นแค่ 1 ข้อมูลเท่านั้น
นะคะ
พอมันเอามา Union กัน ข้อมูลจาก 4
บรรทัด
จะเหลือแค่ 3 บรรทัด เพราะว่า s1
มีทั้ง 2 ตาราง ก็คือ a b เลย
Union นะคะ
ส่วนที่ทับซ้อนกัน ก็เอาแค่ข้อมูลเดียว
ต่อมา Intersection
ก็ตามทฤษฎีเซตเหมือนกันค่ะ
มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record
ที่ปรากฏอยู่ทั้ง 2 ตาราง
ที่มันทับซ้อนกันนั่นแหละ
ในรูปแบบของ Intersection ตามทฤษฎีของเซต
คำสั่ง ก็คือ
Intersec ให้ A
Intersec B ตัวอย่าง
ตารางเดิมเลยค่ะ A กับ B
ข้อมูลไหนที่ทับซ้อนกัน
คือข้อมูล s1
มันมีทั้ง 2 ตารางกำลัง A กับ
ตาราง B เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้น
เพราะฉะนั้น คำสั่ง A Intersect B จะมีผลลัพธ์แค่
1 Record เท่านั้น ก็คือ
ทฤษฎีของเซต
นะคะ
ต่อมา Different ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตาราง
หนึ่ง แต่อีกตารางหนึ่งไม่มีนะคะ ก็คือ
อะไรก็ตามที่อยู่ในตารางนั้น แต่ไม่อยู่กับกี่ตารางหนึ่ง คำสั่งที่ใช้
คือ Minas
แปลเป็นภาษาไทย คือ เครื่องหมายลบแล้วนี่ไม่เอา
อย่างเช่น A minas b ที่อยู่ในเ
A แต่ไม่อยู่ใน B
เมื่อคืนเหมือนตัวที่อาจารย์ทำไฮไลท์สีเหลืองไว้
ตารางเดิมเลยค่ะ
ให้คำสั่ง A
MINUS B
อะไรที่อยู่ใน A ไม่อยู่ใน
B อันนี้ไม่ใช่แน่นอน เพราะ S1 มีทั้ง A ทั้ง B เพราะฉะนั้น
A minas B ก็จะเป็น S4
ในทางกลับกันค่ะ B minas A ก็คืออยู่ในB แต่ไม่อยู่ใน A
อยู่ดี ๆ
S2
F1 ไม่ได้ s1 อยู่ในเองเหมือนกัน
ในทางกลับกันจะเป็นแบบนี้
นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหน เราจะเอาข้อมูลในวันข้างหน้า
ถ้าอยู่ใน A ไม่อยู่ใน B จะเป็นแบบนี้ จะเขียนแบบนี้นะคะ
แต่ถ้าอยู่ใน
B ไม่อยู่ใน A ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้
นะคะ ไม่ใช่ว่าทุกตารางจะชื่อ A กับ B นะคะ แล้วแต่ว่า
ตารางที่นักศึกษา
ได้ทำ
มันชื่อตารางอะไร อย่างเช่น ตาราง Student
Stud
ent แล้วก็ Minas Address
ก็ได้นะคะ
อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address
ว่าไป
นะคะ
ต่อมาจะเป็น
ตัวดำเนินการแบบ
พิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจาก
รูปแบบการทำงานของเซตโดยทั่วไป
นะคะ โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่
ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากัน
Attribute คืออะไร Attribute คือตัวนี้
Columnนะคะ
ถ้าเป็นแบบ Credit analyst นี่
Colum ทั้ง 2 ตาราง 13 ตารางต้องเท่ากัน
เท่านั้น
ถ้าเป็น Special คือ
Column หรือ
Attribute ไม่จำเป็นจะต้องมีจำนวนเท่ากัน
ไม่จำเป็น
ซึ่งคำสั่งพวกนี้นี่
จะถูกเรียกใช้บ่อย เพราะว่าฐานข้อมูล
แต่ละฐานข้อมูลอาจจะมีตารางที่บรรจุอยู่
รูปแบบที่แตกต่างกันไปนะคะ
โดย
ถึงแม้มันจะไม่มี Attribute ที่เท่ากัน ก็คือคอลัมน์ไม่เท่ากันนั่นแหละ
แต่ Attribute ของทั้ง 2 ตาราง
จะถูกนำมาใช้
จ ะต้องมีเงื่อนไข
จะต้องมีชื่อ Domain ของข้อมูลชื่อเดียวกัน
ชื่อ Column เดียวกัน
อาจจะเป็น
ชื่อตารางใด ๆ
ในตารางนั้นอาจจะมี
อีกตารางหนึ่งมี 8 Com
แต่จะต้องมีสิ่งที่เราจะเอามาดำเนินการนี่
ชื่อคอลัมน์จะต้องเหมือนกัน
นะคะ
คำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน
อันแรก
คำสั่ง regedit
หรือถ้าใน
ระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL
เราจะใช้คำสั่งเรียกว่า S
elect ะคะ
เดี๋ยวประมาณอีก 2 สัปดาห์
ต้องได้พิมพ์
ลองทำ Code ภาษา SQL ดู
ซึ่งการกระทำเพื่อแสดงข้อมูลใน Record ของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุ
เงื่อนไขที่ใช้จะใช้คำว่า "where"
นะคะ เช่น
A where x อันนี้เป็นต้นนะคะ
เดี๋ยวตอนที่เราทำ
โปรแกรมจริง ๆ อ่ะนักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้
อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ
น
ะคะ เราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูล
นะคะ ตัวอย่างเดิมค่ะ ตาราง A กับ B
นะคะ ตัวอย่างอาจารย์อาจจะเห็นว่าเอ๊ะ Column มันก็ยังเท่ากันนี่ แต่ก็
เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน
พอใช้คำสั่ง
SELECT หรือ Restrict นะคะ จะต้องมาคู่กับคำว่า "เสมอ
อย่างเช่น
ขึ้นต้นด้วยดี ก็คือในตารางดี
ให้ดูที่เงื่อนไข City ตรงนี้แปลว่าชื่อเมืองนะคะ
ในตาราง B
ค่าของ Column City
อันไหน
ที่มีค่าเท่ากับ Chai
nat เราก็ดูเลยค่ะ
ตาราง D City
Chainatนะคะ พอดีว่า City เท่ากับชัยนาท
ผลลัพธ์ที่ได้จะต้อง
แสดงผลลัพธ์ของ
S2
ทั้งหมด
นะคะ
เงื่อนไขในตาราง B จังหวัด
ข้อมูลอะไรที่มีข้อมูลว่า Chinat
นะคะ เราต้องยกมาทั้งหมดมาแสดงผล
ต่อมาเป็นโปรเจ็กต์นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถวโดยเลือกมาเพียงแค่บางคอลัมน์
เช่นอาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ
ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา
โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์
แต่าจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น
เราจะใช้คำสั่งที่เกี่ยวข้องกับ
การเรียกดูข้อมูล
คือ มันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจ็กต์นั่นเอง
นะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไข
ตารางเดิมค่ะ ตารางเดิม
คำสั่ง A ในวงเล็บ
SName กับ
Age นะคะ ก็คือ
อธิบายคือ
เอาข้อมูลในตาราง A เท่านั้น
อยู่ใน Column SName
และ
Column Ageลัพธ์ที่ได้
แสดงผลแค่นี้
จากตอนแรกมันมีแค่ 4 Column ใช่ไหมคะ 1 2 3 4
อาจารย์ให้แสดงผลแค่ S_Name
กับ Age เท่านั้น
อันนี้คือการทํางานของคําสั่ง project
เผื่อจะมีเป็นร้อยคอลัมน์ มาจากไหนจะเรียกดูแค่
คอลัมน์ที่น่าสนใจ
จะใช้คำสั่ง project
นะคะ
เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ว่านะ
หรือ อย่างเช่น
เอ๊ะ ผลลัพธ์ทำไมมันโชว์แค่
รหัส s1
คำสั่งที่จะต้องใช้คืออะไร
เงื่อนไขของคำสั่ง คือ ดูในตาราง B นะค
ะ โดยค่าของ Column City
มีค่าเท่ากับ
B
angkok แล้วให้แสดงผลเฉพาะ
S# เท่านั้น
คือ อยากรู้แค่รหัส
ที่มีเมืองที่อยู่ในเมืองกรุงเทพฯ
นะคะ
ก็ส่งแค่ s1 เท่านั้น
จากเมื่อก่อนนี้ที่อาจารย์บอกว่า Where City
กับ Bangkok
ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ
แต่ถ้าตามกำหนดให้มาแสดงแค่ Column ใด อ หนึ่งเท่านั้น
ก็สามารถทำได้
อันนี้คือความสามารถของคำสั่ง Project
ต่อมาคำสั่ง Join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด
ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป
โดยที่กำหนดค่าคอลัมน์หรือว่า Attribute ที่เหมือนกัน
อาจจะเป็นคอลัมน์เดียวหรือมากกว่าก็ได้
นะคะ
แต่ที่สำคัญ คือ คอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากัน
รูปคำสั่ง ก็คือ A Join B
มาดูตัวอย่างกัน
Join นะคะ
จะคล้าย ๆ กับ U
nion นะคะ แต่เงินไข คือ จะต้องมี Domain หรือว่า Column ที่เท่ากันถึงจะ ได้
นะคะ
อย่างตัวนี้มี 2 Column
มี 2 Column
รายการข้อมูลที่ซับซ้อนกัน
อยู่ในรูปแบบคล้าย ๆ กับคำสั่ง Union
นะคะ
อย่างเช่นตัวนี้คำสั่ง J
oin มีอะไรที่เหมือนกัน
มี City
ใช่ไหมคะ
A
Join B คอลัมน์นะคะ
City เหมือนกัน
แต่เนื่องจาก
Attribute ที่มีคำว่า City เหมือนกันนี่
มันจะต้องดูพิจารณาในเรคคอร์ดของ
รหัสด้วย
เพราะฉะนั้นถ้า
มันเกินมา
นะคะ มันเกินแล้วต้องทำข้อมูลซ้ำ
ให้เกิดขึ้น อันนี้ก็จะเป็นอีก
รูปแบบหนึ่งของการทำงาน คือ เติมข้อมูลเข้าไป
นะคะ
เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ
Record นะคะ มีค่า Attribute ก็คือที่เท่ากัน
เดี๋ยวอันนี้เราจะไปดูอีกทีหนึ่งนะคะ
ในตอนที่เราทำ
ทำตัวโปรแกรมเลย
ต่อมา
จะเป็นการแสดงข้อมูลจาก 2 R
elation โดยที่
Relation หรือว่าทั้งสองตารางนี่ มี Attribute หรือรอบมีคอลัมน์เนี่ยอย่างน้อย 1 คอลัมน์ที่เหมือนกัน
ผลลัพธ์จากคอลัมน์นะคะ
จากตารางที่มีจำนวน Attribute มากกว่านี่
จะถูกจับคู่
นะคะ กับคอลัมน์หนึ่งที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่า
คำสั่งรูปแบบก็คือ A DIVIDED BY B
มันจะเป็นคล้าย ๆ กับการหาร
นะคะ
คำสั่งตัวนี้ การเป็นตัวหาร
นะคะ
จะต้องเป็น
Subset ของตัวตั้ง
ก็คือในตัวตั้งมี A ไหมมี
มี B ไหม มี C ไหมมี
รับทุกตัว คือตัวที่แมทกับตัวหาร
อะไรบ้าง ที่อยู่ใน A
มี XYZ
C มีแค่ X C มีแค่ X
เพราะฉะนั้น
สิ่งที่
เอา A B C หารได้ครบทุกตัว
มีแค่ X ตัวเดียว
ก็คือตรงตามเงื่อนไขทั้งหมด
นะคะ เราอาจจะมีการตั้งเงื่อนไขมา
แล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้
หลักการนี้จะใช้ตอนที่เราค้นหาข้อมูลอย่างเช่นใน Google น
ะคะ อาจารย์อยากได้กระเป๋า
สีแดงมี 6 ล้อลาก
เงื่อนไข
อยากได้กระเป๋าสีแดง
มีล้อ 6 ล้อ
อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่ฉันต้องการแค่
อย่างเดียวเท่านั้น
เป็นต้น
นะคะ เป็นต้น
อย่างเช่นตัวอย่าง
มีข้อมูลนะคะ
ในตาราง A มีข้อมูล
ตามนี้
ตาราง B มีคอลัมน์เดียว คือ ตัวนี้
P2 ให้ A DIVIDED BY B ก็คือ
มีข้อมูล P2
อยู่ในชุดข้อมูลอะไรบ้าง ของ A
อันนี้ P2
เพราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่
2 Record เท่านั้น
ที่มี P2 อยู่ด้วย
อันนี้ก็จะยัง
ตรงตามเงื่อนไข
นะคะ ถ้าเพิ่มอีกนะคะ
B P1
P 2 P3 P6
S2 มีแค่นี้
มีแค่นี้ไม่ตรง S4 มีแค่นี้ไม่ตรง
มีที่ตรงแค่ S1 เท่านั้นที่เอา B ทุกตัว
หารได้ลงตัว
อันนี้คือหลักการ
นะคะ
ปัญหานั่นแหละต้องหาลงตัวนะคะ
วันนี้จะประมาณนี้ เพราะว่าเดี๋ยว
อาจจะให้เช็กโปรแกรมค่ะ
เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็กในห้องแล็บว่า
โปรแกรมที่จะใช้สมบูรณ์หรือเปล่า
ก็... วันนี้ก็น่าจะ
เนื้อหาจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็
กโปรแกรมในห้องเรียน
นะคะ
สั้น
นิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็กโปรแกรมก่อน
สัปดาห์หน้าอาจจะเริ่มใช้โปรแกรม อาทิตย์นี้ก็เลยเดี๋ยว
เนื้อหาจะหมดเท่านี้
เดี๋ยวเรามาเช็คดูว่าห้องเรียนเรา
ใช้โปรแกรมได้หรือเปล่า
นะคะ
วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ กับขอบคุณถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็กห้องแล็บก่อน
ขอบคุณมากค่ะ