কম্পিউটার টিউটোরিয়াল

MySQL-এ টেবিল ইনহেরিটেন্স নেই - ফরেন কি দিয়ে অর্জন করুন

MySQL টেবিল ইনহেরিটেন্স (Table Inheritance) সমর্থন করে না। তবে ফরেন কি কনস্ট্রেইন্ট দিয়ে প্যারেন্ট-চাইল্ড রিলেশনশিপ বাস্তবায়ন করা যায়।

প্যারেন্ট-চাইল্ড টেবিল উদাহরণ

১. প্যারেন্ট টেবিল

CREATE TABLE Parent_Table (
    ParentId INT,
    PRIMARY KEY (ParentId)
);

২. চাইল্ড টেবিল (রেফারেন্সসহ)

CREATE TABLE Child_Table (
    ChildId INT,
    PRIMARY KEY (ChildId)
);

৩. ফরেন কি যোগ করুন

ALTER TABLE Child_Table
ADD CONSTRAINT FK_Child
FOREIGN KEY (ChildId) REFERENCES Parent_Table(ParentId);

ফলাফল

  • Child_Table-এ শুধু সেই ChildId ইনসার্ট হব যেটি Parent_Table-এ আছে
  • প্যারেন্ট রো ডিলিট করলে চাইল্ড রোও ডিলিট হবে (CASCADE দিলে)

ক্যাসকেড অপশন

ALTER TABLE Child_Table
ADD CONSTRAINT FK_Child
FOREIGN KEY (ChildId) REFERENCES Parent_Table(ParentId)
ON DELETE CASCADE
ON UPDATE CASCADE;

ইনহেরিটেন্স সিমুলেশন প্যাটার্ন

-- বেস টেবিল
CREATE TABLE Vehicle (
    VehicleId INT PRIMARY KEY AUTO_INCREMENT,
    Brand VARCHAR(50),
    Year INT
);

-- চাইল্ড টেবিল (এক্সটেন্ডস)
CREATE TABLE Car (
    VehicleId INT PRIMARY KEY,
    Doors INT,
    FuelType VARCHAR(20),
    FOREIGN KEY (VehicleId) REFERENCES Vehicle(VehicleId) ON DELETE CASCADE
);

CREATE TABLE Motorcycle (
    VehicleId INT PRIMARY KEY,
    EngineCC INT,
    FOREIGN KEY (VehicleId) REFERENCES Vehicle(VehicleId) ON DELETE CASCADE
);

নোট: এটি স্ট্রিক্ট ইনহেরিটেন্স নয়, কিন্তু রিলেশনাল মডেলে সমান উদ্দেশ্য পূরণ করে।

  1. MySQL-এ /* ... */ মন্তব্য (Comment) সিনট্যাক্স

  2. MySQL-এ CREATE TABLE সময়েই ইন্ডেক্স তৈরি করা

  3. MySQL-এ DROP TABLE বনাম TRUNCATE TABLE: পার্থক্য কী?

  4. পাইথন মাল্টিপল ইনহেরিটেন্স সমর্থন করে কি?