Skip to content

iannoliver/PaperBook

Repository files navigation

Modelagem de dados

Banco de dados PaperBook

Segue as tabelas Cliente; Endereço; Contato; Categoria; Fornecedor; Produto; Pedido; Detalhes do Pedido;


No projeto de banco de dados, normalmente são considerados dois níveis de abstração de modelo de dados, o do modelo conceitual e o do modelo lógico. Além dos dois citados acima, também temos o modelo físico com a usa implementação.

NĂ­veis de modelagem - Modelo de dados conceitual

Este é o modelo de “quadro geral” que representa a estrutura geral e o conteúdo, mas não os detalhes do plano de dados. É o ponto de partida típico para modelagem de dados, identificando os vários conjuntos de dados e fluxo de dados através da organização. O modelo conceitual é o projeto de alto nível para o desenvolvimento dos modelos lógico e físico e é uma parte importante da documentação da arquitetura de dados.

Modelagem Conceitual no Excel

"Primeira Modalagem no Excel"


Modelagem Conceitual no Excel - 1º Normalização

"Primeira Modalagem no Excel - 1° Normalização"


Modelagem Conceitual no Excel - 2º Normalização

"Primeira Modalagem no Excel - 1° Normalização"


Modelagem de dados com o diagrama de entidade relacional

Neste diagrama temos as cardenalidade

- Um para Muitos
- Um para Um

"Modalagem Relacional"


Modelagem LĂłgica

NĂ­veis de modelagem - Modelo de dados lĂłgico

Um modelo lógico é uma descrição de um banco de dados no nível de abstração visto pelo usuário do SGBD. Assim, o modelo lógico é dependente do tipo particular de SGBD que está sendo usado. Vamos tratar apenas modelos lógicos referentes a SGBD relacional. Em um SGBD relacional, os dados estão organizados na forma de tabelas.

"Modalagem LĂłgica"


Modelo FĂ­sico

Abaixo está todo o código para a greação do banco de dados

-- MySQL Script generated by MySQL Workbench
-- Thu Aug 10 14:36:33 2023
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

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='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `paperbook` DEFAULT CHARACTER SET utf8 ;
USE `paperbook` ;

-- -----------------------------------------------------
-- Table `mydb`.`Usuario`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`usuario` (
  `idusuario` INT NOT NULL AUTO_INCREMENT,
  `login` VARCHAR(20) NOT NULL,
  `senha` VARCHAR(255) NOT NULL,
  `nivelAcesso` VARCHAR(45) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci' NOT NULL,
  PRIMARY KEY (`idusuario`),
  UNIQUE INDEX `login_UNIQUE` (`login` ASC) VISIBLE)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Contato`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`contato` (
  `idcontato` INT NOT NULL AUTO_INCREMENT,
  `telefonecelular` VARCHAR(20) NULL,
  `telefoneresidencial` VARCHAR(20) NULL,
  `email` VARCHAR(50) NULL,
  PRIMARY KEY (`idcontato`),
  UNIQUE INDEX `telefonecesidencial_UNIQUE` (`telefonecelular` ASC) VISIBLE,
  UNIQUE INDEX `email_UNIQUE` (`email` ASC) VISIBLE)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Endereco`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`endereco` (
  `idendereco` INT NOT NULL AUTO_INCREMENT,
  `tipo` VARCHAR(20) NOT NULL,
  `logradouro` VARCHAR(50) NOT NULL,
  `cep` VARCHAR(10) NOT NULL,
  `numero` VARCHAR(10) NOT NULL,
  `complemento` VARCHAR(45) NULL,
  `referencia` VARCHAR(45) NULL,
  `bairro` VARCHAR(45) NOT NULL,
  `cidade` VARCHAR(45) NOT NULL,
  `estado` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idendereco`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Cliente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`cliente` (
  `idcliente` INT NOT NULL AUTO_INCREMENT,
  `nomecliente` VARCHAR(50) NOT NULL,
  `cpfcliente` VARCHAR(15) NOT NULL,
  `rgcliente` VARCHAR(15) NOT NULL,
  `sexocliente` ENUM("Masculino", "Feminino") NOT NULL,
  `datanascimentocliente` DATE NOT NULL,
  `idendereco` INT NOT NULL,
  `idcontato` INT NOT NULL,
  `idusuario` INT NOT NULL,
  PRIMARY KEY (`idcliente`),
  UNIQUE INDEX `rgcliente_UNIQUE` (`rgcliente` ASC) VISIBLE,
  UNIQUE INDEX `cpfcliente_UNIQUE` (`cpfcliente` ASC) VISIBLE,
  INDEX `fk_cliente_pk_contato_idx` (`idcontato` ASC) VISIBLE,
  INDEX `fk_cliente_pk_endereco_idx` (`idendereco` ASC) VISIBLE,
  INDEX `fk_cliente_pk_usuario_idx` (`idusuario` ASC) VISIBLE,
  CONSTRAINT `fk_cliente_pk_contato`
    FOREIGN KEY (`idcontato`)
    REFERENCES `paperbook`.`contato` (`idcontato`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_cliente_pk_endereco`
    FOREIGN KEY (`idendereco`)
    REFERENCES `paperbook`.`endereco` (`idendereco`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_cliente_pk_usuario`
    FOREIGN KEY (`idusuario`)
    REFERENCES `paperbook`.`usuario` (`idusuario`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Cargo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`cargo` (
  `idcargo` INT NOT NULL AUTO_INCREMENT,
  `titulocargo` VARCHAR(50) NOT NULL,
  `salario` DECIMAL(10,2) NOT NULL,
  `beneficio` VARCHAR(100) NOT NULL,
  `cargahoraria` VARCHAR(50) NOT NULL,
  PRIMARY KEY (`idcargo`),
  UNIQUE INDEX `titulocargo_UNIQUE` (`titulocargo` ASC) VISIBLE)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Funcionario`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`funcionario` (
  `idfuncionario` INT NOT NULL AUTO_INCREMENT,
  `nomefuncionario` VARCHAR(50) NOT NULL,
  `cpffuncionario` VARCHAR(15) NOT NULL,
  `rgfuncionario` VARCHAR(15) NOT NULL,
  `sexofuncionario` ENUM("Masculino", "Feminino") NOT NULL,
  `datanascimentofuncionario` DATE NOT NULL,
  `superior` INT NOT NULL,
  `idcargo` INT NOT NULL,
  `idendereco` INT NOT NULL,
  `idcontato` INT NOT NULL,
  `idusuario` INT NOT NULL,
  PRIMARY KEY (`idfuncionario`),
  UNIQUE INDEX `cpffuncionario_UNIQUE` (`cpffuncionario` ASC) VISIBLE,
  UNIQUE INDEX `rgfuncionario_UNIQUE` (`rgfuncionario` ASC) VISIBLE,
  INDEX `fk_funcionario_pk_superior_idx` (`superior` ASC) VISIBLE,
  INDEX `fk_funcionario_pk_cargo_idx` (`idcargo` ASC) VISIBLE,
  INDEX `fk_funcionario_pk_endereco_idx` (`idendereco` ASC) VISIBLE,
  INDEX `fk_funcionario_pk_contato_idx` (`idcontato` ASC) VISIBLE,
  INDEX `fk_funcionario_pk_usuario_idx` (`idusuario` ASC) VISIBLE,
  CONSTRAINT `fk_funcionario_pk_superior`
    FOREIGN KEY (`superior`)
    REFERENCES `paperbook`.`funcionario` (`idfuncionario`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_funcionario_pk_cargo`
    FOREIGN KEY (`idcargo`)
    REFERENCES `paperbook`.`cargo` (`idcargo`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_funcionario_pk_endereco`
    FOREIGN KEY (`idendereco`)
    REFERENCES `paperbook`.`endereco` (`idendereco`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_funcionario_pk_contato`
    FOREIGN KEY (`idcontato`)
    REFERENCES `paperbook`.`contato` (`idcontato`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_funcionario_pk_usuario`
    FOREIGN KEY (`idusuario`)
    REFERENCES `paperbook`.`usuario` (`idusuario`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Fornecedor`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`fornecedor` (
  `idfornecedor` INT NOT NULL AUTO_INCREMENT,
  `razaosocial` VARCHAR(30) NOT NULL,
  `cnpj` VARCHAR(15) NOT NULL,
  `tipodeproduto` VARCHAR(100) NOT NULL,
  `idendereco` INT NOT NULL,
  `idcontato` INT NOT NULL,
  PRIMARY KEY (`idfornecedor`),
  UNIQUE INDEX `razaosocial_UNIQUE` (`razaosocial` ASC) VISIBLE,
  UNIQUE INDEX `cnpj_UNIQUE` (`cnpj` ASC) VISIBLE,
  INDEX `fk_fornecedor_pk_endereco_idx` (`idendereco` ASC) VISIBLE,
  INDEX `fk_fornecedor_pk_contato_idx` (`idcontato` ASC) VISIBLE,
  CONSTRAINT `fk_fornecedor_pk_endereco`
    FOREIGN KEY (`idendereco`)
    REFERENCES `paperbook`.`endereco` (`idendereco`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_fornecedor_pk_contato`
    FOREIGN KEY (`idcontato`)
    REFERENCES `paperbook`.`contato` (`idcontato`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Lote`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`lote` (
  `idlote` INT NOT NULL AUTO_INCREMENT,
  `numerolote` VARCHAR(10) NOT NULL,
  `fabricacao` DATE NOT NULL,
  `validade` DATE NOT NULL,
  PRIMARY KEY (`idlote`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Categoria`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`categoria` (
  `idcategoria` INT NOT NULL AUTO_INCREMENT,
  `nomecategoria` VARCHAR(50) NOT NULL,
  `descricaocategoria` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`idcategoria`),
  UNIQUE INDEX `nomecategoria_UNIQUE` (`nomecategoria` ASC) VISIBLE)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Produto`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`produto` (
  `idproduto` INT NOT NULL AUTO_INCREMENT,
  `nomeproduto` VARCHAR(50) NOT NULL,
  `descricaoproduto` VARCHAR(255) NOT NULL,
  `codigobarras` VARCHAR(200) NOT NULL,
  `preco` DECIMAL(10,2) NOT NULL,
  `observacao` VARCHAR(200) NULL,
  `idfornecedor` INT NOT NULL,
  `idlote` INT NOT NULL,
  `idcategoria` INT NOT NULL,
  PRIMARY KEY (`idproduto`),
  UNIQUE INDEX `codigobarras_UNIQUE` (`codigobarras` ASC) VISIBLE,
  INDEX `fk_produto_pk_fornecedor_idx` (`idfornecedor` ASC) VISIBLE,
  INDEX `fk_produto_pk_lote_idx` (`idlote` ASC) VISIBLE,
  INDEX `fk_produto_pk_cargo_idx` (`idcategoria` ASC) VISIBLE,
  CONSTRAINT `fk_produto_pk_fornecedor`
    FOREIGN KEY (`idfornecedor`)
    REFERENCES `paperbook`.`fornecedor` (`idfornecedor`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_produto_pk_lote`
    FOREIGN KEY (`idlote`)
    REFERENCES `paperbook`.`lote` (`idlote`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_produto_pk_cargo`
    FOREIGN KEY (`idcategoria`)
    REFERENCES `paperbook`.`categoria` (`idcategoria`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Pedido`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`pedido` (
  `idpedido` INT NOT NULL AUTO_INCREMENT,
  `loja` VARCHAR(45) NOT NULL,
  `unidadeloja` VARCHAR(45) NOT NULL,
  `numeroprotocolo` VARCHAR(20) NOT NULL,
  `formapagamento` VARCHAR(15) NOT NULL,
  `parcelas` VARCHAR(20) NULL,
  `valorparcela` DECIMAL(10,2) NULL,
  `valortotalpedido` DECIMAL(10,2) NOT NULL,
  `datahora` DATETIME NOT NULL,
  `idfuncionario` INT NOT NULL,
  `idcliente` INT NOT NULL,
  PRIMARY KEY (`idpedido`),
  UNIQUE INDEX `numeroprotocolo_UNIQUE` (`numeroprotocolo` ASC) VISIBLE,
  INDEX `fk_pedido_pk_funcionario_idx` (`idfuncionario` ASC) VISIBLE,
  INDEX `fk_pedido_pk_cliente_idx` (`idcliente` ASC) VISIBLE,
  CONSTRAINT `fk_pedido_pk_funcionario`
    FOREIGN KEY (`idfuncionario`)
    REFERENCES `paperbook`.`funcionario` (`idfuncionario`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_pedido_pk_cliente`
    FOREIGN KEY (`idcliente`)
    REFERENCES `paperbook`.`cliente` (`idcliente`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`DetalhePedido`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`detalhePedido` (
  `iddetalhepedido` INT NOT NULL AUTO_INCREMENT,
  `quantidade` INT NOT NULL,
  `valototal` DECIMAL(10,2) NOT NULL,
  `precounitario` DECIMAL(10,2) NOT NULL,
  `idpedido` INT NOT NULL,
  `idproduto` INT NOT NULL,
  PRIMARY KEY (`iddetalhepedido`),
  INDEX `fk_detalhePedido_pk_pedido_idx` (`idpedido` ASC) VISIBLE,
  INDEX `fk_detalhePedido_pk_produto_idx` (`idproduto` ASC) VISIBLE,
  CONSTRAINT `fk_detalhePedido_pk_pedido`
    FOREIGN KEY (`idpedido`)
    REFERENCES `paperbook`.`pedido` (`idpedido`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_detalhePedidousuario_pk_produto`
    FOREIGN KEY (`idproduto`)
    REFERENCES `paperbook`.`produto` (`idproduto`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published