具有多对多关系的类别&子类别 [英] categories & sub categories with many to many relationship

查看:20
本文介绍了具有多对多关系的类别&子类别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开始新的项目,但不能理解从哪里开始,我需要数据库设计,有类别和4级子类别,但该产品可以有一个以上的类别。所以我不知道我的数据库应该是什么样子。请帮帮我。 非常感谢您提前给我时间。

推荐答案

产品:保存id为的产品
类别:保存有id和名称的类别以及该类别的上级类别
PRODUCT_CATEGORY:保存一个或多个产品与一个或多个类别的交叉关系...

如果您在MySQL上使用InnoDB或好的DBMS,则应定义外键约束:

CREATE  TABLE IF NOT EXISTS `mydb`.`category` (
  `id` INT NOT NULL ,
  `name` VARCHAR(45) NULL ,
  `parent_id` INT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `parentCategory_idx` (`parent_id` ASC) ,
  CONSTRAINT `parentCategory`
    FOREIGN KEY (`parent_id` )
    REFERENCES `mydb`.`category` (`id` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;



CREATE  TABLE IF NOT EXISTS `mydb`.`product` (
  `id` INT NOT NULL ,
  `name` VARCHAR(45) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;

CREATE  TABLE IF NOT EXISTS `mydb`.`product_category` (
  `product_id` INT NOT NULL ,
  `category_id` INT NOT NULL ,
  PRIMARY KEY (`product_id`, `category_id`) ,
  INDEX `product_idx` (`product_id` ASC) ,
  INDEX `category_idx` (`category_id` ASC) ,
  CONSTRAINT `product`
    FOREIGN KEY (`product_id` )
    REFERENCES `mydb`.`product` (`id` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `category`
    FOREIGN KEY (`category_id` )
    REFERENCES `mydb`.`category` (`id` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

这篇关于具有多对多关系的类别&子类别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆