-- MySQL Script generated by MySQL Workbench
-- Seg 28 Mai 2018 14:56:04 -03
-- 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='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Table `rastreador_marca`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `rastreador_marca` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `nome` VARCHAR(45) NOT NULL,
  `ativo` ENUM('S', 'N') NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `rastreador_modelo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `rastreador_modelo` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `rastreador_marca_id` INT NOT NULL,
  `nome` VARCHAR(45) NOT NULL,
  `ativo` ENUM('S', 'N') NOT NULL DEFAULT 'S',
  PRIMARY KEY (`id`),
  INDEX `fk_rastreador_modelo_rastreador_marca1_idx` (`rastreador_marca_id` ASC),
  CONSTRAINT `fk_rastreador_modelo_rastreador_marca1`
    FOREIGN KEY (`rastreador_marca_id`)
    REFERENCES `rastreador_marca` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `veiculo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `veiculo` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `descricao` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `rastreador`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `rastreador` (
  `codigo` VARCHAR(10) NOT NULL,
  `veiculo_id` INT NOT NULL,
  `rastreador_modelo_id` INT UNSIGNED NOT NULL,
  `descricao` VARCHAR(45) NULL,
  `ativo` ENUM('S', 'N') NOT NULL DEFAULT 'S',
  PRIMARY KEY (`codigo`, `veiculo_id`),
  INDEX `fk_rastreador_rastreador_modelo_idx` (`rastreador_modelo_id` ASC),
  INDEX `fk_rastreador_veiculo_idx` (`veiculo_id` ASC),
  CONSTRAINT `fk_rastreador_rastreador_modelo`
    FOREIGN KEY (`rastreador_modelo_id`)
    REFERENCES `rastreador_modelo` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_rastreador_veiculo`
    FOREIGN KEY (`veiculo_id`)
    REFERENCES `veiculo` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `rastreio`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `rastreio` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `rastreador_codigo` VARCHAR(10) NOT NULL,
  `rastreador_veiculo_id` INT NOT NULL,
  `dh_satelite` DATETIME NOT NULL,
  `latitude` VARCHAR(11) NOT NULL,
  `longitude` VARCHAR(12) NOT NULL,
  `velocidade` DECIMAL(6,3) NOT NULL,
  `logradouro` VARCHAR(60) NULL,
  `bairro` VARCHAR(45) NULL,
  `cidade` VARCHAR(45) NULL,
  `criado_em` DATETIME NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_rastreio_rastreador_idx` (`rastreador_codigo` ASC),
  INDEX `fk_rastreio_veiculo_idx` (`rastreador_veiculo_id` ASC),
  CONSTRAINT `fk_rastreio_rastreador`
    FOREIGN KEY (`rastreador_codigo`)
    REFERENCES `rastreador` (`codigo`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_rastreio_veiculo`
    FOREIGN KEY (`rastreador_veiculo_id`)
    REFERENCES `veiculo` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `rastreio_atual`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `rastreio_atual` (
  `rastreador_codigo` VARCHAR(10) NOT NULL,
  `rastreador_veiculo_id` INT NOT NULL,
  `dh_satelite` DATETIME NOT NULL,
  `latitude` VARCHAR(11) NOT NULL,
  `longitude` VARCHAR(12) NOT NULL,
  `velocidade` DECIMAL(6,3) NOT NULL,
  `logradouro` VARCHAR(60) NULL,
  `bairro` VARCHAR(45) NULL,
  `cidade` VARCHAR(45) NULL,
  `criado_em` DATETIME NOT NULL,
  PRIMARY KEY (`rastreador_codigo`, `rastreador_veiculo_id`),
  INDEX `fk_rastreio_atual_rastreador_idx` (`rastreador_codigo` ASC),
  INDEX `fk_rastreio_atual_veiculo_idx` (`rastreador_veiculo_id` ASC),  
  CONSTRAINT `fk_rastreio_atual_rastreador`
    FOREIGN KEY (`rastreador_codigo`)
    REFERENCES `rastreador` (`codigo`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_rastreio_atual_veiculo`
    FOREIGN KEY (`rastreador_veiculo_id`)
    REFERENCES `veiculo` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

ALTER TABLE `rastreamento`.`veiculo` 
ADD COLUMN `via_id_viatura` VARCHAR(45) NULL AFTER `descricao`,
ADD COLUMN `ativo` INT NULL AFTER `via_id_viatura`;


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