โหล โหล
โอเคค่ะ บทที่ 7 สไลด์จะไรจะไม่เยอะนะคะ นิดเดียว
แล้วก็วันนี้จะไม่มีการบ้าน ไม่มีปัญหา
เฉพาะอาทิตย์นี้เท่านั้น
หรือว่าให้ปีใหม่
นี้นะคะ กลับเป็นเกี่ยวกับ
พีชคณิตเชิงสัมพันธ์น่าจะเป็นเกี่ยวกับกระบวนการโดยใช้คณิตศาสตร์อ
อย่างง่าย
นะคะ
ที่เอามาเป็นตัวกระทำในการจัดการฐานข้อมูลของเราด้วย
โดยพีชคณิตเชิงสัมพันธ์นะคะ
หรือว่าเป็นเกี่ยวกับโครงสร้างในการ Query ข้อมูล
ก็คือการจัดการข้อมูลของเรานะคะ
จะเป็นการกระทำที่เกิดขึ้นกับตารางหรือความสัมพันธ์นะคะ
ที่เราสร้างตารางใหม่ขึ้นมานะคะ
มันจะเป็นแบบจำลองของการกระทำต่าง ๆ ที่อาจจะเกิดขึ้นกับข้อมูลและฐานข้อมูลของเรานะคะ
ส่วนมากจะเป็นการกระทำพื้นฐานนะคะ
โดยมันจะมีอยู่ 2 กลุ่ม
คือ แบบดั้งเดิมกับแบบพิเศษ
จะเป็นอย่างละ 4 ตัวนะคะ
แบบตั้งเดิมก่อนนะคะ
ภาษาอังกฤษก็คือ.
.. โดยมันจะเป็นสิ่งที่เกิดขึ้นกับตารางความสัมพันธ์ โดยอาศัยทฤษฎีของ
ซึ่งเราเคยเรียน set มาแล้วในวิชาคณิต
นะคะ
โดยที่ตารางหรือความสัมพันธ์ที่เกิดขึ้นนี่จะมีการกระทำ
จะต้องมีก็คือ
ในตารางจะต้องมีข้อมูลเกิดขึ้นใช่ไหมคะ
ตารางนักศึกษาก็จะมีก็คือข้อมูลที่มี
ก็คือรหัสนักศึกษาชื่อ-นามสกุล เป็นต้นนะคะ
การกระทำของกลุ่มที่เป็นแบบดั้งเดิมนะคะ จะมีอยู่ 4 อย่าง
มี Product มี Union แล้วก็มี Intersection B different อันนี้จะเป็นภาษาอังกฤษนะคะ
เพราะว่าคำสั่งในระบบจัดการฐานข้อมูล
มันจะเป็นภาษาอังกฤษ
ประมาณนี้นะคะ
อันแรก
Product นะ
คะ เป็นการกระทำที่ให้มันแสดงข้อมูลทุก ๆ บรรทัด
หรือทุก ๆ recoed ที่เรามีนะคะ
ที่สามารถเป็นไปได้โดยการจับคู่แบบคูณคาร์ทีเซียนนะคะ
อันนี้ก็เป็นคณิตศาสตร์อย่างง่าย
คำสั่งของภาษาที่ใช้ในการจัดการฐานข้อมูลจะใช้คำว่า "Time"
T-i-m-e-s รูปแบบของมัน ก็คือ
ในกรอบสี่เหลี่ยมนะคะ
A time
ก็คือเอา A กับ B มันมา8กัน
นะคะ
เดี๋ยวจะมีตัวอย่างให้ดู
เช่น
ตัวอย่างนะคะ
เดี๋ยวอาจารย์เขียนให้ดูก่อน
เมื่อกี้ a กับ B
A B
ถ้าคำสั่ง Product
หรือคำสั่ง
ในระบบจัดการฐานข้อมูลเราจะใช้คำ
สั่ง TIMES ก็คือเอาทุกตัวที่เป็นไปได้มาคุยกัน
A x X A x Y ใช่ไหมคะ ก็จะมีตัวนี้
B x X B x Y ก็จะเป็น
B X C Y
คำสั่งนี้จริง ๆ นะคะ
จับคู่ทุกตัวที่เป็นไปได้
นะคะ
อันนี้จะยังง่ายอยู่
ตัวอย่างอีกนะคะ
เหมือนในตัวอย่างค่ะ มีตาราง A นะคะ
มีตาราง B นะคะ
ถ้าหสั่งให้มันคูณกัน
ก็คือเป็น a time
dsผลลัพธ์ที่ได้
จะเป็นทุกตัวที่ a กับ B มันสามารถจับคู่กันได้
คำสั่งนี้จริง ๆ
มันก็คือ 3 * 3 ได้ 9 มันต้องได้ 9 record
แถวนั่นเอง ถ้าจะเช็
ก ในข้อสอบก็จะมีออกนะนะคะ
อันนี้จะยังง่ายอยู่
ต่อมา
การ Union อันนี้ก็เป็นทฤษฎีเซตเหมือนกันนะคะ
ก็จะเป็นการรวมกันของ 2 ข้อมูล หรือ 2 Relation เพื่อแสดงข้อมูลทุก ๆ Record หรือทุก ๆ แถว
ในรูปแบบของยูเนี่ยนตามทฤษฎีของเซต
คำสั่งก็คือยูเนี่ยนนะคะ
A UNION B ก็คือเอาเอกับบีมารวมกันนะ
อย่างเช่นตัวนี้
ตาราง a กับตาราง B
ทฤษฎีเซตของยูเนี่ยนนะคะ
จะสังเกตได้ว่าข้อมูลมันมีข้อมูลซ้ำกัน
แหล่งข้อมูล S1
ตาราง A ก็มี
ตาราง B ก็มี
ต
ามทฤษฎี Union ถ้ามันซ้ำกันเราก็เอามาแยกข้อมูลเดียว
จะเห็นว่า 4 Record ก็คือ 4 แถวข้อมูลนะคะ
แต่ว่าอันนี้ตาราง A ก็มีอะไรดีก็มีมันซ้ำกัน
เราจะนับเป็นแค่ 1 ข้อมูลเท่านั้นนะคะ
พอมันเอามายูเนี่ยนกันข้อมูลจาก 4 บรรทัด
จะเหลือ 3 บรรทัด
เพราะว่า s1 มันมีอยู่ทั้ง 2 ตารางตารางเลย ก็คือ a กับ B เลย
ตามทฤษฎียูเนี่ยนนะคะ
ส่วนที่ทับซ้อนกัน ก็คือเอาแค่ข้อมูลเดียว
ต่อมา Intersection
ก็ตามทฤษฎีเหมือนกันค่ะ
มันจะเป็นการกระทำเพื่อแสดงข้อมูลของตารางหรือ Record นะคะ
ที่ปรากฏอยู่ทั้ง 2 ตาราง
ที่มันทับซ้อนกันนั่นล่ะ
ในรูปแบบของIntersectionตามทฤษฎีของเซต
คำสั่งก็คือนะคะ
ให้ a อินเตอร์เซค b
ตัวอย่าง
จากตารไปค่ะ A กับ B
ข้อมูลไหนที่ทับซ้อนกัน
คือ ข้อมูล S1
มันมีทั้ง 2 ตารางตาราง A กับตาราง B
เราจะแสดงผลเฉพาะตารางที่มัน
ทับซ้อนกันเท่านั้น
เพราะฉะนั้น คำสั่ง A intersect B จะมีผลลัพธ์แค่ 1 เท่านั้น
ก็คือ s1
ตามทฤษฎีของเซตนะคะ
ต่อมา
Difference นะคะ
ก็เป็นการกระทำเพื่อแสดงข้อมูลของแถวนั้น ๆ
ปรากฏอยู่ในตาราง
1 แต่อีกตาราง 1 ไม่มีนะคะ
อะไรก็ตามที่อยู่ในตารางนั้นแต่ไม่อยู่อีกตาราง 1 คำสั่งที่ใช้
คือ คำสั่งใช้ คือ คำสั่ง MINUS
แปลเป็นภาษาไทย ก็คือเครื่องหมายลบนั่นเอง ไม่เอานะคะ
เช่น A MINUS B ก็คืออยู่ใน A แต่ไม่อยู่ใน B นะคะ
คือ เหมือนตัวที่อาจารย์ทำไฮไลท์สีเหลืองเอาไว้นะ
ตารางเดิมเลยค่ะ
ให้คำสั่ง A MINUS B
อะไรที่อยู่ใน a แต่ไม่อยู่ใน B
อันนี้ไม่ใช่แน่นอน
เพราะ s1 มีทั้ง a ทั้ง B
เพราะฉะนั้น A MINUS B ก็จะเป็น
s4 ในทางกลับกันค่ะ A MINUS B
เป็น
B MINUS A อยู่ใน B แต่ไม่อยู่ใน A อยู่ใน B คือ S2
เพราะว่า s1 ไม่ได้ s1 อยู่ใน A เหมือนกันนะคะ
ในทางกลับกันจะเป็นแบบนี้นะคะ
ขึ้นอยู่กับว่าเราจะเอาข้อมูลจากตารางไหน
เราจะเอาข้อมูลอะไรไว้ข้างหน้านะคะ
ถ้าอยู่ใน a ไม่อยู่ใน B จะเป็นแบบนี้จะเขียนแบบนี้นะคะ
แต่ถ้าอยู่ในบีไม่อยู่ใน a ก็จะเขียนขึ้นต้นด้วย B นำหน้าแบบนี้นะคะ
ไม่ใช่ทุกตารางนะคะ
ขึ้นอยู่กับว่าตารางที่นักศึกษาได้ทำมันชื่อตารางอะไร
อย่างเช่นตาราง Student
S
tudent แล้วก็ MINUS
Address ก็ได้นะคะ
อยู่ในตาราง Student แต่ไม่อยู่ในตาราง Address ก็ว่าไปนะคะ
ต่อมา
จะเป็น
ตัวดำเนินการแบบพิเศษนะคะ เป็น Special
ซึ่งมันจะแตกต่างจากรูปแบบการดำเนินการของเซตโดยทั่วไปนะคะ
โดยการกระทำของกลุ่มที่จะเป็น Special หรือแบบพิเศษนี่
ไม่จำเป็นจะต้องมีจำนวนแอตทริบิวต์เท่ากัน Attribute คืออะไร อธิบายคือตัวนี้
คอลัมน์นะคะ
ถ้าเป็นแบบ Carditional
Set จะต้องเท่ากันเท่านั้นนะคะ ถ้าเป็น Special ก็คือ Column หรืออธิบาย
ไม่จำเป็นจะต้องมีจำนวนเท่ากัน
ไม่จำเป็น
ซึ่งคำสั่งพวกนี้จะถูกเรียกใช้บ่อยเพราะว่าฐานข้อมูลแต่ละฐานข้อมูล
อาจจะมีตารางที่บรรจุอยู่
มีรูปแบบที่แตกต่างกันไปนะคะ
โดย
ถึงแม้มันจะไม่มี Attribute ที่เท่ากันก็คือคอลัมน์มันไม่เท่ากันนั่นล่ะนะคะ
Attribute ของทั้ง 2 ตาราง
ถูกนำมาใช้
ต้องมีเงื่อนไขนะคะ
ต้องมีชื่อโดเมนของข้อมูลชื่อเดียวกัน
ก็คือชื่อคอลัมน์เดียวกัน
อาจจะเป็นชื่อตารางใด ๆ
ในตารางนั้นอาจจะมี 10 คอลัมน์ อีก
อีกตาราง มี 8 คอลัมน์
แต่จะต้องมีสิ่งที่เราเอามาดำเนินการ ชื่อคอลัมน์จะต้องเหมือนกันนะคะ
คำสั่งจะมีอยู่กี่คำสั่งด้วยกัน
อันแรก
คำสั่ง
Restrict หรือถ้าในระบบจัดการฐานข้อมูลภาษาที่ใช้ ภาษา SQL
ใช้คำสั่งที่เรียกว่า S
elect นะคะ
ประมาณอีก 2 สัปดาห์
จะต้องได้
พิมพ์
ลองทำโค้ดภาษา SQL ดูนะคะ
ซึ่งการกระทำใน Record ของข้อมูลนั้น ๆ จะต้องตามเงื่อนไขที่ระบุนะคะ
เงื่อนไขที่ใช้จะใช้คำว่า where
นะคะ
เ
ช่น a where x are
Operator y อย่างนี้เป็นต้นนะคะ
เดี๋ยวตอนที่เราทำ
ในโปรแกรมจริง ๆ นักศึกษาจะเห็นภาพให้เข้าใจมากกว่านี้อันนี้เป็นแค่การเกริ่นก่อนเฉย ๆ นะคะ
ว่าเราจะต้องเจอคำสั่งพิเศษอะไรบ้าง
ในการจัดการฐานข้อมูล
ตัวอย่างเดิมค่ะ ตาราง A กับ B นะคะ
ในตัวอย่างอาจารย์อาจจะเห็นว่า เอ๊ะ
คอลัมน์มันอย่างเท่ากันนี่
เพื่อให้เห็นภาพได้ชัดเจนนะคะ
อาจารย์จะยังยกตัวอย่างเป็นแบบนี้ก่อน
พอใช้คำสั่ง Select
หรือ
Restrict จะต้องมาคู่กับคำว่า Where เสมอ
อย่างเช่น
ขึ้นต้นด้วย B ก็คือในตาราง B
ให้ดูที่เงื่อนไข City City คือตรงนี้ แปลว่าชื่อเมืองนะคะ
ในตาราง D
ค่าของคอลัมน์ City
อันไหน
ที่มีค่าเข้ากับชัยนาท
เราก็ดูเลยค่ะ ตาราง B
City
Chinant นะคะ
เราพิมพ์ B Where City เท่ากับชัยนาท
ผลลัพธ์ที่ได้จะต้องแสดงผลลัพธ์
ของ
record ที่ S2
เพราะว่าเงื่อนไขมันก็คือในตารางบีจังหวัดข้อมูลอะไรที่มีข้อมูลก็ต้องยกมาทั้งหมดมาแสดงผล
ต่อมาเป็น project นะคะ
ก็จะเป็นการเรียกข้อมูลทุก ๆ แถวโดยเรียกว่าเพียงแค่บางคอลัมน์
เช่น อาจารย์อยากดูแค่รหัสนักศึกษากับชื่อ
ก็แสดงผลแค่ชื่อกับรหัสนักศึกษา โดยที่ในตารางข้อมูลนักศึกษาจะมีคอลมัน์
20 Column ก็ได้
อาจารย์อยากดูแค่ 2 คนนี้เท่านั้น
เราจะใช้คำสั่งที่เกี่ยวข้องกับการเรียกดูข้อมูลคือมันจะเป็นคำสั่งเกี่ยวกับการทำโปรเจคนั่นเองนะคะ
รูปแบบคำสั่งก็จะขึ้นต้นด้วยชื่อตารางแล้วก็ตามด้วยเงื่อนไขนะคะ
ตารางเดิมค่ะ ตารางเดิม
คำสั่ง A ในวงเล็บ S
_NAME กับ Age ก็คืออธิบายก็คือเอาข้อมูลในตาราง A เท่า
นั้น อยู่ในคอลัมน์ S_name
กับ Age และคอลัมน์เอก
ผลลัพธ์ที่ได้จะแสดงผลแค่นี้
จากตอนแรกมันมีแค่ 4 คอลัมน์ใช่ไหมคะ 1 2 3
4
อาจารย์ให้แสดงผลแค่ S name กับ
age เท่านั้น
อันนี้คือการทํางานของคําสั่ง project
อาจจะมีเป็นร้อย ๆ คอลัมน์ อาจารย์อาจจะเลือกรู้แค่
อาจารย์สนใจ
เราจะใช้คำสั่ง Project นะคะ
เดี๋ยวภาษาโปรแกรมยังมีอีกเยอะค่ะ อันนี้แค่ตัวอย่างกับคร่าว ๆ นะ
หรืออย่างเช่น
ผลลัพธ์มันโชว์แค่ S1 นะคะ
โดยค่าของ Column City มีค่าเท่ากับ Bangkok
แล้วให้แสดงผลเฉพาะ S# เท่านั้น
คือ อยากรู้แค่รหัส
ที่มีเมืองที่อยู่ในเมืองกรุงเทพฯ
นะคะ ก็โชว์แค่ s1
gท่านั้น
จากเมื่อก่อนนี้บอกว่า Where City เท่ากับ Bangkok
ปกติมันจะแสดงข้อมูลทุกคอลัมน์ใช่ไหมคะ
ถ้าอาจารย์กำหนดให้มาแสดงแค่คอลัมน์ในคอลัมน์หนึ่งเท่านั้น
ก็สามารถทำได้
นะคะ อันนี้คือความ
สามารถของคำสั่ง Project
ต่อมาคำสั่ง Join ค่ะ
จะเป็นการแสดงข้อมูลที่แสดงได้ทั้งหมด ซึ่งเกิดจากการเชื่อมโยงจาก
ตาราง 2 ตารางขึ้นไป
โดยที่กำหนดค่าคอลัมน์ หรือ Attribute ที่เหมือนกัน
อาจจะเป็นคอลัมน์เดียวหรือมากกว่าก็ได้นะคะ
แต่ที่สำคัญคือคอลัมน์จะต้อง ชื่อเหมือนกันโดเมนของข้อมูลชื่อเหมือนกัน
รูปแบบคำสั่งก็คือ
มาดูตัวอย่างกัน
จอยนะคะ
จะคล้าย ๆ กับยูเนี่ยน
เงื่อนไข คือ จะต้องมีโดเมนหรือคอลัมน์ที่เท่ากันถึงจะ Join ได้ อย่างตัวนี้มี 2 คอลัมน์
วันนี้มี 2 คน ข้อมูลที่ซับซ้อนกันอยู่ในรูปแบบคล้าย ๆ กับคำสั่งอยู่
นะคะ
อย่างเช่นตัวนี้ คำสั่งจอย
มีอะไรที่เหมือนกัน มี City
ใช่ไหมคะ A JOIN B
อันนี้มี 6 คอลัมน์นะคะ
ตัวนี้
นะคะ
City เหมือนกัน
แต่เนื่องจาก ที่มีคำว่า City เหมือนกัน
ลองดูพิจารณาในเรคคอร์ด
ของรหัสด้วยนะคะ
เพราะฉะนั้น ถ้ามันเกินมา
นะคะ
มันเกินเราจะต้องทำข้อมูลซ้ำให้เกิดขึ้น
อันนี้เป็นรูปแบบหนึ่งของการทำงาน คือ เติมข้อมูลเข้าไปนะคะ
เพื่อให้ผลลัพธ์ที่ได้นี่ ทุก ๆ Record นะคะ
แอตทริบิวต์ก็คือที่เท่ากัน
เดี๋ยวอันนี้เราจะไปดูอีกทีหนึ่ง
ในตอนที่เราทำตัวโปรแกรมเลย
ต่อมา
จะเป็นการแสดงข้อมูลจาก 2 รีเลชั่น
โดยที่รีเลชั่นหรือว่าทั้ง 2 ตารางนี่ มี Attribute
Attribute หรือว่ามีคอลัมน์อย่างน้อย 1 คอลัมน์ที่เหมือนกันนะคะ
ผลลัพธ์จากคอลัมน์
จากตารางที่มีจำนวน Attribute มากกว่านี
่จะถูกจับคู่
อีกคอลัมหนึ่ง
กับอีกคน
ตารางที่มีคอลัมน์น้อยกว่า
คำสั่งรูปแบบก็คือ
A DIVIDED BY B มันจะเป็นคล้าย ๆ กับการหาร
นะคะ
คำสั่งตัวนี้
การเป็นตัวหารนะคะ
จะต้องเป็นสับเซตของตัวตั้ง
นะคะ
ก็คือในตัวตั้งมี A ไหม
มี B ไหม มี ใบิ๊กซีไหมมี
ผลลัพธ์ทุกตัว คือ ตัวที่แม็ตกับตัวหาร
อะไรบ้างที่อยู่ใน A
A
มี X Y Z B มี L E X C B
เพราะฉะนั้น
สิ่งที่เอา A B C หารได้
ครบทุกตัว
มีแค่ X ตัวเดียว
ก็คือตรงตามเงื่อนไขทั้งหมด
นะคะ
เราอาจจะมีการตั้งเงื่อนไขมา แล้วมีแค่ x ตัวเดียวเท่านั้น
ที่ชื่อเข้าทุกเงื่อนไข 3 เงื่อนไขที่เราตั้งไว้
รายการนี้จะใช้ในการที่เราค้นหาอย่างเช่นใน
Google
อาจารย์อยากได้กระเป๋า
สีแดง มี 6 ล้อลาก เง
ื่อนไข อยากได้กระเป๋าสีแดง
มีล้อ 6 ล้อ
อาจจะมีผลลัพธ์ที่ตรงตามเงื่อนไขที่อาจารย์ต้องการแค่อย่างเดียวเท่านั้น เป็นต้น
นะคะ เป็นต้น
เช่นตัวอย่าง
มีข้อมูลนะคะ
ในตาราง A มีข้อมูลตามนี้
ตาราง b มีคอลัมน์เดียวคือตัวนี้ P2
ให้ A DIVIDED BY B ก็คือมีข้อมูล P2
อยู่ในชุดข้อมูลอะไรบ้าง ของเอ
อันนี้ p2
อันนี้ P2
เพราะฉะนั้นผลลัพธ์ที่ได้จะมีแค่ 2 เรคคอร์ดเท่านั้น
ที่มี P2 อยู่ด้วย
นะคะ
อันนี้ก็จะยังตรงตามเงื่อนไข
นะคะ
ถ้าเพิ่มอีกนะคะ
B
P1
2 P
2 P3 S
6 S2 มีแค่นี้ไม่
ตรง S3 มีแค่นี้ไม่ตรง แค่นี้ไม่ตรง
พี่โต vs หนึ่งเท่านั้น
ที่เอา B ทุกตัวหารได้ลงตัว
อันนี้คือหลัก
การนะคะ ก็คือการหารนั่นแหละ
ก็คือหารลงตัวนะคะ
วันนี้จะประมาณนี้นะคะ
เดี๋ยวจะให้เช็คโปรแกรม
ค่ะล่าม เนื้อหาจะมีแค่นี้เดี๋ยวจะเช็คในห้องแลปว่า
โปรแกรมนี้จะใช้สมบูรณ์หรือเปล่า
ก็วันนี้ก็น่าจะเนื้อหาจะประมาณนี้ค่ะ
เพราะเดี๋ยวจะให้เช็กโปรแกรมในห้องเรียนนะคะ
ก็เลยสั้นนิดหนึ่ง เพราะหลังปีใหม่จะขอเช็กโปรแกรมก่อน สัปดาห์หน้าอาจจะเริ่มใช้โปรแกรม
อาทิตย์นี้ก็เลยเดี๋ยว
หาจะหมดเท่านี้แล้วเดี๋ยวมาเช็คดูว่าในห้องเราใช้โปรแกรมได้หรือเปล่า
นะคะ วันนี้ก็ขอบคุณล่ามค่ะ กับขอบคุณถอดความด้วยนะคะ ประมาณนี้ค่ะ
เพราะเดี๋ยวเช็คแลปก่อนขอบคุณมากค่ะ