【发布时间】:2012-08-21 03:34:24
【问题描述】:
我正在开始新项目,但不知道从哪里开始。我需要具有类别和 4 级子类别的数据库设计,但产品可以有多个类别。所以我很困惑我的数据库应该如何。请帮助我。 非常感谢您提前给我时间。
【问题讨论】:
标签: many-to-many hierarchy categories
我正在开始新项目,但不知道从哪里开始。我需要具有类别和 4 级子类别的数据库设计,但产品可以有多个类别。所以我很困惑我的数据库应该如何。请帮助我。 非常感谢您提前给我时间。
【问题讨论】:
标签: many-to-many hierarchy categories
product:保存带有 id 的产品
category:保存带有 id 和 name 的类别以及该类别的父类别
product_category :持有一种或多种产品与一种或多种类别之间的交叉关系...
如果您在 mysql 或 良好的 DBMS 上使用 InnoDB,您应该定义外键约束:
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;
【讨论】: