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
);
নোট: এটি স্ট্রিক্ট ইনহেরিটেন্স নয়, কিন্তু রিলেশনাল মডেলে সমান উদ্দেশ্য পূরণ করে।