✏️ Explanatory Question

ON DELETE SET NULL ও ON DELETE CASCADE-এর পার্থক্য

👁 3 Views
📘 Detailed Answer
🟢 Easy
💡

Answer with Explanation

প্রশ্ন ২১: ON DELETE SET NULL ও ON DELETE CASCADE-এর পার্থক্য

Foreign Key-এর সাথে ব্যবহৃত দুটি গুরুত্বপূর্ণ referential action।

ON DELETE SET NULL

Parent টেবিলের row delete হলে child টেবিলের সংশ্লিষ্ট foreign key column-এর মান NULL হয়ে যায়।

ON DELETE CASCADE

Parent টেবিলের row delete হলে child টেবিলের সংশ্লিষ্ট সব row স্বয়ংক্রিয়ভাবে delete হয়ে যায়।

পার্থক্য

বৈশিষ্ট্যON DELETE SET NULLON DELETE CASCADE
প্রভাবChild row-এর FK NULL হয়Child row delete হয়
ডেটা সংরক্ষণChild data থাকেChild data হারিয়ে যায়
Foreign Key requirementFK column NULL allow করতে হবেNULL আবশ্যক নয়
ব্যবহারHistory/record রাখতে চাইলেসম্পূর্ণ মুছে ফেলতে চাইলে

উদাহরণ

-- ON DELETE SET NULL
CREATE TABLE Employee (
    emp_id INT PRIMARY KEY,
    emp_name VARCHAR(50),
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES Department(dept_id)
    ON DELETE SET NULL
);

-- ON DELETE CASCADE
CREATE TABLE Enrollment (
    enroll_id INT PRIMARY KEY,
    student_id INT,
    course_name VARCHAR(50),
    FOREIGN KEY (student_id) REFERENCES Student(student_id)
    ON DELETE CASCADE
);

ব্যাখ্যা

  • SET NULL: Department delete করলে Employee থাকবে, কিন্তু তার dept_id হবে NULL।
  • CASCADE: Student delete করলে তার সব Enrollment-ও মুছে যাবে।
Tip: Sensitive history data রাখতে SET NULL, আর dependent data পুরো মুছতে CASCADE ব্যবহার করো।