✏️ Explanatory Question

নিচের স্কিমাগুলি বিবেচনা কর:


Supplier(sid, sname, address)

Parts(pid, pname, color)

Catalog(sid, pid, cost)
            

উপরের স্কিমা টি বিবেচনা করে নিচের প্রশ্নগুলির জন্য রিলেশনাল অ্যালজেবরা এবং তার সমতুল্য SQL কমান্ডগুলি লেখ।

  • রেড কালারের পার্টস যে সমস্ত সাপ্লায়ার সাপ্লাই করেছে তাদের নাম বের কর।
  • যে সমস্ত সাপ্লায়ার রেড অথবা গ্রীন কালারের পার্টস সাপ্লাই করেছে তাদের sid বের কর।

👁 11 Views
📘 Detailed Answer
🟢 Easy
💡

Answer with Explanation

Relational Algebra and SQL Commands

Exam-ready answer based on Supplier, Parts, and Catalog schema with relational algebra and equivalent SQL queries.

Question 14

প্রশ্ন

নিচের স্কিমাগুলি বিবেচনা কর:


Supplier(sid, sname, address)

Parts(pid, pname, color)

Catalog(sid, pid, cost)
            

উপরের স্কিমা টি বিবেচনা করে নিচের প্রশ্নগুলির জন্য রিলেশনাল অ্যালজেবরা এবং তার সমতুল্য SQL কমান্ডগুলি লেখ।

  • রেড কালারের পার্টস যে সমস্ত সাপ্লায়ার সাপ্লাই করেছে তাদের নাম বের কর।
  • যে সমস্ত সাপ্লায়ার রেড অথবা গ্রীন কালারের পার্টস সাপ্লাই করেছে তাদের sid বের কর।

Answer: Relational Algebra and Equivalent SQL

Schema Explanation

এখানে তিনটি relation দেওয়া আছে:

Relation Attributes Meaning
Supplier sid, sname, address Supplier-এর ID, নাম এবং address সংরক্ষণ করে।
Parts pid, pname, color Part-এর ID, নাম এবং color সংরক্ষণ করে।
Catalog sid, pid, cost কোন supplier কোন part supply করছে এবং তার cost সংরক্ষণ করে।

Important: Supplier এবং Parts relation সরাসরি connected নয়। এদের মধ্যে connection তৈরি হয়েছে Catalog relation-এর মাধ্যমে।

Relationship Between Tables


Supplier.sid  = Catalog.sid

Parts.pid     = Catalog.pid
            

অর্থাৎ কোনো supplier কোন part supply করছে তা জানতে হলে Supplier, Catalog এবং Parts — এই তিনটি relation join করতে হবে।

Sub-question 1

রেড কালারের পার্টস যে সমস্ত সাপ্লায়ার সাপ্লাই করেছে তাদের নাম বের কর।

Explanation

এখানে আমাদের সেই সমস্ত supplier-এর নাম বের করতে হবে যারা red color-এর parts supply করেছে।

তাই আমাদের করতে হবে:

  • Parts table থেকে red color-এর parts select করতে হবে।
  • তারপর Parts table-কে Catalog table-এর সঙ্গে pid দিয়ে join করতে হবে।
  • তারপর Catalog table-কে Supplier table-এর সঙ্গে sid দিয়ে join করতে হবে।
  • শেষে supplier-এর নাম অর্থাৎ sname project করতে হবে।

Relational Algebra


π sname (
    Supplier ⨝ Supplier.sid = Catalog.sid
    (
        Catalog ⨝ Catalog.pid = Parts.pid
        (σ color = 'red' (Parts))
    )
)
            

এখানে:

  • σ color = 'red' (Parts) red color-এর parts select করছে।
  • Catalog ⨝ Parts কোন supplier red part supply করেছে তা বের করছে।
  • Supplier ⨝ Catalog supplier-এর details আনছে।
  • π sname শুধুমাত্র supplier-এর নাম দেখাচ্ছে।

Equivalent SQL Command


SELECT DISTINCT S.sname
FROM Supplier AS S
JOIN Catalog AS C
ON S.sid = C.sid
JOIN Parts AS P
ON C.pid = P.pid
WHERE P.color = 'red';
            

এখানে DISTINCT ব্যবহার করা হয়েছে যাতে একই supplier একাধিক red part supply করলেও তার নাম একবারই দেখায়।

Expected Output Format

sname
Supplier Name 1
Supplier Name 2

Actual output database-এর data-এর উপর depend করবে।

Sub-question 2

যে সমস্ত সাপ্লায়ার রেড অথবা গ্রীন কালারের পার্টস সাপ্লাই করেছে তাদের sid বের কর।

Explanation

এখানে আমাদের সেই supplier ID বা sid বের করতে হবে যারা red অথবা green color-এর parts supply করেছে।

তাই Parts table থেকে red অথবা green color-এর parts select করে Catalog table-এর সঙ্গে join করতে হবে। তারপর Catalog relation থেকে supplier ID অর্থাৎ sid project করতে হবে।

Relational Algebra


π sid (
    Catalog ⨝ Catalog.pid = Parts.pid
    (σ color = 'red' OR color = 'green' (Parts))
)
            

এখানে:

  • σ color = 'red' OR color = 'green' (Parts) red অথবা green color-এর parts select করছে।
  • Catalog ⨝ Parts supplier এবং part-এর relationship বের করছে।
  • π sid supplier ID দেখাচ্ছে।

Alternative Relational Algebra Using Union

একই উত্তর Union operation ব্যবহার করেও লেখা যায়:


π sid (
    Catalog ⨝ Catalog.pid = Parts.pid
    (σ color = 'red' (Parts))
)
∪
π sid (
    Catalog ⨝ Catalog.pid = Parts.pid
    (σ color = 'green' (Parts))
)
            

এখানে প্রথম অংশ red parts-এর supplier sid বের করছে এবং দ্বিতীয় অংশ green parts-এর supplier sid বের করছে। এরপর union করে final result পাওয়া যাচ্ছে।

Equivalent SQL Command


SELECT DISTINCT C.sid
FROM Catalog AS C
JOIN Parts AS P
ON C.pid = P.pid
WHERE P.color = 'red'
   OR P.color = 'green';
            

একই query IN operator ব্যবহার করে আরও সহজভাবে লেখা যায়:


SELECT DISTINCT C.sid
FROM Catalog AS C
JOIN Parts AS P
ON C.pid = P.pid
WHERE P.color IN ('red', 'green');
            

এখানে IN ('red', 'green') condition দ্বারা red অথবা green color-এর parts select করা হয়েছে।

Expected Output Format

sid
Supplier ID 1
Supplier ID 2

Actual sid values database-এর data-এর উপর depend করবে।

DISTINCT কেন ব্যবহার করা হয়েছে?

যদি কোনো supplier একাধিক red বা green part supply করে, তাহলে join করার ফলে একই supplier-এর sid বা sname result-এ একাধিকবার আসতে পারে।

এই duplicate records remove করার জন্য SQL query-তে DISTINCT ব্যবহার করা হয়েছে।

Exam Point: Relational Algebra set-based হওয়ায় duplicate automatically remove হয়, কিন্তু SQL-এ duplicate remove করতে DISTINCT ব্যবহার করা ভালো।

Final Answer Summary

Question Relational Algebra SQL Command
Red parts supply করা suppliers-এর name π sname (Supplier ⨝ Catalog ⨝ σ color='red'(Parts)) JOIN Supplier, Catalog, Parts WHERE color='red'
Red অথবা Green parts supply করা suppliers-এর sid π sid (Catalog ⨝ σ color='red' OR color='green'(Parts)) JOIN Catalog, Parts WHERE color IN ('red','green')

Exam Writing Tips

  • প্রথমে schema পরিষ্কারভাবে লিখবে।
  • Supplier এবং Parts directly connected নয় — Catalog-এর মাধ্যমে connected — এই point বুঝে query লিখবে।
  • Relational Algebra-তে selection আগে করলে answer বেশি clean হয়।
  • Projection শেষে লিখবে, কারণ final output-এ কী চাই তা শেষে নির্ধারণ করা হয়।
  • SQL-এ proper JOIN condition অবশ্যই লিখবে।
  • Duplicate avoid করার জন্য SQL-এ DISTINCT ব্যবহার করবে।

উপসংহার

সুতরাং, Supplier, Parts এবং Catalog schema-তে supplier এবং parts-এর মধ্যে relationship Catalog relation-এর মাধ্যমে তৈরি হয়েছে। তাই red বা green color-এর parts supply করা supplier খুঁজতে হলে Parts relation থেকে color condition apply করে Catalog এবং Supplier relation-এর সঙ্গে join করতে হয়।

Relational Algebra query database operation-এর mathematical representation দেয় এবং SQL command একই কাজ practical database system-এ execute করার জন্য ব্যবহার করা হয়।

Quick Revision Points

  • Supplier table supplier details store করে।
  • Parts table part details store করে।
  • Catalog table supplier এবং parts-এর relationship store করে।
  • Red part suppliers-এর name পেতে Supplier, Catalog এবং Parts join করতে হবে।
  • Red বা Green part suppliers-এর sid পেতে Catalog এবং Parts join করলেই যথেষ্ট।
  • SQL query-তে duplicate avoid করতে DISTINCT ব্যবহার করা হয়।