Låt visa dig en idé vilken IMHO jag tycker det är bra att använda:skapa först kategoritabellen:
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;
sedan för din produkttabell kan du behålla den som den är:
CREATE TABLE Product (ProductID int, Description nvarchar(100));
Nu Vanligtvis kan du ha en produkt som tillhör flera kategorier. Därför är det korrekta sättet att göra det att ha en m:n relation mellan Produkt och Kategori. och det kan göras genom att lägga till:
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;
och du kan behålla temat som det är.
du kommer att se den category
tabellen kan hantera kapslingskategorierna med category_father_id
främmande nyckel på sig själv.
Men en anmärkning att komma ihåg är att det trots allt alltid handlar om din domän/affärslogik.