ในพีชคณิตเชิงสัมพันธ์อันดับแรกเราจะต้องให้คำจำกัดความอย่างไม่เป็นทางการของการเข้าร่วมด้านนอก (ด้านนอก) และดำเนินการต่อเพื่อพิสูจน์ว่าการเปลี่ยนชื่อการเลือกการเข้าร่วมและการฉายภาพสามารถสร้างความแตกต่างได้ เข้าร่วมด้านซ้าย (ด้านนอก) ที่จริงแล้วเราจะทำตามลำดับย้อนกลับ: เราจะแสดงวิธีสร้างการรวมซ้ายโดยใช้ความแตกต่างจากนั้นเราจะแสดงวิธีการสร้างความแตกต่างโดยใช้การรวมซ้าย
ให้และมี schemataและตามลำดับโดยที่และเป็นชุดของคุณลักษณะในหนึ่ง schema แต่ไม่ใช่ที่อื่นและคือชุดของคุณลักษณะทั่วไปRS(R′,T)(T,S′)R′S′T
Letเป็น tuple ว่างสำหรับสคีS'นั่นคือมันเป็น tuple ประกอบด้วยค่า null ทั้งหมดสำหรับแอตทริบิวต์ของแต่ละS'จากนั้นเราจะนิยามการรวมภายนอกด้านซ้ายดังนี้: คือชุดของ tuples ทั้งหมดที่เป็นของ schemaโดยที่ ...w=(ϵ,ϵ,...,ϵ)S′S′R LEFT JOIN S
(r,t,s)(R′,T,S′)
- (r,t) เป็น tuple ใน ;R
- (a)คือ tuple ของหรือ (b)(t,s)Ss=w ;
- หากอยู่ในชุดสำหรับs ≠ wแล้ว( r , t , w )ไม่ได้อยู่ในชุด(r,t,s)s≠w(r,t,w)
ตัวอย่าง: 's คีมาคือ( 1 , 2 , 3 ) , S ' คีมาคือ( 2 , 3 , 4 )และเรามีที่R = { ( 1 , 2 , 3 ) , ( 4 , 5 , 6 ) }และS = { ( 2 , 3 , 4 )R(A1,A2,A3)S(A2,A3,A4)R={(1,2,3),(4,5,6)} } โดย (1) และ (2) เราได้ผลลัพธ์ระดับกลาง { ( 1 , 2 , 3 , 4 ) , ( 1 , 2 , 3 , 6 ) , ( 1 , 2 , 3 , ϵ ) , ( 4 , 5 , 6 , ε ) } ภายใน (3) เราจะต้องลบ ( 1 , 2S={(2,3,4),(2,3,6)}{(1,2,3,4),(1,2,3,6),(1,2,3,ϵ),(4,5,6,ϵ)}เนื่องจากเรามี (ตัวอย่างเช่น) ( 1 , 2 , 3 , 4 )และ s = 4 ≠ ε = W เราจะเหลือจึงมี { ( 1 , 2 , 3 , 4 ) , ( 1 , 2 , 3 , 6 ) , ( 4 , 5 , 6 , ε ) }(1,2,3,ϵ)(1,2,3,4)s=4≠ϵ=w{(1,2,3,4),(1,2,3,6),(4,5,6,ϵ)}ผลลัพธ์ที่คาดไว้สำหรับการเข้าร่วมด้านซ้าย
ทฤษฎีบท: เทียบเท่ากับR LEFT JOIN S
(R EQUIJOIN S) UNION ((((PROJECT_T R) DIFFERENCE (PROJECT_T S)) EQUIJOIN R) JOIN w)
หลักฐาน: (R EQUIJOIN S)
ให้ทุกสิ่งที่เราต้องการโดย (1) และ (2a) เราอ้างว่า((((PROJECT_T R) DIFFERENCE (PROJECT_T S)) EQUIJOIN R) JOIN w)
ให้ทุกสิ่งในแบบฟอร์มที่(r, t, w)
กำหนดโดย (2b) และ (3)
หากต้องการดูนี้แจ้งให้ทราบล่วงหน้าแรกที่(((PROJECT_T R) DIFFERENCE (PROJECT_T S)) EQUIJOIN R)
เป็นชุดของ tuples ทั้งหมดในซึ่งไม่มี tuple ที่สอดคล้องกันในS เพื่อดูว่ามันพอเพียงที่จะทราบว่าโดยการฉายคุณลักษณะทั่วไปออกจากRและS (ชุดคุณลักษณะT ) และรับความแตกต่างหนึ่งที่เหลืออยู่ทั้งหมดและเพียงสิ่งอันดับ (กับสคีมาT ) ซึ่งจะแสดงในRแต่ ไม่ใช่เอส โดยด้วยRเราจะกู้คืน tuples ทั้งหมดในRที่มีค่าสำหรับคุณลักษณะในTซึ่งมีอยู่ในRแต่ไม่ใช่ในSRSRSTTRSEQUIJOIN
RRTRS; คือชุดของ tuples ที่เราได้อ้างไว้อย่างแม่นยำ
ถัดไปแจ้งให้ทราบว่าสคีของ(((PROJECT_T R) DIFFERENCE (PROJECT_T S))
เป็นเช่นเดียวกับที่ (กล่าวคือ( R ' , T ) ) ในขณะที่คีมาของWคือS ' การดำเนินงานจึงเป็นผลิตภัณฑ์ Cartesian เราที่เราได้รับ tuples ทุกรูปแบบ( R , T , W )ที่ไม่มี( T , s )ในSสอดคล้องกับ( R , T )ในRR(R′,T)wS′JOIN
(r,t,w)(t,s)S(r,t)R
หากต้องการดูว่านี่เป็นชุดของสิ่งอันดับที่เราต้องการเพิ่มR EQUIJOIN S
ในการสร้างR LEFT JOIN S
ให้พิจารณาต่อไปนี้: จากการสร้าง (3) เป็นที่พอใจเนื่องจากR EQUIJOIN S
ไม่สามารถมีหากมี( r , t , w ) (ถ้าเป็นเช่นนั้นส่วนที่สองที่มี( r , t , w )จะขัดแย้งกัน); ถ้าเราจะเพิ่มอีก( r , t , w )ไม่ได้อยู่ในนั้นก็จะมี((r,t,s)((((PROJECT_T R) DIFFERENCE (PROJECT_T S)) EQUIJOIN R) JOIN w)
(r,t,w)(r,t,w)(r,t,w)((((PROJECT_T R) DIFFERENCE (PROJECT_T S)) EQUIJOIN R) JOIN w)
ใน S ที่สอดคล้องกับ ( r , t )ใน R , และตามคำนิยามของ, ( r , t , s )ก็จะอยู่ใน, ความขัดแย้งของ (3) นี่เป็นการพิสูจน์ที่สมบูรณ์(t,s)S(r,t)REQUIJOIN
(r,t,s)R LEFT JOIN S
ตอนนี้เราแสดงให้เห็นว่าการเข้าร่วมด้านซ้ายสามารถใช้เพื่อสร้างความแตกต่าง:
ทฤษฎีบท: R DIFFERENCE S
เทียบเท่าPROJECT_T(SELECT_{t'=w}(R LEFT JOIN (SELECT_{s=s'}(((S JOIN RENAME_{T->T'}(S)))))))
พิสูจน์: ขอให้สังเกตว่าที่นี่และS 'ที่ว่างเปล่าเนื่องจากคุณลักษณะทั้งหมดที่ใช้ร่วมกันสำหรับการที่จะทำให้ความรู้สึก อันดับแรกเราสร้างความสัมพันธ์ใหม่จากSโดยทำซ้ำชุดแอตทริบิวต์ในS (จัดการโดยและ) เพื่อให้ประกอบด้วย tuples ( t , t ′ )ในชุดแอตทริบิวต์( T , T ′ )โดยที่t = t ′ (จัดการโดย) การเข้าร่วมทางซ้ายทำให้เรามีสิ่งอันดับ( t , t ′ )R′S′DIFFERENCE
SSRENAME
JOIN
(t,t′)(T,T′)t=t′SELECT
(t,t′)ที่หรือT ' = W ตอนนี้ที่จะได้รับการกำจัดของรายการซึ่งไม่ปรากฏในSเราจะต้องเก็บเฉพาะ tuples ของฟอร์ม( T , W )ซึ่งจะถูกจัดการโดยนอกสุด สุดท้ายได้รับการกำจัดของชุดคุณลักษณะชั่วคราวT ′และทำให้เรามีความแตกต่างในแง่ของสคีมาเดิมt=t′t′=wS(t,w)SELECT
PROJECT
T′
ตัวอย่าง: Let และS = { ( 3 , 4 ) , ( 5 , 6 ) , ( 7 , 8 ) } ก่อนอื่นเราจะได้Sกับชุดของคุณสมบัติ d T ′ : { ( 3 , 4 )R={(1,2),(3,4),(5,6)}S={(3,4),(5,6),(7,8)}SRENAME
T′ } การดำเนินการให้ผลิตภัณฑ์คาร์ทีเซียนกับการจับคู่ที่เป็นไปได้ทั้งหมดเก้ารายการ ชุดนี้ไม่ได้เขียนไว้ที่นี่เพื่อเหตุผลในการจัดรูปแบบ แล้ว pares ลงนี้เพื่อ { ( 3 , 4 , 3 , 4 ) , ( 5 , 6 , 5 , 6 ) , ( 7 , 8 , 7 , 8 ) } การด้วย{(3,4),(5,6),(7,8)}JOIN
SELECT
{(3,4,3,4),(5,6,5,6),(7,8,7,8)}LEFT JOIN
ให้ { ( 1 , 2 , ε , ε ) , ( 3 , 4 , 3 , 4 ) , ( 5 , 6 , 5 , 6 ) } ให้ { ( 1 , 2 , ε , ε ) } ให้ { ( 1 , 2 ) }คำตอบที่ต้องการR{(1,2,ϵ,ϵ),(3,4,3,4),(5,6,5,6)}SELECT
{(1,2,ϵ,ϵ)}PROJECT
{(1,2)}