(อาจารย์เกวลี) โอเคค่ะ
เดี๋ยวเริ่มเลยละกันนะคะ วันนี้จะเป็นบทที่ 7
หลังปีใหม่
สไลด์จะไม่เยอะ
นะคะ นิดเดียว
แล้วก็วันนี้
ไม่มีการบ้าน
เฉพาะอาทิตย์นี้เท่านั้นนะคะ ถึงให้ปีใหม่
งวดนี้นะคะ จะเป็นเกี่ยวกับวิชาคณิตเชิงสัมพันธ์ก็จะเป็นกระบวนการ
โดยใช้
คณิตศาสตร์
อย่างง่าย
นะคะ ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย
โดยพิชคณิตเชิงสัมพันธ์
หรือว่าเป็นเกี่ยวกับโครงสร้างในการ
Query ข้อมูลคือการ
การข้อมูลของเรา
จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์
ที่เราสร้างตารางใหม่
ขึ้นมานะคะ มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้น
กับข้อมูลในฐานข้อมูลของเรา
ซึ่งส่วนมากจะเป็นการกระทำพื้นฐาน
นะคะ
โดยมันจะมีอยู่ 2 กลุ่ม คือ แบบดั้งเดิม
กับแบบพิเศษ
จะเป็นอย่างละ 4 ตัวนะคะ
แบบดั้งเดิมก่อนนะคะ ภาษาอังกฤษ ก็คือ
Tecnion นะคะ ก็จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์โดยอาศัยทฤษฎีของเซต
ซึ่งเราเคยเรียนเซตมาแล้วในวิชาคณิตศาสตร์
โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่
จะมีการกระทำ
ต้องมีเดียว คือ ในตารางจะต้องมีข้อมูลเกิดขึ้น
เช่นตารางนักศึกษาก็จะมีแอตทริบิวต์หรือว่าข้อมูลที่เรามี ก็คือ
รหัส ชื่อ นามสกุล เป็นต้น
การกระทำของกลุ่มที่เป็นแบบดั้งเดิม
จะมีอยู่ 4 อย่าง
มี product มี Union Intersec แล้วก็มีประเด็น
วันนี้จะต้องเป็นภาษาอังกฤษ
เพราะว่าคำสั่ง
ในระบบจัดการฐานข้อมูล
ก็จะเป็นภาษาอังกฤษมีมาณนี้นะคะ
อันแรก Product นะคะ
เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัด
หรือทุก ๆ เล็กคอร์ดที่เรามี
ที่สามารถเป็นไปได้โดยการจับคู่
ผลคูณคาร์ทีเซียน
นี่ก็เป็นคณิตศาสตร์อย่างง่าย
คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า "Time
" T-i
-m-e-s ในกรอบสี่เหลี่ยมนะคะ ก็คือเอา A กับ B มันมา
คูณกัน
เดี๋ยวจะมีตัวอย่างให้ดู
อย่างเช่นตัวอย่างนะคะ
การเขียนให้ดูก่อน
เมื่อกี้
A กับ B
นี่
ถ้าคำสั่ง product หรือคำสั่งค่าในฐานข้อมูลในระบบจัดการฐานข้อมูลใช้คำสั่ง Time
ก็คือเอาทุกตัว
เป็นไปได้มาคูณกัน
A x X A x Y ใช่ไหมคะ
B x X x y B x b y
fzy
คำสั่งนี้จริง ๆ
จับคู่ทุกตัวที่เป็นไปได้
นะคะ
อันนี้จะยังง่ายอยู๋
ยังอีก
เหมือนในตัวอย่างค่ะ มีตาราง A
มี
ตาราง B ถ้าสั่งให้มัน
คูณกัน ก็คือเป็น A time B
ผลลัพธ์ที่ได้
ก็จะเป็นทุกตัวที่ A กับ B มันสามารถจับคู่กันได้
คำสั่งนี้มันจะง่าย จริง ๆ
คือ 3 * 3 ได้ 9 ต้องได้ 9 Records 9 แถวนั้นเอง
ถ้าจะเช็ค
แนวข้อสอบก็มีออกนะนะคะ
อันนี้ยังง่ายอยู่
การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกัน
ก็จะเป็นการรวมกันของข้อมูล 2 ตารางหรือว่า 2 รีเลชั่น
เพื่อแสดงข้อมูลทุก ๆ เรื่องของเรื่องคือทุก ๆ แถว
ในรูปแบบของ Union ตามทฤษฎีของ
Set คำสั่ง ก็คือ
Union นะคะ
A Union B คือเอาเองกับบีมารวมกัน
ตัวนี้
มีตาราง a กับตาราง B
ทฤษฎีเซตของ Union นะคะ จะสังเกตได้ ว่าข้อมูลมันมีข้อมูลซ้ำกัน
อย่างข้อมูล s1
ตาราง A ก็มี
กำลังดีก็มี
ตามทฤษฎียูเนี่ยนนะคะ
ถ้ามันซ้ำกันเราก็เอามาแค่ข้อมูลเดียว
จะเห็นว่าจาก 4Records ก็คือ 4 แถวข้อมูลนะคะ
แต่ว่าอันนี้ตาราง A ก็มีแต่ก็มีมันซ้ำกัน
เราจะนับเป็นแค่ 1 ข้อมูลเท่านั้น
นะคะ
พอมันเอามา Union กันข้อมูลจาก 4
บรรทัด
จะเหลือแค่ 3 บรรทัดเพราะว่า s1
ไม่มีทั้ง 2 ตารางก็คือ a b เลย
Union นะคะ
ส่วนที่ทับซ้อนกันก็เอาแค่ข้อมูลเดียว
I
ntersection ก็ตามทฤษฎี Set เหมือนกันค่ะ
มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ
Record ที่ปรากฏอยู่ทั้ง 2 ตาราง
ที่มันทับซ้อนกันนั่นแหละ
ในรูปแบบของ intersection ตามทฤษฎีของ
Set คำสั่งก็คือ
Intersec ให้ a intersec b
ตัวอย่าง
ตารางเดิมเลยค่ะ A กับ B
ข้อมูลไหนที่ทับซ้อนกัน
คือข้อมูล s1
มันมีทั้ง 2 ตาราง ตาราง A กับ
ตาราง B เราจะแสดงผลเฉพาะตารางที่มันทับซ้อนกันเท่านั้น
เพราะฉะนั้นคำสั่ง a อินเตอร์เซค b จะมีผลลัพธ์แค่
Rccord เท่านั้น ก็คือ
ทฤษฎีของ
Set นะคะ
ต่อมาก็คือ Differrent ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ ที่ปรากฏอยู่ในตาราง
หนึ่ง แปลตาราง 1 ไม่มีนะคะ ก็คือ
อะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่กับกี่ตาราง 1 คำสั่งที่ใช้
คือคำสั่งไว้นะ
แปลเป็นภาษาไทยคือเครื่องหมายลบนี่ไม่เอา
อย่างเช่น ที่อยู่ใน
A แต่ไม่อยู่ใน B
เหมือนตัวที่ทำไฮไลท์สีเหลืองไว้
ตารางเดิมเลยค่ะ
ให้คำสั่ง A
Minas B
อะไรที่อยู่ในเอเชียไม่อยู่ใ
น B อันนี้ไม่ใช่แน่นอนเพราะ s1 มีทั้ง a ทั้ง B เพราะฉะนั้น
Minis บี
ว่าจะเป็น S4
ในทางกลับกันค่ะ ก็คืออยู่ในบีแต่ไม่อยู่ใน A
อยู่ดี ๆ
S2
F1 ไม่ได้ s1 อยู่ในเองเหมือนกัน
ในทางกลับกันจะเป็นแบบนี้
นะคะ ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหน เราจะเอาข้อมูล
ไปไว้ข้างหน้านะคะ ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้จะเขียนแบบนี้นะคะ
แต่ถ้าอยู่ใน
B ไม่อยู่ใน A ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้
ไม่ใช่ว่าทุกตารางจะชื่อ A กับ B นะคะ แล้วแต่ว่า
ตารางที่นักศึกษา
ได้ทำ
ชื่อตารางอะไรอย่างเช่นตาราง Student
ดีเด่น
Studen แล้วก็
Minas Address ก็ได้นะคะ
อยู่ในตาราง student แต่ไม่อยู่ในร้าน Address
ก็ว่าไป
นะคะ
ต่อมาจะเป็น
ตัวดำเนินการแบบ
พิเศษนะคะ เป็น Special ซึ่งมันจะแตกต่างจาก
รูปแบบการทำงานของเซตโดยทั่วไป
โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่
ไม่จำเป็นจะต้องมีจำนวน Attribute เท่ากัน
Attribute คืออะไร คือตัวนี้
นะคะ
ถ้าเป็นแบบ Credit analyst นี่
คอลัมน์ทั้ง 2 ตาราง 13 ตารางต้องเท่ากัน
เท่านั้น
ถ้าเป็น Special คือ
คอลัมน์หรือ
Colume ไม่จำเป็นจะต้องมีจำนวนเท่ากัน
ไม่จำเป็น
ซึ่งคำสั่งพรุ่งนี้เนี่ย
จะถูกเรียกใช้บ่อยเพราะว่าฐานข้อมูล
ข้อมูลอาจจะมีตารางที่บรรจุอยู่
มีรูปแบบที่แตกต่างกันไปนะคะ
โดย
ถึงแม้มันจะไม่มี Attribute ที่เท่ากันไม่เท่ากัน นั่นแหละ
แอตทริบิวต์ของทั้ง 2 ตาราง
จะถูกนำมาใช้
จะต้องมีเงื่อนไข
ต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน
ชื่อคอลัมน์เดียวกัน
อาจจะเป็น
ชื่อตารางใด ๆ
ในตารางนั้นอาจจะมี
10 คอลัมน์ แต่อีกตาราง 8 ค
อลัมน์ แปล
ต้องมีสิ่งที่เราจะเอามาดำเนินการนี่
ชื่อคอลัมน์จะต้องเหมือนกัน
นะคะ
คำสั่งจะมีอยู่ 4 คำสั่งด้วยกัน
อั นแรก
คำสั่ง
หรือถ้าใน
ระบบจัดการฐานข้อมูลภาษาที่ใช้ภาษา SQL
เราจะใช้คำสั่งเรียกว่า
Select นะคะ
เดี๋ยวประมาณอีก 2 สัปดาห์
จะต้องได้พิมพ์
ลองทำโค้ดภาษา SQL ดู
นะคะ ซึ่งการกระทำเพื่อแสดงข้อมูลในเรคคอร์ดของตารางนั้น ๆ จะต้องตรงตามเงื่อนไขที่ระบุ
เงื่อนไขที่ใช้จะใช้คำว่า where
นะคะ เช่น
A Where X Operatiอันนี้เป็นต้นนะคะ
เดี๋ยวตอนที่เราทำ
โปรแกรมจริง ๆ นักศึกษาจะเห็นภาพได้เข้าใจมากกว่านี้
อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ
หาว่า
เราจะต้องเจอคำสั่งพิเศษอะไรบ้าง ในการจัดการฐานข้อมูล
ตัวอย่างเดิมค่ะ ตาราง A กับ B
นะคะ ในตัวอย่างอาจารย์อาจจะเห็นว่า เอ๊ะ Column มันก็ยังเท่ากันนี่แต่ก็
เพื่อให้เห็นภาพที่ชัดเจนนะคะ อาจารย์จะเลยจะยังยกตัวอย่างเป็นแบบนี้ก่อน
พอเขาให้คำสั่ง
Select หรือ Racing นะคะ จะต้องมาคู่กับคำว่าเสมอ
อย่างเช่น
ขึ้นต้นด้วยดีก็คือในตารางดี
ให้ดูที่เงื่อนไข City City ตรงนี้แปลว่าชื่อเมืองนะคะ
ในตาราง B
ค่าของ Column City
อันไหน
ที่มีค่าเท่ากับชัยนาท
ขอดูหน่อยค่ะกำลังดี
ราก็ดูเลยค่ะ ตางราง B City
ชัยนาทนะคะ พอเราพิมพ์ B Wh City เท่ากับชัยนาท
ผลลัพธ์ที่ได้จะต้อง
แสดงผลลัพธ์ของ
TF2
ทั้งหมด
นะคะ
เงื่อนไขในตารางบีจังหวัด
ข้อมูลอะไรที่มีข้อมูลว่าชัยนาท
นะคะ เราต้องยกมาทั้งหมดมาแสดงผล
ต่อมาเป็นโพรเจกต์นะคะ ก็จะเป็นการเลือกข้อมูลทุก ๆ แถวโดยเลือกมาเพียงแค่บางคอลัมน์
เช่น อาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ
ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา
โดยที่ในตารางข้อมูลศึกษาอาจจะมีคอลัมน์ประมาณ 20 คอลัมน์
แปล
แต่อาจารย์อยากดูแค่ 2 คอลัมน์นี้เท่านั้น
เราจะใช้คำสั่งที่เกี่ยวข้องกับ
การเรียกดูข้อมูล
คือมันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจคนั่นเอง
นะคะ รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วตามด้วยเงื่อนไข
นะคะ ตารางเดิมค่ะ ตารางเดิม
คำสั่ง A ในวงเล็บ
SName กับ
Age นะคะ ก็คือ
อธิบายคือ
เอาข้อมูลในตาราง a เท่านั้น
อยู่ใน Column SName
และคอลัมน์ Age
ผลลัพธ์ที่ได้
จะแสดงผลแค่นี้
จากตอนแรกมันมีแค่ 4 คอลัมน์ใช่ไหมคะ 1 2 3
4 อาจารย์ให้แสดงผลแค่ SName
เท่านั้น
นี่คือการทํางานของคําสั่ง โพรเจกต์
เผื่อจะมีเป็นร้อยคนละมาจากไหนจะเรียกดูแค่
คอลัมน์ที่น่าสนใจ
เราจะใช้คำสั่ง P
roject นะคะ
เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ นี่แค่ตัวอย่างคร่าว ๆ ว่านะ
อย่างเช่น
ผลลัพธ์ทำไมมันโชว์แค่
รหัส s1
คำสั่งที่จะต้องใช้คืออะไร
เงื่อนไขของคำสั่ง คือ ดูในตาราง B นะคะ
โดยหน่วยค่าของคอลัมน์ City
มีค่าเท่ากับ
Bangkok แล้วให้แสดงผลเฉพาะ
s# เท่านั้น
คืออยากรู้แค่รหัส
มีเมืองที่อยู่ในเมืองกรุงเทพฯ
นะคะ
ก็ Show แค่ s1 เท่านั้น
จากเมื่อก่อนนี้เรียกว่า Where City
กับ Bangkok
ปกติแล้วมันแสดงข้อมูลทุก ๆ คนใช่ไหมคะ
แต่ถ้าตามกำหนดให้มาแสดงแค่คอลัมน์ใดคอลัมน์หนึ่งเท่านั้น
ก็สามารถทำได้
อันนี้คือความสามารถของคำสั่ง Project
ต่อมาคำสั่ง Join ค่ะ จะเป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมด
ซึ่งเกิดจากการเชื่อมโยงข้อมูลของ 2 ตารางขึ้นไป
โดยที่กำหนดค่าคอลัมน์หรือ Attribute ที่เหมือนกัน
อาจจะเป็นคอลัมเดียวหรือมากกว่าก็ได้
นะคะ
แต่ที่สำคัญคือคอลัมน์จะต้องชื่อเหมือนกันโดเมนของข้อมูลต้องเท่ากัน
คำสั่ง ก็คือ A Join B
มาดูตัวอย่างกัน
Join นะคะ
จะคล้าย ๆ กับ
Union แต่เงินไข คือ จะต้องมี Domain หรือว่า Column ที่เท่ากันถึงจะ ได้
นะคะ
อย่างตัวนี้มี 2
คอลัมน์มี 2 คอลัมน์
รายการข้อมูลที่ซับซ้อนกัน
อยู่ในรูปแบบคล้าย ๆ กับคำสั่งอยู่นี่
นะคะ
เช่นตัวนี้คำสั่ง
Join มีอะไรที่เหมือนกัน
City
ใช่ไหมคะ
มี 6 คอลัมน์นะคะ
City เหมือนกัน
แต่เนื่องจาก
Attribute ที่มีคำว่า City เหมือนกันนี่
มันจะต้องดูพิจารณาใน Recorของ
รหัสด้วย
เพราะฉะนั้นถ้า
มันเกินมา
มันเกินแล้วต้องทำข้อมูลซ้ำ
ให้เกิดขึ้นอันนี้ก็จะเป็นอีก
รูปแบบหนึ่งของการทำงานคือเติมข้อมูลเข้าไป
นะคะ
เพื่อให้ผลลัพธ์ที่ได้ในทุก ๆ
Records นะคะ มีค่า Attribure ก็คือที่เท่ากัน
เดี๋ยวนี้เราจะไปดูอีกทีหนึ่งนะคะ
ในตอนที่เราทำ
โปรแกรมเลย
ต่อมา
จะเป็นการแสดงข้อมูลจาก 2 รีเลชั่น
โดยที่
รีเลชั่น หรือว่าทั้งสองตารางนี่ มี Attribute หรือรอบมีคอลัมน์นี่อย่างน้อย 1 คอลัมน์ที่เหมือนกัน
กดรับจากคอลัมน์นะคะ
จากตารางที่มีจำนวนอธิบดีมากกว่านี่
จะถูกจับคู่
กับคอลัมน์หนึ่ง ที่มีคอลัมน์ของตารางที่มีคอลัมน์น้อยกว่า
คำสั่งรูปแบบก็คือ a b y by B
มันจะเป็นคล้าย ๆ กับการหาร
นะคะ
คำสั่งตัวนี้ การเป็นตัวหาร
นะคะ
ต้องเป็น
Subset ของตัวนี้
ก็คือในตัวตั้งมี a ไหมมี
มีไหม มีไหมมี
รับทุกตัว คือ ตัวที่แมทกับตัวหาร
อะไรบ้าง ที่อยู่ใน A
B X Y Z
มีมีแค่ X C มีแค่ x
เพราะฉะนั้น
สิ่งที่
เอา A B C หารได้ครบทุกตัว
มีแค่ X ตัวเดียว
ก็คือตรงตามเงื่อนไขทั้งหมด
น่าจะมีการตั้งเงื่อนไขมา
แล้วมีแค่ X ตัวเดียวเท่านั้นที่เข้าตรงทุกเงื่อนไข 3 เงื่อนไขที่เราต้องตั้งไว้
อันนี้จะใช้ตอนที่เราค้นหาข้อมูลอย่างเช่นใน
Google อาจารย์อยากได้กระเป๋า
สีแดง มี 6 ล้อลาก
เงื่อนไข
กระเป๋าสีแดง
มีล้อ 6 ล้อ
อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่ฉันต้องการแค่
อย่างเดียวเท่านั้น
เป็นต้น
นะคะ เป็นต้น
เช่นตัวอย่าง
มีข้อมูล
นะคะ ในตาราง A มีข้อมูล
ตามนี้
ตารางดีมีคอลัมน์เดียว คือ ตัวนี้
P2 ให้ A
B Y by B มีข้อมูล P2
อยู่ในชุดข้อมูลอะไรบ้าง ของ
A อันนี้ P2
อันนี้ P2
เ พราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่
2
Records เท่านั้น
ที่มี P2 อยู่ด้วย
อันนี้ก็จะยัง
ตรงตามเงื่อนไข
นะคะ ถ้าเพิ่มอีกนะคะ
B P1
P2 P3 P6
S 2 มีแค่นี้
มีแค่นี้มีส่ง S4 มีแค่นี้ไม่ตรง
มีที่ตรงแค่ s1 เท่านั้นที่เอาบีทุกตัว
หารได้ลงตัว
อันนี้คือหลักการ
นะคะ
การหารนั่นล่ะต้องหาลงตัวนะคะ
วันนี้จะประมาณนี้เพราะว่าเดี๋ยว
อาจจะให้เช็กโปรแกรมค่ะ
เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็กในห้อง Lab ว่า
โปรแกรมที่จะใช้สมบูรณ์หรือเปล่า
ก็วันนี้ก็น่าจะ
แม่จ๋าจะประมาณนี้ค่ะ เพราะเดี๋ยวจะให้เช็
กโปรแกรมในห้องเรียน
นะคะ
น้อยนิดหนึ่ง เพราะว่าหลังปีใหม่ขอเช็กโปรแกรมก่อน
สัปดาห์หน้าอาจจะเริ่มใช้โปรแกรมอาทิตย์นี้ก็เลยเดี๋ยว
เท่านี้
เดี๋ยวเรามาเช็คดูว่าห้องเรียนเรา
ใช้โปรแกรมได้หรือเปล่า
นะคะ
วันนี้ก็ขอบคุณล่ามกับขอบคุณค่ะ ถอดความด้วยนะคะ ประมาณนี้ค่ะ เพราะว่าเดี๋ยวเช็คห้องแลปก่อน
ขอบคุณมากค่ะ