সঠিক পার্থক্যের ব্যাখ্যা প্রদান করা উত্তরগুলি ঠিক থাকলেও আমি দেখতে চাই যে কীভাবে সম্পর্কযুক্ত বীজগণিত এসকিউএল রূপান্তরিত হয় এবং 3 টি ধারণার আসল মান কী।
আপনার প্রশ্নের মূল ধারণাটি হ'ল একটি যোগদানের ধারণা। একটি জয়েন বুঝতে আপনার একটি কার্টেসিয়ান পণ্য বুঝতে হবে (উদাহরণটি এসকিউএল উপর ভিত্তি করে যেখানে সমতুল্যকে ওনডেওয়াইন যখন পয়েন্ট আউট হিসাবে চিহ্নিত করা হয়);
এটি অনুশীলনে খুব কার্যকর নয়। এই উদাহরণ বিবেচনা করুন।
Product(PName, Price)
====================
Laptop, 1500
Car, 20000
Airplane, 3000000
Component(PName, CName, Cost)
=============================
Laptop, CPU, 500
Laptop, hdd, 300
Laptop, case, 700
Car, wheels, 1000
কার্টেসিয়ান পণ্য পণ্য x উপাদানগুলি হ'ল - বেলো বা স্কেল ফ্রিডল । আপনি দেখতে পাচ্ছেন যে 12 টি সারি রয়েছে = 3 x 4 স্পষ্টতই, "চাকা" সহ "ল্যাপটপ" এর মতো সারিগুলির কোনও অর্থ নেই, এই কারণেই অনুশীলনে কার্টেসিয়ান পণ্যটি খুব কমই ব্যবহৃত হয়।
| PNAME | PRICE | CNAME | COST |
| Laptop | 1500 | CPU | 500 |
| Laptop | 1500 | hdd | 300 |
| Laptop | 1500 | case | 700 |
| Laptop | 1500 | wheels | 1000 |
| Car | 20000 | CPU | 500 |
| Car | 20000 | hdd | 300 |
| Car | 20000 | case | 700 |
| Car | 20000 | wheels | 1000 |
| Airplane | 3000000 | CPU | 500 |
| Airplane | 3000000 | hdd | 300 |
| Airplane | 3000000 | case | 700 |
| Airplane | 3000000 | wheels | 1000 |
এই পণ্যগুলিতে আরও মান যুক্ত করতে এখানে যোগদান করুন। আমরা যা চাই তা হ'ল পণ্যটি এর সাথে যুক্ত উপাদানগুলির সাথে "যোগ" করা, কারণ প্রতিটি উপাদান একটি পণ্যের অন্তর্গত। এটি করার উপায় একটি যোগদানের সাথে:
নামটিতে পণ্য যোগদান করুন ON
সম্পর্কিত এসকিউএল কোয়েরিটি এর মতো হবে (আপনি এখানে সমস্ত উদাহরণ দিয়ে খেলতে পারেন )
SELECT *
FROM Product
JOIN Component
ON Product.Pname = Component.Pname
এবং ফলাফল:
| PNAME | PRICE | CNAME | COST |
| Laptop | 1500 | CPU | 500 |
| Laptop | 1500 | hdd | 300 |
| Laptop | 1500 | case | 700 |
| Car | 20000 | wheels | 1000 |
লক্ষ্য করুন যে ফলাফলটিতে কেবল 4 টি সারি রয়েছে, কারণ ল্যাপটপের 3 টি উপাদান রয়েছে, গাড়িতে 1 টি এবং বিমানটি কোনওটিই নেই। এটি অনেক বেশি দরকারী।
আপনার প্রশ্নগুলিতে ফিরে আসার জন্য, আপনি যে সকল জয়েন সম্পর্কে জিজ্ঞাসা করছেন সেগুলি হ'ল আমি উপস্থিত হওয়া জিনের বিভিন্নতা:
প্রাকৃতিক যোগদান = যোগ (অন ক্লজ) একই নাম দিয়ে সমস্ত কলামে তৈরি করা হয়; এটি ফলাফল থেকে সদৃশ কলামগুলি অপসারণ করে, অন্য সমস্ত যোগদানের বিপরীতে; বেশিরভাগ ডিবিএমএস (মাইক্রোসফ্টের এসকিউএল সার্ভার, ওরাকল এর মাইএসকিউএল ইত্যাদির মতো বিভিন্ন বিক্রেতাদের দ্বারা নির্মিত ডাটাবেস সিস্টেমগুলি) এটি সমর্থন করার পক্ষেও মাথা ঘামায় না, এটি কেবল খারাপ অভ্যাস (বা উদ্দেশ্যমূলকভাবে এটি প্রয়োগ না করার জন্য বেছে নেওয়া হয়েছে)। কল্পনা করুন যে কোনও বিকাশকারী এসে প্রোডাক্টের দ্বিতীয় কলামের নাম দাম থেকে দামে পরিবর্তন করে। তারপরে সমস্ত প্রাকৃতিক যোগসূত্রগুলি PName এবং Cost এ সম্পন্ন হবে যার ফলস্বরূপ 0 টি সারি মিলছে না।
থেটা জয়েন = এটি সকলেই ব্যবহার করে এমন সাধারণ যোগদান কারণ এটি আপনাকে শর্তটি নির্দিষ্ট করতে দেয় (এসকিউএল-এর অন ধারা)। আপনি পছন্দ মতো কোনও শর্তে যোগ দিতে পারেন, উদাহরণস্বরূপ এমন পণ্যগুলিতে যেখানে প্রথম দুটি অক্ষর অনুরূপ, বা এর দাম আলাদা। বাস্তবে, এটি খুব কমই ঘটে 95
ইকুই জয়েন্ট = অনুশীলনে ব্যবহৃত সবচেয়ে সাধারণ। উপরের উদাহরণটি একটি ইকুই জোড়। এই ধরনের যোগদানের জন্য ডেটাবেসগুলি অনুকূলিত হয়! ইকুই জোনের অপোসাইট হ'ল নন-ইকুই জয়েন্ট, যখন আপনি "=" ব্যতীত অন্য কোনও শর্তে যোগদান করেন join ডাটাবেসগুলি এর জন্য অনুকূলিত হয় না! উভয়ই জেনারেল থেটায় যোগদানের সাবসেট। প্রাকৃতিক যোগদানও একটি থেটা যোগ হয় তবে শর্তটি (থেইটা) অন্তর্নিহিত।
তথ্যের উত্স: বিশ্ববিদ্যালয় + সার্টিফাইড এসকিউএল সার্ভার বিকাশকারী সম্প্রতি স্ট্যানফোর্ডের এমওও "ডাটাবেসের পরিচিতি" সম্পন্ন করেছেন যাতে আমার বলতে সাহস হয় যে আমার কাছে রিলেশনাল বীজগণিত টাটকা আছে।