Lassen Sie sich eine Idee zeigen, die meiner Meinung nach gut verwendet werden kann:Erstellen Sie zuerst die Kategorietabelle:
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;
dann können Sie Ihre Produkttabelle so belassen, wie sie ist:
CREATE TABLE Product (ProductID int, Description nvarchar(100));
Jetzt können Sie normalerweise ein Produkt haben, das zu mehreren Kategorien gehört. Daher ist der richtige Weg, dies zu tun, eine m:n-Beziehung zwischen Produkt und Kategorie zu haben. und dies kann durch Hinzufügen von:
erfolgencreate 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;
und Sie können das Thema beibehalten, wie es ist.
Sie werden diese category
sehen Die Tabelle kann die Verschachtelungskategorien mit category_father_id
handhaben Fremdschlüssel auf sich selbst.
Beachten Sie jedoch, dass es immer um Ihre Domänen-/Geschäftslogik geht.