DBMS Joins: Inner, THETA, Outer, Equi Types ของการเข้าร่วม Operations
เข้าร่วมใน DBMS คืออะไร?
เข้าร่วมใน DBMS เป็นการดำเนินการแบบไบนารีซึ่งช่วยให้คุณสามารถรวมการรวมผลิตภัณฑ์และการเลือกไว้ในคำสั่งเดียว เป้าหมายของการสร้างเงื่อนไขการรวมคือช่วยให้คุณสามารถรวมข้อมูลจากตาราง DBMS สองตารางขึ้นไป ตารางใน DBMS เชื่อมโยงกันโดยใช้คีย์หลักและคีย์ภายนอก
ประเภทของการเข้าร่วม
การรวมใน DBMS มีสองประเภทหลัก:
- รวมภายใน: Theta, Natural, EQUI
- เข้าร่วมด้านนอก: ซ้าย, ขวา, เต็ม
เรามาดูรายละเอียดกันดีกว่า:
การเข้าร่วมภายใน
การเข้าร่วมภายใน ใช้เพื่อส่งคืนแถวจากทั้งสองตารางที่ตรงตามเงื่อนไขที่กำหนด ถือเป็นการดำเนินการ join ที่ใช้กันอย่างแพร่หลายที่สุดและสามารถถือเป็นประเภท join เริ่มต้นได้
Inner join หรือ equijoin คือ join ที่อิงตามตัวเปรียบเทียบซึ่งใช้การเปรียบเทียบความเท่าเทียมในเพรดิเคต join อย่างไรก็ตาม หากคุณใช้ตัวดำเนินการเปรียบเทียบอื่นๆ เช่น ">" จะไม่สามารถเรียกว่า equijoin ได้
Inner Join แบ่งออกเป็นสามประเภทย่อยเพิ่มเติม:
- ธีต้าเข้าร่วม
- เข้าร่วมอย่างเป็นธรรมชาติ
- EQUI เข้าร่วม
ธีต้าเข้าร่วม
ธีต้าเข้าร่วม ช่วยให้คุณสามารถรวมตารางสองตารางเข้าด้วยกันตามเงื่อนไขที่แสดงโดย theta Theta จะรวมงานสำหรับตัวดำเนินการเปรียบเทียบทั้งหมด ซึ่งแสดงด้วยสัญลักษณ์ θกรณีทั่วไปของการดำเนินการ JOIN เรียกว่าการเข้าร่วม Theta
ไวยากรณ์:
A ⋈θ B
Theta join สามารถใช้เงื่อนไขใดก็ได้ในเกณฑ์การคัดเลือก
พิจารณาตารางต่อไปนี้
ตาราง A | ตาราง B | |||
---|---|---|---|---|
คอลัมน์ 1 | คอลัมน์ 2 | คอลัมน์ 1 | คอลัมน์ 2 | |
1 | 1 | 1 | 1 | |
1 | 2 | 1 | 3 |
ตัวอย่างเช่น:
A ⋈ A.column 2 > B.column 2 (B)
A ⋈ A.คอลัมน์ 2 > B.คอลัมน์ 2 (B) | |
---|---|
คอลัมน์ 1 | คอลัมน์ 2 |
1 | 2 |
EQUI เข้าร่วม
EQUI เข้าร่วม จะทำเมื่อการเข้าร่วม Theta ใช้เงื่อนไขความเท่าเทียมกันเท่านั้น การเข้าร่วม EQUI เป็นการดำเนินการที่ยากที่สุดในการนำไปใช้ให้มีประสิทธิภาพ อาร์ดีบีเอ็มเอสและเหตุผลหนึ่งที่ทำให้ RDBMS มีปัญหาด้านประสิทธิภาพที่สำคัญ
ตัวอย่างเช่น:
A ⋈ A.column 2 = B.column 2 (B)
A ⋈ A.คอลัมน์ 2 = B.คอลัมน์ 2 (B) | |
---|---|
คอลัมน์ 1 | คอลัมน์ 2 |
1 | 1 |
การรวมแบบธรรมชาติ (⋈)
เข้าร่วมตามธรรมชาติ ไม่ใช้ตัวดำเนินการเปรียบเทียบใดๆ ในการเข้าร่วมประเภทนี้ แอตทริบิวต์ควรมีชื่อและโดเมนเดียวกัน ในการเข้าร่วมแบบธรรมชาติ ควรมีแอตทริบิวต์ทั่วไปอย่างน้อยหนึ่งรายการระหว่างความสัมพันธ์สองรายการ
จะทำการเลือกโดยสร้างความเท่าเทียมกันให้กับคุณลักษณะเหล่านั้นซึ่งปรากฏในความสัมพันธ์ทั้งสองและกำจัดคุณลักษณะที่ซ้ำกัน
ตัวอย่าง:
พิจารณาตารางสองตารางต่อไปนี้
C | |
---|---|
หนุ่ม | สี่เหลี่ยมด้านเท่า |
2 | 4 |
3 | 9 |
D | |
---|---|
หนุ่ม | ลูกบาศก์ |
2 | 8 |
3 | 18 |
C ⋈ D
ค ⋈ ดี | ||
---|---|---|
หนุ่ม | สี่เหลี่ยมด้านเท่า | ลูกบาศก์ |
2 | 4 | 8 |
3 | 9 | 18 |
การเข้าร่วมภายนอก
An การเข้าร่วมภายนอก ไม่ต้องการให้แต่ละระเบียนในตารางรวมทั้งสองมีระเบียนที่ตรงกัน ในการเข้าร่วมชนิดนี้ ตารางจะเก็บแต่ละเรกคอร์ดไว้ แม้ว่าจะไม่มีเรกคอร์ดอื่นที่ตรงกันก็ตาม
การรวมภายนอกสามประเภทคือ:
- เข้าร่วมด้านนอกซ้าย
- เข้าร่วมด้านนอกขวา
- เข้าร่วมภายนอกเต็มรูปแบบ
เข้าร่วมด้านนอกซ้าย (A ⟕ B)
เข้าร่วมด้านนอกซ้าย ส่งคืนแถวทั้งหมดจากตารางทางด้านซ้าย แม้ว่าจะไม่พบแถวที่ตรงกันในตารางทางด้านขวาก็ตาม เมื่อไม่พบบันทึกที่ตรงกันในตารางทางด้านขวา ระบบจะส่งคืน NULL
พิจารณาตาราง 2 ตารางต่อไปนี้
A | |
---|---|
หนุ่ม | สี่เหลี่ยมด้านเท่า |
2 | 4 |
3 | 9 |
4 | 16 |
B | |
---|---|
หนุ่ม | ลูกบาศก์ |
2 | 8 |
3 | 18 |
5 | 75 |
A B
ก ⋈ บี | ||
---|---|---|
หนุ่ม | สี่เหลี่ยมด้านเท่า | ลูกบาศก์ |
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | - |
เข้าร่วมด้านนอกขวา ( A ⟖ B )
เข้าร่วมด้านนอกขวา ส่งคืนคอลัมน์ทั้งหมดจากตารางทางด้านขวา แม้ว่าจะไม่พบแถวที่ตรงกันในตารางทางด้านซ้ายก็ตาม หากไม่พบรายการที่ตรงกันในตารางทางด้านซ้าย ระบบจะส่งคืนค่า NULL RIGHT ภายนอก JOIN ตรงกันข้ามกับ LEFT JOIN
ในตัวอย่างของเรา สมมติว่าคุณต้องทราบชื่อสมาชิกและภาพยนตร์ที่พวกเขาเช่า ตอนนี้มีสมาชิกใหม่ที่ยังไม่ได้เช่าหนังเรื่องไหนเลย
A B
ก ⋈ บี | ||
---|---|---|
หนุ่ม | ลูกบาศก์ | สี่เหลี่ยมด้านเท่า |
2 | 8 | 4 |
3 | 18 | 9 |
5 | 75 | - |
เข้าร่วมด้านนอกแบบเต็ม ( A ⟗ B)
ใน เข้าร่วมภายนอกเต็มรูปแบบ สิ่งอันดับทั้งหมดจากความสัมพันธ์ทั้งสองจะรวมอยู่ในผลลัพธ์ โดยไม่คำนึงถึงเงื่อนไขการจับคู่
ตัวอย่าง:
A B
ก ⋈ บี | ||
---|---|---|
หนุ่ม | สี่เหลี่ยมด้านเท่า | ลูกบาศก์ |
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | - |
5 | - | 75 |
สรุป
- การรวมส่วนใหญ่มีสองประเภท DBMS 1) การรวมภายใน 2) การรวมภายนอก
- การเข้าร่วมแบบภายในเป็นการดำเนินการเข้าร่วมที่ใช้กันอย่างแพร่หลายและสามารถถือเป็นประเภทการเข้าร่วมแบบเริ่มต้นได้
- Inner Join แบ่งออกเป็นสามประเภทย่อยเพิ่มเติม: 1) Theta join 2) Natural join 3) EQUI join
- Theta Join ช่วยให้คุณสามารถรวมสองตารางตามเงื่อนไขที่แสดงโดยทีต้า
- เมื่อการรวมทีต้าใช้เพียงเงื่อนไขที่เท่ากัน มันจะกลายเป็นการรวมที่เท่ากัน
- การเข้าร่วมแบบธรรมชาติจะไม่ใช้ตัวดำเนินการเปรียบเทียบใดๆ
- การรวมภายนอกไม่ต้องการแต่ละระเบียนในตารางการรวมทั้งสองเพื่อให้มีระเบียนที่ตรงกัน
- Outer Join แบ่งออกเป็น 1 ประเภทย่อยเพิ่มเติมคือ 2) Left Outer Join 3) Right Outer Join XNUMX) Full Outer Join
- LEFT Outer Join ส่งคืนแถวทั้งหมดจากตารางทางด้านซ้าย แม้ว่าจะไม่พบแถวที่ตรงกันในตารางทางด้านขวาก็ตาม
- RIGHT Outer Join ส่งคืนคอลัมน์ทั้งหมดจากตารางทางด้านขวา แม้ว่าจะไม่พบแถวที่ตรงกันในตารางทางด้านซ้ายก็ตาม
- ในการรวมภายนอกแบบเต็ม สิ่งอันดับทั้งหมดจากความสัมพันธ์ทั้งสองจะรวมอยู่ในผลลัพธ์ โดยไม่คำนึงถึงเงื่อนไขการจับคู่