Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Desain Basis Data , Item dalam Kategori, Sub Kategori &Tema

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan data UTF8mb4 dengan mysqldump?

  2. Hitung lembur per hari

  3. Mengembalikan kueri dalam format baris yang bijaksana alih-alih kolom

  4. Kata kunci yang dicadangkan SQL menyebabkan kesalahan saat mengimpor data dari file teks

  5. Membandingkan Oracle MySQL, Percona Server dan MariaDB