ความสัมพันธ์ n-ary และการประยุกต์ใช้
บทนำ ในระหว่างส่วนประกอบหรือจำนวนที่มีมากกว่า 2 กลุ่มมักจะมีความสัมพันธ์เกิดขึ้นเสมอ เช่น ชื่อนักศึกษาจะมีความสัมพันธ์เชื่อมโยงกันอยู่กับ คณะของนักศึกษา และเกรดเฉลี่ยของนักศึกษาผู้นั้น และในทำนองเดียวกัน สายการบินจะมีความสัมพันธ์เชื่อมโยงกันอยู่กับหมายเลขเที่ยวบิน สถานีต้นทาง สถานีปลายทาง เวลาออกเดินทาง และเวลาที่เที่ยวบินไปถึง
ตัวอย่างความสัมพันธ์ทางด้านคณิตศาสตร์ก็มี เช่น มีจำนวนเต็มอยู่ 3 จำนวน จำนวนแรกมากว่าจำนวนที่2 จำนวนที่2 มากกว่าจำนวนที่3
ตัวอย่างอื่นๆก็มี เช่น ความสัมพันธ์ระหว่างจุด 3 จุดบนเส้นตรงเดียวกัน โดยกำหนดให้จุดที่ 2 อยู่ระว่างจุดที่ 1 กับ 3
ในเนื้อหานี้จะกล่าวถึงเรื่องความสัมพันธ์ระหว่างส่วนประกอบหรือจำนวนที่มีมากกว่า 2 กลุ่ม ซึ่งเราเรียกความสัมพันธ์แบบนี้ว่า n-ary relations
ความสัมพันธ์นี้ใช้ในการนำเสนอข้อมูลในระบบฐานข้อมูลในคอมพิวเตอร์และช่วยให้เราสามารถสร้างQuery(คือตัวช่วยในการค้นหา)เพื่อใช้ในการค้นหาข้อมูลที่เราต้องการจากฐานข้อมูลได้ เช่น สายการบินไหนที่ลงจอดที่ OHare 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 |
|
Ackermann | 231455 | Computer Science |
|
Adams | 888323 | Physics |
|
Chou | 102147 | Computer Science |
|
Goodfriend | 453876 | Mathematics |
|
Rao | 678543 | Mathematics |
|
Stevens | 786576 | Phychology |
|
วิธีทำ
มีเพียงแค่ 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. |