ผู้จัดทำ             แบบฝึกหัด             เฉลยแบบฝึกหัด              HOME

ความสัมพันธ์ n-ary และการประยุกต์ใช้

บทนำ ในระหว่างส่วนประกอบหรือจำนวนที่มีมากกว่า 2 กลุ่มมักจะมีความสัมพันธ์เกิดขึ้นเสมอ เช่น ชื่อนักศึกษาจะมีความสัมพันธ์เชื่อมโยงกันอยู่กับ คณะของนักศึกษา และเกรดเฉลี่ยของนักศึกษาผู้นั้น และในทำนองเดียวกัน สายการบินจะมีความสัมพันธ์เชื่อมโยงกันอยู่กับหมายเลขเที่ยวบิน สถานีต้นทาง สถานีปลายทาง เวลาออกเดินทาง และเวลาที่เที่ยวบินไปถึง

ตัวอย่างความสัมพันธ์ทางด้านคณิตศาสตร์ก็มี เช่น มีจำนวนเต็มอยู่ 3 จำนวน จำนวนแรกมากว่าจำนวนที่2 จำนวนที่2 มากกว่าจำนวนที่3

ตัวอย่างอื่นๆก็มี เช่น ความสัมพันธ์ระหว่างจุด 3 จุดบนเส้นตรงเดียวกัน โดยกำหนดให้จุดที่ 2 อยู่ระว่างจุดที่ 1 กับ 3

ในเนื้อหานี้จะกล่าวถึงเรื่องความสัมพันธ์ระหว่างส่วนประกอบหรือจำนวนที่มีมากกว่า 2 กลุ่ม ซึ่งเราเรียกความสัมพันธ์แบบนี้ว่า n-ary relations

ความสัมพันธ์นี้ใช้ในการนำเสนอข้อมูลในระบบฐานข้อมูลในคอมพิวเตอร์และช่วยให้เราสามารถสร้างQuery(คือตัวช่วยในการค้นหา)เพื่อใช้ในการค้นหาข้อมูลที่เราต้องการจากฐานข้อมูลได้ เช่น สายการบินไหนที่ลงจอดที่ O’Hare Airport ในช่วงเวลาตี3ถึงตี4 นักศึกษาปีที่2คนไหนที่เรียนสาขาคณิตศาสตร์ หรือสาขาวิทยาศาสตร์คอมพิวเตอร์ที่มีเกรดเฉลี่ยมากกว่า 3 พนักงานของบริษัทคนใดที่มีอายุการทำงานอย่างน้อย 5 ปี และรับรายได้สุทธิมากกว่า 50,000 ดอลลาร์

ความสัมพันธ์ n-ary

นิยาม 1

ให้ A1,A2,.......,An เป็นเซต ความสัมพันธ์แบบ n-ary relation ของเซตนี้คือสับเซตของ A1xA2x...xAn

เซต A1,A2,...,Anนี้จะเรียกว่า Domains of relation (ขอบเขตของความสัมพันธ์) และ n ก็คือดีกรี

ตัวอย่างที่ 1
ให้ R เป็นความสัมพันธ์ซึ่งประกอบด้วย 3 สิ่งอันดับ ( a , b , c) โดยที่ a , b , c คือจำนวนเต็มใดๆ ที่ a<b<c

เมื่อ แทน a , b , c ด้วย (1 , 2 , 3) จะเป็นความสัมพันธ์ที่อยู่ใน R เนื่องจาก 1<2<3

แต่เมื่อ แทน a , b , c ด้วย (2 , 4 , 3) จะเป็นความสัมพันธ์ที่ไม่อยู่ใน R เนื่องจาก 2<4 แต่ 4>3

ดีกรีของความสัมพันธ์นี้คือ 3 และโดเมนคือเซตของจำนวนเต็ม

ตัวอย่างที่ 2

ให้ R เป็นความสัมพันธ์ของ (A, N, S, D, T) ของสายการบินหนึ่ง ให้ A = สายการบิน, N = หมายเลขเที่ยวบิน, S = สถานีต้นทาง, D = จุดหมายปลายทาง ,T = เวลาออกเดินทาง จากนั้นยกตัวอย่างว่ามีสายการบิน Nadir Express Airlines เที่ยวบินที่ 963 ออกจาก Newark ไป Bangor ในเวลา 15.00 น. เราจะได้ R = (Nadir , 963 , Newark , Bangor , 15:00) ดีกรีคือ 5 และโดเมนคือเซตของสายการบิน,เซตของหมายเลขเที่ยวบิน,เซตของสถานีต้นทาง,เซตของจุดหมายปลายทาง,และเซตของเวลาออกเดินทาง

ฐานข้อมูลและความสัมพันธ์

เมื่อเราต้องการที่จะยักย้ายถ่ายเทข้อมูล ดึงข้อมูล เราต้องนึกถึงว่าข้อมูลเหล่านี้เก็บอยู่อย่างไร ในแต่ละวันฐานข้อมูลใหญ่ๆ จะมีการทำการเพิ่ม ลบ แก้ไข ค้นหา เชื่อมต่อข้อมูลในแต่ละเรคคอร์ดเป็นจำนวนนับล้านครั้งต่อวัน ด้วยเหตุที่การกระทำการต่างๆในฐานข้อมูลมีความสำคัญ จึงมีรูปแบบหลายวิธีการที่มาจัดการกับมันในที่นี้จะยกตัวอย่างขึ้นมา 1 วิธี เรียกว่า relation data model ซึ่งมีพื้นฐานแนวความคิดมาจากความสัมพันธ์

ฐานข้อมูลประกอบด้วยหลายๆเรคคอร์ดซึ่งก็คือ n-tuples นั่นเอง โดยที่ เรคคอร์ด หรือ n-tuples นี้เกิดจากการรวมกันของแต่ละฟิลด์(หรือแต่ละtupleนั่นเอง) ยกตัวอย่างเช่น ฐานข้อมูลของข้อมูลนักศึกษา อาจจะประกอบด้วยฟิลด์ดังต่อไปนี้คือ ชื่อนักศึกษา หมายเลขนักศึกษา คณะ และเกรดเฉลี่ยของนักศึกษา ให้ relation data model นำเสนอฐานข้อมูลนี้เป็นเรคคอร์ดที่เป็น n-ary relation ดังนั้นข้อมูลนักศึกษานี้จะถูกนำเสนอเป็น 4-tuples คือ (Student Name, ID Number, Major, GPA) ยกตัวอย่างข้อมูลซัก 6 record เช่น

(Ackermann, 231455, Computer Science, 3.88)
(Adam, 888353, Physics, 3.45)
(Chou, 10247, Computer Science , 3.79)
(Goodfriend, 102417, Mathematics, 3.45)
(Rao, 678543, Mathematics, 3.90)
(Steven, 786576, Psychology, 2.99)

ความสัมพันธ์ที่ใช้ในการนำเสนอฐานข้อมูลจะเรียกว่า Tables(ตาราง) โดยที่บ่อยๆครั้งความสัมพันธ์มักจะถูกแสดงออกมาในรูปแบบของตาราง ซึ่งตัวอย่างฐานข้อมูลของนักเรียนข้างต้นนี้แสดงเป็นตารางโดยดูได้จาก Table 1

โดเมนของ n-ary relation จะเรียกว่าเป็น Primary key (คีย์หลัก) เมื่อค่าของ n-tuple จากโดเมนนี้เป็นตัวกำหนด n-tuple นั่นหมายถึงว่าในโดเมนนั้น เมื่อไม่มี n-tuples ในความสัมพันธ์ที่มีค่าเหมือนกัน โดเมนนั้นก็คือ Primary key (หรือสรุปง่ายๆก็คือโดเมนใดที่มีค่า n-tuplesไม่ซ้ำกันเลย โดเมนนั้นจะเป็น Primary key ได้)

โดเมนจะเป็น Primary key หรือไม่นั้นนอกจากไม่มีค่าที่ซ้ำกันแล้วยังขึ้นอยู่กับเวลาด้วย เพราะเนื่องจากข้อมูลจะมีการ เพิ่ม และลบจากฐานข้อมูลอยู่เสมอ ด้วยเหตุนี้ Primary key ควรจะเลือกไว้เพียง 1 เดียวเท่านั้น เมื่อมีการเปลี่ยนแปลงในฐานข้อมูล ทำได้โดย Primary key ที่เลือก ควรเลือกใช้ Primary keyที่เป็นจุดมุ่งหมายของฐานข้อมูล และสามารถที่จะสร้างความสัมพันธ์แบบ n-ray relation เพื่อนำเสนอข้อมูลได้

ตัวอย่างที่ 3

โดเมนใดที่เป็น Primary key ในความสัมพันธ์แบบ n-ray relation ที่แสดงได้ดัง Table 1 สมมุติให้ไม่มีการเพิ่ม n-tuples ในอนาคต
 
Table 1
Student Name ID Number Major
GPA
Ackermann 231455 Computer Science
3.88
Adams 888323 Physics
3.45
Chou 102147 Computer Science
3.79
Goodfriend 453876 Mathematics
3.45
Rao 678543 Mathematics
3.90
Stevens 786576 Phychology
2.99

วิธีทำ

มีเพียงแค่ one 4-tuples ในตารางนี้สำหรับชื่อนักศึกษาแต่ละคน (แปลง่ายๆก็คือไม่มีชื่อของนักศึกษาซ้ำกันเลย ใน 1 โดเมน ซึ่งเราเรียกว่า one 4-tuples ) ดังนั้นโดเมนของชื่อนักศึกษาสามารถที่จะเป็น Primary key ได้ เช่นเดียวกับ ID Number ของนักศึกษาทั้งหมด ก็ไม่เหมือนกันเลย ดังนั้น โดเมนของ ID Number ก็สามารถที่จะเป็น Primary key ได้ แต่ในโดเมนของ Major ไม่สามารถเป็น Primary key ได้เพราะมีมากกว่า one 4-tuples ที่เหมือนกันในฟิลด์ Major ที่ลงเรียน โดเมนของ GPA ก็ไม่เป็น Primary key เช่นเดียวกัน เพราะมีอยู่ two 4-tuples ที่มีค่าเหมือนกัน

ในความสัมพันธ์แบบ n-ray relation การรวมกันของโดเมนยังสามารถให้ n-tuples ที่เหมือนกันแตกต่างกันได้ เมื่อค่าของเซตของโดเมนเป็นตัวกำหนด ค่าของ n-tuples ในความสัมพันธ์ ซึ่งเราเรียกผลของการรวมโดเมนเหล่านี้ว่า Composite key (สรุปง่ายๆ คือ โดเมนหรือ ฟิลด์ ที่รวมกันเพื่อเป็น Primary key )

ตัวอย่างที่ 4

จากความสัมพันธ์แบบ n-ray relation ในตารางที่ 1 ผลของการรวมกันของโดเมน major และโดเมน GPA เป็น Composite key หรือไม่ สมมุติให้ไม่มีการเพิ่ม n-tuples ในอนาคต

วิธีทำ

ไม่มี two 4-tuple ใดที่เหมือนกันทั้ง Major และ GPA ฉะนั้นผลของการรวมกันนี้เป็น Composite key

ทั้ง Primary key และ Composite key ต่างก็ใช่บ่งบอกถึงเรคคอร์ด ที่ไม่เหมือนกันในฐานข้อมูล มันเป็นสิ่งที่สำคัญ มากว่าคีย์นั้นเป็นคีย์หลักหรือไม่เมื่อมีการเพิ่มเติมเรคคอร์ดในอนาคตเข้าไปในฐานข้อมูล ด้วยเหตุนี้ควรจะมีการตรวจสอบทุกครั้งที่มีการเพิ่มเรคคอร์ดใหม่เข้าไปในฐานข้อมูลว่ามีค่าแตกต่างจากเรคคอร์ดอื่นในฟิลด์เดียวกันหรือหลายฟิลด์ที่เหมาะสมหรือไม่ ยกตัวอย่างเช่น เราสามารถใช้ไหวพริบในการเลือก ใช้ ID number ของนักศึกษาเป็นคีย์หลักสำหรับข้อมูลนักศึกษาเพราะไม่มีทางที่นักศึกษาคนไหนจะมี ID number เหมือนกัน มหาวิทยาลัยไม่ควรที่จะใช้ชื่อของนักศึกษาเป็นคีย์หลัก เพราะอาจมีชื่อของนักศึกษาที่เหมือนกัน

ยังมีอีกหลายวิธีปฏิบัติในความสัมพันธ์แบบ n-ray relation ที่สามารถใช้สร้าง n-ray relation ใหม่ได้ ยกตัวอย่างอีกสองวิธีคือ Projection Operation และ Join Operation

Projection ใช้สร้าง n-ray relation ใหม่โดยการ ลบฟิลด์ที่เหมือนกันในทุกๆเรคคอร์ดของความสัมพันธ์

นิยาม 2

The Projection Pi1 , i2 , ... , immaps the n-tuple(a1 , a2 ,…, am)to the m-tuple(ai1 , ai2 ,… ,aim) where m n

หรือ

The Projection Pi1 , i2 , … , im deletes n - m of the components of an n-tuple, leaving the i1th,i2th,…,and Imth components

ตังอย่างที่ 5

ผลที่ได้คืออะไรเมื่อ Projection P1,3 ส่ง 4-tuples (2,3,0,4), (Jane Doe,234111001,Geography,3.14), และ (a1,a2,a3,a4)

วิธีทำ

Projection P1,3 จะส่งข้อมูล 4-tuples เหล่านี้เป็น (2,0) , (Jane Doe, Geography), และ (a1,a3) ตามลำดับ

ตัวอย่าง 6

ผลของความสัมพันธ์คืออะไรเมื่อ Projection P1,4 ส่งความสัมพันธ์ใน Table1

วิธีทำ

เมื่อ Projection P1,4 ส่งความสัมพันธ์ใน Table1 แสดงว่า คอลัมน์ที่2และ3ของ Table1จะถูกลบออกไป Student Name และ GPA จะถูกแสดงออกมา ดังในตาราง2 (Table 2)
 
Table 2
Student Name GPA
Ackermann 3.88
Adams 3.45
Chou 3.79
Goodfriend 3.45
Rao 3.90
Stevens 2.99

 
 
 
 
 

ตัวอย่างที่ 7

Table 3 จะเปลี่ยนไปอย่าไรเมื่อใช้ Projection P1,2 กระทำกับ Table 3

วิธีทำ

จะได้ความสัมพันธ์ที่แสดงดัง Table 4 สังเกตได้ว่าจะมีจำนวนแถวที่น้อยลง
 
Table 3
Student  Major Course
Glauser Biology BI 290
Glauser Biology MS 475
Glauser Biology PY 410 
Marcus Mathematics MS 511
Marcus Mathematics MS 603
Marcus Mathematics CS 322
Miller Computer Science MS 575
Miller Computer Science CS 455

 
 
Table 4
Student  Major
Glauser Biology
Marcus Mathematics
Miller Computer Science

Join operation ใช้สำหรับรวมตารางให้เป็นหนึ่งเดียว เมื่อตารางนั้นมีบางฟิลด์ที่เหมือนกันหรือใช้ร่วมกัน เช่น ตารางแรกมีฟิลด์สายการบิน เที่ยวบินเลขที่ และเส้นทางการบิน ส่วนอีกตารางมีฟิลด์เที่ยวบินเลขที่ เส้นทางการบิน และเวลาออกเดินทาง เมื่อรวมกันแล้วจะได้ตารางที่มีฟิลด์สายการบิน เที่ยวบินเลขที่ เส้นทางการบิน และเวลาออกเดินทาง

นิยาม 3

ให้ R เป็นความสัมพันธ์ของดีกรี m และ
S เป็นความสัมพันธ์ดีกรี n
Join Jp(R,S) เป็นความสัมพันธ์ของ m+n-p เมื่อ p น้อยกว่าหรือเท่ากับ m และ p น้อยกว่าหรือเท่ากับ n ซึ่งประกอบด้วย (m+n-p) tuples (a1,a2…,... ,am-p,c1,c2,...,cp,b1,b2,...,bn-p), และ m-tuple (a1,a2,...,am-p,c1,c2,...,cp) เป็นส่วนของ R และ n-tulpe (c1,c2,...,cp,b1,b2,..,bn-p) เป็นส่วนของ S

หรืออีกนัยหนึ่งคือ Join operation สร้างความสัมพันธ์ขึ้นมาใหม่จากสองความสัมพันธ์ โดยการรวม m-tuples ทั้งหมดความสัมพันธ์แรกเข้ากับ n-tuples ทั้งหมดของความสัมพันธ์ที่สอง เมื่อส่วนประกอบของ p สุดท้ายของ m-tuples เข้ากันได้กับส่วนประกอบของ p ตัวแรก n-tuples

ตัวอย่างที่ 8

ผลของความสัมพันธ์ที่จะเกิดขึ้นเมื่อใช้ Join operation J2 กับตารางแสดงความสัมพันธ์ Table 5 กับ Table 6

วิธีทำ ผลของ Join operation J2 แสดงได้ดัง Table 7
 
Table 5
Professor  Department Course Number
Cruz Zoology 335
Cruz Zoology 412
Farber Psychology 501
Farber Psychology 617
Grammer Physics 544
Grammer Physics 551
Rosen Computer Science 518
Rosen Mathematics 575
Table 6
Department Course Number Room Time
Computer Science 518 N521 2:00 P.M.
Mathematics 575 N502 3:00 P.M.
Mathematics 611 N521 4:00 P.M.
Physics 544 B505 4:00 P.M.
Psychology 501 A100 3:00 P.M.
Psychology 617 A110 11:00 A.M.
Zoology 335 A100 9:00 A.M.
Zoology 412 A100 8:00 A.M.
Table 7
Professor  Department Course Number Room Time
Cruz Zoology 335 A100 9:00 A.M.
Cruz Zoology 412 A100 8:00 A.M.
Farber Psychology 501 A100 3:00 P.M.
Farber Psychology 617 A110 11:00 A.M.
Grammer Physics 544 B505 4:00 P.M.
Rosen Computer Science 518 N521 2:00 P.M.
Rosen Mathematics 575 N502 3:00 P.M.