'পার্থক্য' অপারেশনটি কি কোয়েরি ভাষার সাথে ইতিমধ্যে 'যোগদান' অন্তর্ভুক্ত করে তা প্রকাশ করে?


19

সেট পার্থক্য অপারেটর (উদাহরণস্বরূপ, EXCEPTকিছু এসকিউএল রূপে) রিলেশনাল বীজগণিতের অনেকগুলি মৌলিক অপারেটরগুলির মধ্যে একটি। তবে কিছু ডাটাবেস রয়েছে যা সেট পার্থক্য অপারেটরকে সরাসরি সমর্থন করে না, তবে যা সমর্থন করে LEFT JOIN(এক ধরণের বহিরাগত যোগদান), এবং বাস্তবে একই প্রভাব অর্জনের জন্য সেট ডিফারেন্স অপারেশনের পরিবর্তে এটি ব্যবহার করা যেতে পারে।

LEFT JOINঅপারেটরটি রক্ষণাবেক্ষণ করা না থাকাকালীন , এর অর্থ কি কোনও ক্যোরির ভাষার অভিব্যক্তিপূর্ণ শক্তি সেট পার্থক্য অপারেটর ছাড়াই সমান ? এই সত্যটি কীভাবে প্রমাণিত হবে?


1
তাদের একই অভিব্যক্তিযুক্ত শক্তি প্রদর্শন করে দেখানো হচ্ছে যে পার্থক্য অপারেশনটি বাম জোড় অপারেশন (এবং সম্ভবত আরএতে অন্যান্য অপারেশন) দিয়ে নির্মিত যেতে পারে।
sxd

উত্তর:


14

আপেক্ষিক বীজগণিতের ক্ষেত্রে, আমরা প্রথমে বাম (বাহ্যিক) যোগদানের একটি অনানুষ্ঠানিক সংজ্ঞা প্রদান করব এবং এটি প্রমাণ করে এগিয়ে চলি যে এটির নামকরণ, নির্বাচন, যোগদান এবং প্রজেকশন পার্থক্য তৈরি করতে পারে, পাশাপাশি সেই পার্থক্য, নির্বাচন এবং ইউনিয়নটি নির্মাণের জন্য ব্যবহার করা যেতে পারে বাম (বাহ্যিক) যোগদান প্রকৃতপক্ষে, আমরা এটি বিপরীত ক্রমে শেষ করব: আমরা কীভাবে পার্থক্যগুলি ব্যবহার করে বাম সংযোজনগুলি বানাতে পারি তা দেখাব এবং তারপরে আমরা কীভাবে বাম সংযোজনগুলি ব্যবহার করে পার্থক্য তৈরি করব তা দেখাব।

যাক R এবং S স্কিমাটার আছে (R,T) এবং (T,S) যথাক্রমে, যেখানে R এবং S এক স্কিমা মধ্যে বৈশিষ্ট্যাবলী সেট কিন্তু অন্যান্য, আর T সাধারণ গুণাবলীর সেট।

যাক হতে স্কিমা জন্য নাল tuple এস ' । অর্থাৎ প্রতিটি অ্যাট্রিবিউট জন্য সব নাল মান নিয়ে গঠিত tuple হয় এস ' । এর পরে, আমরা নিম্নরূপ যোগদানের বাইরের বাম সংজ্ঞায়িত করুন: সমস্ত tuples সমীকরণ হল ( , T , গুলি ) স্কিমা একাত্মতার ( আর ' , টি , এস ' ) যেখানে ...w=(ϵ,ϵ,...,ϵ)SSR LEFT JOIN S(r,t,s)(R,T,S)

  1. একটি tuple হয় আর ;(r,t)R
  2. (ক) একটি tuple হয় এস অথবা (খ) গুলি = W ;(t,s)Ss=w
  3. যদি জন্য সেট করা হয় গুলি W , তারপর ( , T , W ) না সেট করা হয়।(r,t,s)sw(r,t,w)

উদাহরণ: এর স্কিমাটি হ'ল ( 1 , 2 , 3 ) , এস এর স্কিমাটি ( 2 , 3 , 4 ) , এবং আমাদের কাছে সেই আর = = ( 1 , 2 , 3 ) , ( 4 , 5 , 6 ) } এবং এস = { ( 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 , 2)S={(2,3,4),(2,3,6)}{(1,2,3,4),(1,2,3,6),(1,2,3,ϵ),(4,5,6,ϵ)} , যেহেতু আমাদের (উদাহরণস্বরূপ) ( 1 , 2 , 3 , 4 ) এবং এস = 4 ϵ = ডাব্লু । আমরা এইভাবে চাপে পড়ে গেলাম; { ( 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) এবং (2 এ) দ্বারা প্রয়োজনীয় সমস্ত কিছু দেয়। আমরা দাবি করি ((((PROJECT_T R) DIFFERENCE (PROJECT_T S)) EQUIJOIN R) JOIN w)যে আমাদের (r, t, w)(2 বি) এবং (3) দ্বারা প্রয়োজনীয় ফর্মের সমস্ত কিছু দেয় ।

এই, প্রথম যে বিজ্ঞপ্তি দেখার জন্য (((PROJECT_T R) DIFFERENCE (PROJECT_T S)) EQUIJOIN R)সমস্ত tuples সমীকরণ হল যার জন্য সেখানে কোন সংশ্লিষ্ট tuple হয় এস । দেখতে, এটা দয়া করে মনে রাখবেন সাধারণ জরিপ থেকে বের বৈশিষ্ট্যাবলী দ্বারা যথেষ্ট আর এবং এস (অনুষঙ্গ সেট টি ) এবং পার্থক্য গ্রহণ, এক সব এবং কেবলমাত্র সেই tuples সঙ্গে (স্কিমা সঙ্গে ছেড়ে দেওয়া হয় টি ) যা প্রতিনিধিত্ব করা হয় আর কিন্তু না S । দ্বারা সঙ্গে আর , আমরা সমস্ত এবং কেবলমাত্র সেই tuples পুনরুদ্ধার আর যা বৈশিষ্ট্যাবলী মান আছে টি যা উপস্থিত আর কিন্তু না এসRSRSTTRSEQUIJOINRRTRS; যথা, আমরা এখনও অবধি দাবি করা tuples সেট।

এর পরে, যে বিজ্ঞপ্তি স্কিমা (((PROJECT_T R) DIFFERENCE (PROJECT_T S))যে একই হয় (বলতে গেলে, ( আর ' , টি ) , যখন স্কিমা) W হয় এস ' । অপারেশন তাই কার্টিজিয়ান পণ্য, আমরা ফর্ম সব tuples পাবেন ( , T , W ) যেখানে নেই ( T , গুলি ) মধ্যে এস সংশ্লিষ্ট ( , T ) মধ্যে আরR(R,T)wSJOIN(r,t,w)(t,s)S(r,t)R

যে এই অবিকল tuples আমরা যোগ করতে প্রয়োজনীয় সেট দেখার জন্য R EQUIJOIN Sকনস্ট্রাক্ট করার জন্য R LEFT JOIN Sনিম্নলিখিত বিবেচনা করুন: নির্মাণ দ্বারা, (3) সন্তুষ্ট হয়, যেহেতু R EQUIJOIN Sথাকতে পারে না যদি থাকে ( , T , ডাব্লু ) (যদি এটি হয়, তবে দ্বিতীয় অংশের ( r , টি , ডাব্লু ) থাকা একটি বিপরীত হবে); যদি আমরা অন্য ( আর , টি , ডাব্লু ) যুক্ত না করে থাকি তবে সেখানে একটি ((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) মধ্যে এস সংশ্লিষ্ট ( , T ) মধ্যে আর , এবং সংজ্ঞা দ্বারা, ( , T , গুলি ) এছাড়াও হবে, (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)))))))

প্রমাণ: নোটিশ এখানে যে, এবং এস ' , খালি রয়েছে যেহেতু সব গুণাবলীর জন্য ভাগ করা হয় জানার জন্য। প্রথমত, আমরা একটি নতুন সম্পর্ক তৈরি এস এ অ্যাট্রিবিউট সেট অনুরূপ দ্বারা এস (দ্বারা পরিচালিত এবং ) যাতে এটি tuples নিয়ে গঠিত ( T , T ' ) অ্যাট্রিবিউট সেটে ( টি , টি ' ) যেখানে টন = T ' (দ্বারা পরিচালিত )। বাম জোড় আমাদের ফর্মের tuples ( t , t ) সঙ্গে ছেড়েRSDIFFERENCESSRENAMEJOIN(t,t)(T,T)t=tSELECT(t,t)যেখানে বা t = w । এখন, এন্ট্রি যা প্রদর্শিত না পরিত্রাণ পেতে এস , আমরা ফর্মের শুধুমাত্র tuples রাখা উচিত নয় ( T , W ) , যা দূরতম দ্বারা পরিচালিত হয় । গত অস্থায়ী অ্যাট্রিবিউট সেট পরিত্রাণ পায় টি ' মূল স্কিমা পরিপ্রেক্ষিতে এবং আমাদের পাতার পার্থক্য সঙ্গে।t=tt=wS(t,w)SELECTPROJECTT

উদাহরণ: আসুন এবং এস = { ( 3 , 4 ) , ( 5 , 6 ) , ( 7 , 8 ) } । আমরা প্রথমে ডি গুণাবলী টি : { ( 3 , 4 ) এর সাথে এস পাইR={(1,2),(3,4),(5,6)}S={(3,4),(5,6),(7,8)}SRENAMET । অপারেশন আমাদের সব নয়টি সম্ভব পেয়ারিং সঙ্গে কার্টিজিয়ান পণ্য দান করেন, বিন্যাসের কারণে এই সেটটি এখানে লেখা হয়নি। তারপর এই নিচে Pares { ( 3 , 4 , 3 , 4 ) , ( 5 , 6 , 5 , 6 ) , ( 7 , 8 , 7 , 8 ) } । সঙ্গে{(3,4),(5,6),(7,8)}JOINSELECT{(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)}


Please edit your post to use LaTeX syntax. Start by enclosing all your formula in $ symbols (for example, $(1,2)$ becomes (1,2)). Keywords like select should be put in ` (for instance, `SELECT` becomes SELECT).
Raphael

@Raphael Thanks for pointing out that I should be using LaTeX for this. I have made a good-faith attempt at LaTeX'ing the math and backtick'ing the code... please let me know if there's anything else I should do. Thanks again!
Patrick87

Great, thanks! You might want to consider $$...$$ to created indented (not inline) pieces of math. This can often improve readability if used correctly. MathJax also supports numbered equations but I am not sure how to do this.
Raphael

I think your logic is faulty here. You are using DIFFERENCE to define LEFT JOIN, and then you use LEFT JOIN to express DIFFERENCE, concluding that SQL can do without it. For this to be valid, you should express LEFT JOIN in terms of operators other than DIFFERENCE, and then prove that DIFFERENCE is equivalent to it.
Janoma

@Janoma I don't think that's required... we're trying to show that difference can be expressed in terms of left joins, so a functioning left join is assumed. Think about it: if what you're saying had merit, I could claim that LEFT JOIN is the "fundamental" or "necessary" operation, and demand that you define DIFFERENCE in terms of the other operators, but not LEFT JOIN. I have shown that each can simulate the other, so neither is more or less "fundamental" than the other... what makes DIFFERENCE special? In prop. logic, NOT and AND are complete, as are OR and NOT; you don't need all three.
Patrick87

-1

LEFT JOIN as implemented by SQL, does not produce relations as its result (because some attributes of the result will not have a value).

Ergo, LEFT JOIN as implemented by SQL, is not a direct counterpart of any relational algebra operator.

Ergo, The relational difference operator cannot be expressed in terms of LEFT JOIN (because LEFT JOIN cannot possibly be part of the relational algebra, this being because LEFT JOIN produces something that is not a relation, thus violating closure of the algebra).

Any set of primitive operators of a relational algebra that satisfies closure that I know of, always includes either relational difference or else relational semidifference.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.