Mari tunjukkan ide IMHO yang menurut saya bagus untuk digunakan:pertama buat tabel kategori:
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;
kemudian untuk tabel produk Anda, Anda dapat menyimpannya apa adanya:
CREATE TABLE Product (ProductID int, Description nvarchar(100));
Sekarang Biasanya Anda dapat memiliki Produk yang termasuk dalam beberapa kategori. Oleh karena itu, cara yang benar untuk melakukannya adalah memiliki hubungan m:n antara Produk dan Kategori. dan dapat dilakukan dengan menambahkan:
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;
dan Anda dapat mempertahankan tema apa adanya.
Anda akan melihat category
tabel dapat menangani kategori bersarang menggunakan category_father_id
kunci asing di dalamnya sendiri.
Namun catatan yang perlu diingat adalah, bagaimanapun, ini selalu tentang domain/logika bisnis Anda.