Mesclar itens
Estou desenvolvendo um sistema de cadastro de "itens/produtos", existem situações que os itens são mesclados em um novo item.
Se eu tiver o "produto A", "produto B" e "produto A + produto B", quando editar o "produto A" deve afetar o "produto A + produto B"
Eu fiz a seguinte estrutura:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `ecommerce` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
CREATE TABLE IF NOT EXISTS `ecommerce`.`stock` (
`stock_id` INT(11) NOT NULL AUTO_INCREMENT,
`stock_title` VARCHAR(60) NOT NULL,
`stock_description` VARCHAR(300) NOT NULL,
PRIMARY KEY (`stock_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
CREATE TABLE IF NOT EXISTS `ecommerce`.`poster` (
`poster_id` INT(11) NOT NULL AUTO_INCREMENT,
`poster_price` DOUBLE(9,0) NOT NULL DEFAULT 0,
PRIMARY KEY (`poster_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
CREATE TABLE IF NOT EXISTS `ecommerce`.`attributes` (
`attributes_id` INT(11) NOT NULL AUTO_INCREMENT,
`attributes_title` VARCHAR(45) NOT NULL,
`attributes_value` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`attributes_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
CREATE TABLE IF NOT EXISTS `ecommerce`.`poster_has_stock` (
`poster_poster_id` INT(11) NOT NULL,
`stock_stock_id` INT(11) NOT NULL,
PRIMARY KEY (`poster_poster_id`, `stock_stock_id`),
INDEX `fk_poster_has_stock_stock1_idx` (`stock_stock_id` ASC),
INDEX `fk_poster_has_stock_poster_idx` (`poster_poster_id` ASC),
CONSTRAINT `fk_poster_has_stock_poster`
FOREIGN KEY (`poster_poster_id`)
REFERENCES `ecommerce`.`poster` (`poster_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_poster_has_stock_stock1`
FOREIGN KEY (`stock_stock_id`)
REFERENCES `ecommerce`.`stock` (`stock_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
CREATE TABLE IF NOT EXISTS `ecommerce`.`stock_has_attributes` (
`stock_stock_id` INT(11) NOT NULL,
`attributes_attributes_id` INT(11) NOT NULL,
PRIMARY KEY (`stock_stock_id`, `attributes_attributes_id`),
INDEX `fk_stock_has_attributes_attributes1_idx` (`attributes_attributes_id` ASC),
INDEX `fk_stock_has_attributes_stock1_idx` (`stock_stock_id` ASC),
CONSTRAINT `fk_stock_has_attributes_stock1`
FOREIGN KEY (`stock_stock_id`)
REFERENCES `ecommerce`.`stock` (`stock_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_stock_has_attributes_attributes1`
FOREIGN KEY (`attributes_attributes_id`)
REFERENCES `ecommerce`.`attributes` (`attributes_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Funciona normalmente.
Minha duvida é: Este é a melhor maneira de criar novos itens mesclados a partir de outros itens?
Segue banco completo:
http://www.mediafire.com/download/z21uk2yf8qbsda6/n_m.zip
Discussão (12)
Carregando comentários...