Unidrive Banco de Dados - elian-roventini/ModeloUML GitHub Wiki

Nesta página você encontra um pouco mais sobre nosso Banco de Dados!

Modelo Banco de Dados

O Modelo de banco de dados mostra a estrutura lógica de um banco de dados, incluindo as relações e restrições que determinam como os dados podem ser armazenados e acessados. Modelos de banco de dados individuais são projetados com base nas regras e nos conceitos do modelo de dados mais abrangente que os designers adotam. A maioria dos modelos de dados pode ser representada por um diagrama de banco de dados acompanhante.

Banco de Dados Unidrive

Detalhamento das Tabelas e Campos do Banco de Dados

Tabela Endereço

Tabela: Endereco (armazena as informações de endereço do usuário).

  • Campo 1: endereço_id (armazena o índice do endereço) [Chave Primária];
  • Campo 2: cep (armazena o código de endereçamento postal);
  • Campo 3: complemento (armazena o complemento do endereço);
  • Campo 4: endereco (armazena a string do endereço);
  • Campo 5: numero (armazena o número do endereço).

Tabela Usuário

Tabela: Usuario (armazena a maior parte das informações do usuário).

  • Campo 1: usuario_id (armazena o índice do usuário) [Chave Primária];
  • Campo 2: cnh (armazena a carteira nacional de habilitação do usuário);
  • Campo 3: cpf (armazena o cadastro de pessoa física do usuário);
  • Campo 4: email (armazena o endereço de e-mail do usuário);
  • Campo 5: nome (armazena o nome do usuário);
  • Campo 6: senha (armazena a senha em hash do usuário);
  • Campo 7: telefone (armazena o telefone do usuário).

Tabela Concessionária

Tabela: Concessionária (armazena a maior parte das informações da concessionária).

  • Campo 1: concessionaria_id (armazena o índice da concessionária) [Chave Primária];
  • Campo 2: dt_criacao (armazena a data de criação da concessionária);
  • Campo 3: email (armazena o endereço de e-mail da concessionária);
  • Campo 4: nome_fantasia (armazena o nome fantasia da concessionária);
  • Campo 5: telefone (armazena o telefone da concessionária).

Tabela Carro

Tabela: Carro (armazena todas as informações do carro).

  • Campo 1: carro_id (armazena o índice do carro) [Chave Primária];
  • Campo 2: ano (armazena o ano do carro);
  • Campo 3: cor (armazena a cor do carro);
  • Campo 4: documentacao (armazena o certificado de registro e licenciamento do carro);
  • Campo 5: dt_criacao (armazena a data de criação do carro);
  • Campo 6: marca (armazena a marca do carro);
  • Campo 7: modelo (armazena o modelo do carro);
  • Campo 8: placa (armazena a placa do carro);
  • Campo 9: quilometragem (armazena a quilometragem do carro);
  • Campo 10: renavam (armazena o registro nacional de veículos automotores do carro);
  • Campo 11: valor (armazena o valor do carro).

Tabela Agendamento

Tabela: Agendamento (armazena as informações de agendamento do usuário com o carro).

  • Campo 1: agendamento_id (armazena o índice do agendamento) [Chave Primária];
  • Campo 2: dt_agendamento (armazena a data do agendamento);
  • Campo 3: hr_final (armazena a hora que finaliza o agendamento);
  • Campo 4: hr_inicial (armazena a hora que inicia o agendamento).

Tabela Log do Sistema

Tabela: System_log (armazena o log de dados do sistema).

  • Campo 1: log (armazena os processos de registro de eventos relevantes pelo sistema).

Modelo Entidade Relacionamento

O modelo entidade relacionamento (MER) é um modelo para descrever os dados ou aspectos de informação de um domínio de negócio ou seus requisitos de processo, de uma maneira abstrata que em última análise se presta a ser implementada em um banco de dados, como um banco de dados relacional. Os principais componentes dos Modelos Entidade-Relacionamento (MER) são as entidades (coisas,objetos) suas relações e armazenamento em bancos de dados.

Modelo Entidade Relacionamento Unidrive

Triggers do Banco de Dados

Trigger 1

Trigger criada para realizar um registro da data e hora que um agendamento for excluído:

CREATE TRIGGER delete_agendamento_log AFTER DELETE ON agendamento FOR EACH ROW BEGIN INSERT INTO unidrive.system_log (log) values (concat('O Agendamento do ID ', old.id, ' foi deletado ', 'na data de ', NOW())); end;

Trigger 2

Trigger criada para realizar um registro da data e hora que um carro for excluído:

CREATE TRIGGER delete_carro_log AFTER DELETE ON carro FOR EACH ROW BEGIN INSERT INTO unidrive.system_log (log) values (concat('O Carro do ID ', old.id, ' foi deletado ', 'na data de ', NOW())); end;

Trigger 3

Trigger criada para realizar um registro da data e hora que um carro for editado:

CREATE TRIGGER update_carro_log AFTER update ON carro FOR EACH ROW BEGIN INSERT INTO unidrive.system_log (log) values (concat('O Carro do ID ', new.id, ' foi alterado ', 'na data de ', NOW())); end;

Índices do Banco de Dados

Índice 1

Índice criado para otimizar a busca quando for feita a chamada da funcionalidade buscar carros por um modelo. Ex.: Gol, Onix, HB20.

CREATE INDEX idx_CARRO_MODELO ON carro(modelo);

Índice 2

Índice criado para otimizar a busca quando for feita a consulta nos carros de uma marca. Ex.: KIA, Volkswagen.

CREATE INDEX idx_CARRO_MARCA ON carro(marca);

Índice 3

Índice criado para otimizar a busca quando for feita a consulta nos usuários usando o e-mail.

CREATE INDEX idx_USUARIO_EMAIL ON usuario(email);

Script do Banco de Dados

Abaixo segue script para a criação do Banco de Dados

DROP TABLE IF EXISTS `agendamento`; CREATE TABLE `agendamento` ( `id` bigint NOT NULL AUTO_INCREMENT, `dt_agendamento` varchar(255) DEFAULT NULL, `hr_final` varchar(255) DEFAULT NULL, `hr_inicial` varchar(255) DEFAULT NULL, `carro_id` bigint DEFAULT NULL, `usuario_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK4hbdv4vq84ncod446xql38r8q` (`carro_id`), KEY `FKfbyksmvbd2yav8b059npbeif` (`usuario_id`), CONSTRAINT `FK4hbdv4vq84ncod446xql38r8q` FOREIGN KEY (`carro_id`) REFERENCES `carro` (`id`), CONSTRAINT `FKfbyksmvbd2yav8b059npbeif` FOREIGN KEY (`usuario_id`) REFERENCES `usuario` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

DROP TABLE IF EXISTS `carro`; CREATE TABLE `carro` ( `id` bigint NOT NULL AUTO_INCREMENT, `ano` varchar(255) DEFAULT NULL, `cor` varchar(255) DEFAULT NULL, `documentacao` varchar(255) DEFAULT NULL, `dt_criacao` varchar(255) DEFAULT NULL, `marca` varchar(255) DEFAULT NULL, `modelo` varchar(255) DEFAULT NULL, `placa` varchar(255) DEFAULT NULL, `quilometragem` varchar(255) DEFAULT NULL, `renavam` varchar(255) DEFAULT NULL, `valor` varchar(255) DEFAULT NULL, `concessionaria_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UK_od3tctt9ma2xgjnn9gubgbgbd` (`documentacao`), UNIQUE KEY `UK_5uv3fisdwp2pmj1357rivswea` (`placa`), UNIQUE KEY `UK_r16ccovgniyke4xfb3yj7rbt7` (`renavam`), KEY `FK4g61a0hsgngyya53uyuove4j9` (`concessionaria_id`), KEY `idx_CARRO_MODELO` (`modelo`), KEY `idx_CARRO_MARCA` (`marca`), CONSTRAINT `FK4g61a0hsgngyya53uyuove4j9` FOREIGN KEY (`concessionaria_id`) REFERENCES `concessionaria` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

DROP TABLE IF EXISTS `concessionaria`; CREATE TABLE `concessionaria` ( `id` bigint NOT NULL AUTO_INCREMENT, `cnpj` varchar(255) DEFAULT NULL, `dt_criacao` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `nome_fantasia` varchar(255) DEFAULT NULL, `telefone` varchar(255) DEFAULT NULL, `endereco_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UK_kf5x9k6dpnqipc42q22diekyp` (`cnpj`), UNIQUE KEY `UK_fuvi7fv94why041fau1l4mmbv` (`nome_fantasia`), KEY `FKklv2xg45b44wcimecvhivkffx` (`endereco_id`), CONSTRAINT `FKklv2xg45b44wcimecvhivkffx` FOREIGN KEY (`endereco_id`) REFERENCES `endereco` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

DROP TABLE IF EXISTS `endereco`; CREATE TABLE `endereco` ( `id` bigint NOT NULL AUTO_INCREMENT, `cep` varchar(255) DEFAULT NULL, `complemento` varchar(255) DEFAULT NULL, `endereco` varchar(255) DEFAULT NULL, `numero` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

DROP TABLE IF EXISTS `system_log`; CREATE TABLE `system_log` ( `log` varchar(100) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

DROP TABLE IF EXISTS `usuario`; CREATE TABLE `usuario` ( `id` bigint NOT NULL AUTO_INCREMENT, `cnh` varchar(255) DEFAULT NULL, `cpf` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `nome` varchar(255) DEFAULT NULL, `senha` varchar(255) DEFAULT NULL, `telefone` varchar(255) DEFAULT NULL, `concessionaria_id` bigint DEFAULT NULL, `endereco_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UK_bno4gmt60moxf0miou6pvas3f` (`cnh`), UNIQUE KEY `UK_692bsnqxa8m9fmx7m1yc6hsui` (`cpf`), UNIQUE KEY `UK_5171l57faosmj8myawaucatdw` (`email`), KEY `FKrolquucnw3e97rp0tnsjbiux` (`concessionaria_id`), KEY `FK8fl5dxscva53gw12f19q6qxf8` (`endereco_id`), CONSTRAINT `FK8fl5dxscva53gw12f19q6qxf8` FOREIGN KEY (`endereco_id`) REFERENCES `endereco` (`id`), CONSTRAINT `FKrolquucnw3e97rp0tnsjbiux` FOREIGN KEY (`concessionaria_id`) REFERENCES `concessionaria` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

DROP TABLE IF EXISTS `usuario_perfis`; CREATE TABLE `usuario_perfis` ( `usuario_id` bigint NOT NULL, `perfis_id` bigint NOT NULL, KEY `FK7bhs80brgvo80vhme3u8m6ive` (`perfis_id`), KEY `FKs91tgiyagbilt959wbufiphgc` (`usuario_id`), CONSTRAINT `FK7bhs80brgvo80vhme3u8m6ive` FOREIGN KEY (`perfis_id`) REFERENCES `perfil` (`id`), CONSTRAINT `FKs91tgiyagbilt959wbufiphgc` FOREIGN KEY (`usuario_id`) REFERENCES `usuario` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;