आइए आपको एक विचार दिखाते हैं कि कौन सा IMHO मुझे लगता है कि इसका उपयोग करना अच्छा है:पहले श्रेणी तालिका बनाएं:
CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`category_father_id` int(11) DEFAULT '0',
`is_active` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `category_father_id` (`category_father_id`),
CONSTRAINT `constraint_name` FOREIGN KEY (`category_father_id`) REFERENCES `category` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
फिर अपनी उत्पाद तालिका के लिए आप इसे वैसे ही रख सकते हैं:
CREATE TABLE Product (ProductID int, Description nvarchar(100));
अब आम तौर पर आपके पास एक उत्पाद हो सकता है जो कई श्रेणियों से संबंधित होता है। इसलिए, इसे करने का सही तरीका उत्पाद और श्रेणी के बीच m:n संबंध होना है। और इसे जोड़कर किया जा सकता है:
create table product_category(
ProductId int(11) not null,
CategoryId int(11) not null,
unique (ProductId,CategoryId),
foreign key (ProductId) references Product (ProductID) on update cascade on delete cascade,
foreign key (CategoryId) references category (id) on update cascade on delete cascade
)engine=innodb;
और आप थीम को जस का तस रख सकते हैं।
आप देखेंगे कि category
तालिका category_father_id
. का उपयोग करके नेस्टिंग श्रेणियों को संभाल सकती है इस पर विदेशी कुंजी स्वयं।
लेकिन ध्यान रखने योग्य बात यह है कि आखिरकार, यह हमेशा आपके डोमेन/व्यावसायिक तर्क के बारे में होता है।