Mysql
 sql >> база данни >  >> RDS >> Mysql

Дизайн на база данни, елементи в категория, подкатегория и тема

Нека ви покажем една идея, която IMHO според мен е добре да се използва:първо създайте таблицата с категории:

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;

след това за вашата продуктова таблица можете да я запазите такава, каквато е:

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

Сега Обикновено можете да имате продукт, който принадлежи към няколко категории. Следователно, правилният начин да го направите е да имате връзка m:n между продукт и категория. и може да се направи чрез добавяне на:

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;

и можете да запазите темата такава, каквато е.

ще видите тази category таблицата може да обработва категориите за влагане чрез category_father_id външен ключ на себе си.

Но една бележка, която трябва да имате предвид, е, че в края на краищата винаги става дума за вашия домейн/бизнес логика.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мигриране на MySQL към PostgreSQL на AWS RDS, част 2

  2. Sql Обединяване на множество записи в един запис

  3. Неразрешен символ:sql::mysql::get_driver_instance(void)

  4. Не може да се свърже с MySQL чрез PHP скрипт, когато се използва mysqli или PDO, НО mysql работи

  5. Заобиколете самореферирането в заявка DELETE