sql >> Databáze >  >> RDS >> Mysql

Návrh databáze, položky v kategorii, podkategorii a tématu

Ukážeme vám představu, kterou si IMHO myslím, že je dobré použít:nejprve vytvořte tabulku 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;

pak pro vaši tabulku produktů ji můžete ponechat tak, jak je:

CREATE TABLE Product (ProductID int, Description nvarchar(100));

Nyní Obvykle můžete mít produkt, který patří do několika kategorií. Správný způsob, jak to udělat, je mít mezi produktem a kategorií vztah m:n. a lze to provést přidáním:

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;

a můžete ponechat téma tak, jak je.

uvidíte tuto category tabulka dokáže zpracovat kategorie vnoření pomocí category_father_id cizí klíč na sobě.

Ale je třeba mít na paměti, že koneckonců jde vždy o vaši doménu/obchodní logiku.




  1. Rozdělení tabulky MySQL podle měsíce

  2. získání chybového argumentu '0' je mimo rozsah

  3. Jak propojit R s PostgreSQL na OSX 10.10.2?

  4. export využití paměti z databáze do csv v php