Laat je een idee zien welke IMHO ik denk dat het goed is om te gebruiken:maak eerst de categorietabel:
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;
dan kunt u uw producttabel behouden zoals het is:
CREATE TABLE Product (ProductID int, Description nvarchar(100));
Nu Meestal kunt u een product hebben dat tot verschillende categorieën behoort. Daarom is de juiste manier om dit te doen een m:n-relatie tussen Product en Categorie. en het kan worden gedaan door toe te voegen:
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;
en je kunt het thema behouden zoals het is.
je ziet die category
tabel kan de nestcategorieën afhandelen met behulp van category_father_id
externe sleutel op zichzelf.
Maar een opmerking om in gedachten te houden is, het gaat tenslotte altijd om uw domein/bedrijfslogica.