Giter Club home page Giter Club logo

paperbook's Introduction

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 modelagem no excel"

Modelagem conceitual no excel - 1ºNormalização

"Primeira normalização no excel"

Modelagem conceitual no excel - 2ºNormalização

"Segunda nomralização no excel"

Modelagem de Dados com o diagrama de entidade relacional

Neste diagrama temos as cardenalidades

  • Um para Muitos
  • Um para Um

"Segunda modelagem"

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.

"Modelagem lógica - Diagrama"

Modelo físico do banco de dados

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

-- MySQL Script generated by MySQL Workbench
-- Tue Jun 27 14:01:42 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 paperbook
-- -----------------------------------------------------

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

-- -----------------------------------------------------
-- Table `paperbook`.`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))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `paperbook`.`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 `telefonecelular_UNIQUE` (`telefonecelular` ASC),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `paperbook`.`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,
  `complemento` VARCHAR(50) NULL,
  `bairro` VARCHAR(45) NOT NULL,
  `numero` VARCHAR(10) NOT NULL,
  `referencia` VARCHAR(45) NULL,
  `cidade` VARCHAR(45) NOT NULL,
  `estado` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idendereco`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `paperbook`.`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(20) 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 `cpfcliente_UNIQUE` (`cpfcliente` ASC),
  UNIQUE INDEX `rgcliente_UNIQUE` (`rgcliente` ASC),
  INDEX `fk_cliente_pk_contato_idx` (`idcontato` ASC) ,
  INDEX `fk_cliente_pk_endereco_idx` (`idendereco` ASC) ,
  INDEX `fk_cliente_pk_usuario_idx` (`idusuario` ASC) ,
  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 `paperbook`.`Cargo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`Cargo` (
  `idcargo` INT NOT NULL AUTO_INCREMENT,
  `titulocargo` VARCHAR(30) NOT NULL,
  `salario` DECIMAL(7,2) NOT NULL,
  `beneficio` VARCHAR(45) NOT NULL,
  `cargohoraria` VARCHAR(40) NOT NULL,
  PRIMARY KEY (`idcargo`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `paperbook`.`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(20) 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) ,
  UNIQUE INDEX `rgfuncionario_UNIQUE` (`rgfuncionario` ASC) ,
  INDEX `fk_funcionario_pk_cargo_idx` (`idcargo` ASC) ,
  INDEX `fk_funcionario_pk_endereco_idx` (`idendereco` ASC) ,
  INDEX `fk_funcionario_pk_contato_idx` (`idcontato` ASC) ,
  INDEX `fk_funcionario_pk_usuario_idx` (`idusuario` ASC) ,
  INDEX `fk_funcionario_pk_superior_idx` (`superior` ASC) ,
  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,
  CONSTRAINT `fk_funcionario_pk_superior`
    FOREIGN KEY (`superior`)
    REFERENCES `paperbook`.`Funcionario` (`idfuncionario`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `paperbook`.`Fornecedor`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`Fornecedor` (
  `idfornecedor` INT NOT NULL AUTO_INCREMENT,
  `razaosocial` VARCHAR(45) NOT NULL,
  `cnpj` VARCHAR(35) NOT NULL,
  `tipoproduto` VARCHAR(45) NOT NULL,
  `idendereco` INT NOT NULL,
  `idcontato` INT NOT NULL,
  PRIMARY KEY (`idfornecedor`),
  UNIQUE INDEX `razaosocial_UNIQUE` (`razaosocial` ASC) ,
  UNIQUE INDEX `cnpj_UNIQUE` (`cnpj` ASC) ,
  INDEX `fk_fornecedor_pk_endereco_idx` (`idendereco` ASC) ,
  INDEX `fk_fornecedor_pk_contato_idx` (`idcontato` ASC) ,
  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 `paperbook`.`Categoria`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`Categoria` (
  `idcategoria` INT NOT NULL AUTO_INCREMENT,
  `nomecategoria` VARCHAR(40) NOT NULL,
  `descricaocategoria` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idcategoria`),
  UNIQUE INDEX `nomecategoria_UNIQUE` (`nomecategoria` ASC) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `paperbook`.`Lote`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`Lote` (
  `idlote` INT NOT NULL AUTO_INCREMENT,
  `numerolote` INT NOT NULL,
  `fabricacao` VARCHAR(45) NOT NULL,
  `validade` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idlote`),
  UNIQUE INDEX `numerolote_UNIQUE` (`numerolote` ASC) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `paperbook`.`Produto`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`Produto` (
  `idproduto` INT NOT NULL AUTO_INCREMENT,
  `nomeproduto` VARCHAR(45) NOT NULL,
  `descricaoproduto` VARCHAR(45) NOT NULL,
  `codigobarras` VARCHAR(45) NOT NULL,
  `preco` DOUBLE NOT NULL,
  `observacao` VARCHAR(45) NOT NULL,
  `idcategoria` INT NOT NULL,
  `idfornecedor` INT NOT NULL,
  `idlote` INT NOT NULL,
  PRIMARY KEY (`idproduto`),
  UNIQUE INDEX `codigobarras_UNIQUE` (`codigobarras` ASC) ,
  INDEX `fk_produto_pk_categoria_idx` (`idcategoria` ASC) ,
  INDEX `fk_produto_pk_lote_idx` (`idlote` ASC) ,
  INDEX `fk_produto_pk_fornecedor_idx` (`idfornecedor` ASC) ,
  CONSTRAINT `fk_produto_pk_categoria`
    FOREIGN KEY (`idcategoria`)
    REFERENCES `paperbook`.`Categoria` (`idcategoria`)
    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_fornecedor`
    FOREIGN KEY (`idfornecedor`)
    REFERENCES `paperbook`.`Fornecedor` (`idfornecedor`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `paperbook`.`Pedido`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`Pedido` (
  `idpedido` INT NOT NULL AUTO_INCREMENT,
  `loja` VARCHAR(45) NOT NULL,
  `unidadeloja` VARCHAR(35) NOT NULL,
  `numeroprotocolo` INT NOT NULL,
  `formapagamento` VARCHAR(20) NOT NULL,
  `parcelas` VARCHAR(35) NOT NULL,
  `valorparcela` DOUBLE NOT NULL,
  `valortotalpedido` DECIMAL(7,2) NOT NULL,
  `datahora` DATE NOT NULL,
  `idfuncionario` INT NOT NULL,
  `idcliente` INT NOT NULL,
  PRIMARY KEY (`idpedido`),
  UNIQUE INDEX `numeroprotocolo_UNIQUE` (`numeroprotocolo` ASC) ,
  INDEX `fk_pedido_pk_funcionario_idx` (`idfuncionario` ASC) ,
  INDEX `fk_pedido_pk_cliente_idx` (`idcliente` ASC) ,
  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 `paperbook`.`detalhepedido`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `paperbook`.`detalhepedido` (
  `iddetalhepedido` INT NOT NULL AUTO_INCREMENT,
  `quantidade` INT NOT NULL,
  `valortotal` DECIMAL(7,2) NOT NULL,
  `precounitario` DECIMAL(7,2) NOT NULL,
  `idpedido` INT NOT NULL,
  `idproduto` INT NOT NULL,
  PRIMARY KEY (`iddetalhepedido`),
  INDEX `fk_detalhepedido_pk_pedido_idx` (`idpedido` ASC) ,
  INDEX `fk_detalhepedido_pk_produto_idx` (`idproduto` ASC) ,
  CONSTRAINT `fk_detalhepedido_pk_pedido`
    FOREIGN KEY (`idpedido`)
    REFERENCES `paperbook`.`Pedido` (`idpedido`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_detalhepedido_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;

paperbook's People

Watchers

Eduardo Casagrande de Sá avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.