Buscar

Estudo de Caso Banco de Dados - UNIDBSCO (Lógico + Físico + RESPOSTA)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Estudo de Caso 
Banco de Dados: Modelo Lógico e Físico. 
1. Apresentação 
Um Estudo de CASO traduz uma importante fonte de conhecimento a partir da aplicação das 
teorias apresentadas em um determinando enquadramento, nesse caso, em BANCO de 
DADOS. 
Observe que no relato de um estudo de caso, contém: 
i. Introdução; 
ii. Fundamentação Teórica; 
iii. Trabalhos Relacionados; 
iv. A Descrição do Caso; 
v. A Discussão dos Resultados; 
vii. Considerações; 
vii. Bibliografia ou Referência Bibliográfica. 
 
O caso que aqui apresentamos como modelo de orientação encontra-se no item 3 deste 
documento Banco de Dados: Modelo Lógico e Físico. 
 
2. Objetivos 
Ler o referido Caso de Estudo (Item 3) e produzir um documento, anexando-o no Canvas sob o 
título: “Estudo de Caso #2 Banco de Dados: Modelo Lógico e Físico”. 
 
Esse documento deverá conter: 
 
i. um relato de no máximo 10 linhas sobre o tema objeto do Estudo de Caso; 
ii. um arquivo de imagem do modelo lógico (print da tela do Workbench) e salvo em “.png”; 
iii. um arquivo com o código do modelo físico em SQL para o SGBD MySQL 5.7. O documento 
pode ser criado no Notepad++ e entregue coma extensão “.sql”; 
iv. relatar as dificuldades conceituais encontradas; e 
v. suas considerações e reflexões sobre a criação do modelo físico. 
 
3. Estudo de Caso 
Gerência Acadêmica de uma Universidade - Modelo Lógico e Físico 
Modelo lógico, ele só tem início após a criação do modelo conceitual, pois agora vamos 
considerar uma das abordagens possíveis da tecnológica de Sistemas Gerenciadores de Banco 
de Dados para a estruturação e estabelecimento da lógica dor relacionamentos existentes 
entre os dados definidos no modelo conceitual. 
A elaboração direta de um modelo lógico de dados, independentemente de já sabermos a 
abordagem para banco de dados, para a qual estamos realizando um projeto, levam à 
vinculação tecnológica de nosso raciocínio, perturbando a interpretação pura e simples de um 
contexto. Sempre que analisarmos um contexto sob a ótica tecnológica, temos a tendência de 
sermos técnicos demais, distorcer a realidade. Conduzindo-a às restrições da tecnologia 
empregada, o que sempre, e já estatisticamente comprovado, leva a erros de interpretação da 
realidade, criando assim modelos de dados que não possuem aderência ao minimundo 
descrito. 
O modelo lógico descreve em formato as estruturas que estarão no banco de dados de acordo 
com as possibilidades permitidas pela sua abordagem, mas sem considerar, ainda, nenhuma 
característica específica de um Sistema Gerenciador de Banco de Dados (SGBD). Isso resulta 
um esquema lógico de dados sob a óptica de uma das abordagens citadas, pelo emprego de 
uma técnica de modelagem de dados orientada às restrições de cada abordagem. 
Na Figura 1, temos o banco de dados conceitual referente a uma faculdade. Este modelo 
conceitual servirá de base para que seja criado o modelo lógico deste estudo de caso. Tal 
modelo lógico é sugerido que seja criado pela ferramenta Workbench e no SGBD MySQL. 
 
 
Figura 1 - Modelo Conceitual Faculdade. 
 
O modelo físico é o modelo que descreve a forma como os dados são armazenados no SGBD, 
nesta fase, o modelo lógico é convertido, no caso dos bancos relacionais em linguagem DDL 
(Data Description Language) e as regras descritas no modelo conceitual são convertidas em 
regras de integridade. 
Dentre os tipos de bancos de dados, os mais comuns são os relacionais, embora seja crescente 
a quantidade dos bancos de dados orientados a objetos. 
Neste contexto, nosso escopo limita-se aos hegemônicos bancos relacionais e a forma de 
modelá-los. Com isso, o modelo lógico criado deverá ser convertido para um modelo físico. 
Utilize para isso o SGBD MySQL na versão 5.7. 
Os dois modelos: lógico e físico, devem ser entregues conforme descrito no item 2 deste 
estudo de caso. 
 
4. Referências 
1. ELMASRI, Ramez E.; NAVATHE, Shamkant. Sistema de Banco de Dados. 6 ª edição. 
Pearson/Pretice Hall, 2018. 
2. DATE C J. Introdução a Sistemas de Banco de Dados. 1ª Edição. GEN LTC, 2004. 
3. VICCI, Claudia. Banco de Dados. Edição: 1°. Pearson, 2015. 
4. PUGA, Sandra; FRANÇA, Edson; GOYA, Milton. Banco de dados: Implementação em SQL, 
PL/SQL e Oracle 11g. Edição: 1°. Pearson, 2013. 
5. MEDEIROS, Luciano Frontino de, Banco de Dados: princípios e prática. Edição: 1°, 2013. 
6. LEAL, Gislaine Camila Lapasini. Linguagem, programação e banco de dados: guia prático de 
aprendizagem. 1° Edição. Editora Intersaberes, 2015. 
7. LIGHTSTONE, Sam. Projeto e modelagem de banco de dados. Edição: 1. GEN LTC, 2013. 
8. Ramakrishnan, Raghu. et al. Sistemas de Gerenciamento de Bancos de Dados. Edição: 3. 
Editora: AMGH, 2007. 
 
RESPOSTA: 
Os modelos essenciais para a criação de um banco de dados bem estruturados demanda um 
certo tempo de estudo, vindo de seu inicio pelo modelo conceitual, ao modelo lógico e finalizar 
no modelo físico, necessita-se de uma atenção bem importante, pois um módulo errado pode 
estragar todo o projeto. Ao realizar a criação do modelo conceitual para o fisico, a leitura e 
interpretação do modelo “desenho” veio com uma dificuldade inicial, mas ao reler e tentar 
intepretar já apresenta uma certa facilidade. O modelo físico em si já se apresenta mais 
complexo, por apresentar requisitos lógicos bem completos, sem erros, uma virgula ou espaço 
no lugar errado já atrapalha o projeto inteiro. Com isso, finalizo meu estudo sobre o presente 
problema apresentado. 
IMAGEM MODELO LÓGICO WORKBENCH: 
 
 
 
 
CÓDIGO MODELO FISICO: 
OBS: Salvar o código abaixo no notepad em formato (.sql) 
O Código inicia no primeiro SET abaixo. 
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_T
ABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_S
UBSTITUTION'; 
 
-- ----------------------------------------------------- 
-- Schema dbunidbsco 
-- ----------------------------------------------------- 
 
-- ----------------------------------------------------- 
-- Schema dbunidbsco 
-- ----------------------------------------------------- 
CREATE SCHEMA IF NOT EXISTS `dbunidbsco` DEFAULT CHARACTER SET utf8 ; 
USE `dbunidbsco` ; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`departamento` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`departamento` ( 
 `cod_departamento` INT NOT NULL AUTO_INCREMENT, 
 `nome` VARCHAR(45) NOT NULL, 
 PRIMARY KEY (`cod_departamento`), 
 UNIQUE INDEX `cod_departamento_UNIQUE` (`cod_departamento` ASC), 
 UNIQUE INDEX `nome_UNIQUE` (`nome` ASC) ) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`professor` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`professor` ( 
 `cod_professor` INT NOT NULL AUTO_INCREMENT, 
 `nome_professor` VARCHAR(45) NOT NULL, 
 `sobrenome_professor` VARCHAR(45) NOT NULL, 
 `status` VARCHAR(45) NOT NULL, 
 `departamento_cod_departamento` INT NOT NULL, 
 PRIMARY KEY (`cod_professor`, `departamento_cod_departamento`), 
 UNIQUE INDEX `cod_professor_UNIQUE` (`cod_professor` ASC) , 
 INDEX `fk_professor_departamento_idx` (`departamento_cod_departamento` 
ASC), 
 CONSTRAINT `fk_professor_departamento` 
 FOREIGN KEY (`departamento_cod_departamento`) 
 REFERENCES `dbunidbsco`.`departamento` (`cod_departamento`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`curso` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`curso` ( 
 `cod_curso` INT NOT NULL AUTO_INCREMENT,
`nome_curso` VARCHAR(45) NOT NULL, 
 `departamento_cod_departamento` INT NOT NULL, 
 PRIMARY KEY (`cod_curso`, `departamento_cod_departamento`), 
 UNIQUE INDEX `cod_curso_UNIQUE` (`cod_curso` ASC) , 
 INDEX `fk_curso_departamento1_idx` (`departamento_cod_departamento` ASC
), 
 CONSTRAINT `fk_curso_departamento1` 
 FOREIGN KEY (`departamento_cod_departamento`) 
 REFERENCES `dbunidbsco`.`departamento` (`cod_departamento`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`turma` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`turma` ( 
 `cod_turma` INT NOT NULL AUTO_INCREMENT, 
 `data_inicio` DATE NOT NULL, 
 `data_fim` DATE NULL, 
 `num_alunos` INT NOT NULL, 
 `periodo` INT NOT NULL, 
 PRIMARY KEY (`cod_turma`), 
 UNIQUE INDEX `cod_turma_UNIQUE` (`cod_turma` ASC)) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`disciplina` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`disciplina` ( 
 `cod_disciplina` INT NOT NULL AUTO_INCREMENT, 
 `nome_disciplina` VARCHAR(45) NOT NULL, 
 `carga_horaria` INT NOT NULL, 
 `num_alunos` INT NOT NULL, 
 `descrição` LONGTEXT NULL, 
 `departamento_cod_departamento` INT NOT NULL, 
 PRIMARY KEY (`cod_disciplina`, `departamento_cod_departamento`), 
 UNIQUE INDEX `cod_disciplina_UNIQUE` (`cod_disciplina` ASC), 
 UNIQUE INDEX `nome_disciplina_UNIQUE` (`nome_disciplina` ASC), 
 INDEX `fk_disciplina_departamento1_idx` (`departamento_cod_departamento
` ASC), 
 CONSTRAINT `fk_disciplina_departamento1` 
 FOREIGN KEY (`departamento_cod_departamento`) 
 REFERENCES `dbunidbsco`.`departamento` (`cod_departamento`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`curso_disciplina` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`curso_disciplina` ( 
 `curso_cod_curso` INT NOT NULL, 
 `disciplina_cod_disciplina` INT NOT NULL, 
 PRIMARY KEY (`curso_cod_curso`, `disciplina_cod_disciplina`), 
 INDEX `fk_curso_has_disciplina_disciplina1_idx` (`disciplina_cod_discip
lina` ASC), 
 INDEX `fk_curso_has_disciplina_curso1_idx` (`curso_cod_curso` ASC), 
 CONSTRAINT `fk_curso_has_disciplina_curso1` 
 FOREIGN KEY (`curso_cod_curso`) 
 REFERENCES `dbunidbsco`.`curso` (`cod_curso`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION, 
 CONSTRAINT `fk_curso_has_disciplina_disciplina1` 
 FOREIGN KEY (`disciplina_cod_disciplina`) 
 REFERENCES `dbunidbsco`.`disciplina` (`cod_disciplina`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`professor_disciplina` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`professor_disciplina` ( 
 `professor_cod_professor` INT NOT NULL, 
 `disciplina_cod_disciplina` INT NOT NULL, 
 PRIMARY KEY (`professor_cod_professor`, `disciplina_cod_disciplina`), 
 INDEX `fk_professor_has_disciplina_disciplina1_idx` (`disciplina_cod_di
sciplina` ASC), 
 INDEX `fk_professor_has_disciplina_professor1_idx` (`professor_cod_prof
essor` ASC), 
 CONSTRAINT `fk_professor_has_disciplina_professor1` 
 FOREIGN KEY (`professor_cod_professor`) 
 REFERENCES `dbunidbsco`.`professor` (`cod_professor`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION, 
 CONSTRAINT `fk_professor_has_disciplina_disciplina1` 
 FOREIGN KEY (`disciplina_cod_disciplina`) 
 REFERENCES `dbunidbsco`.`disciplina` (`cod_disciplina`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`aluno` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`aluno` ( 
 `cod_aluno` INT NOT NULL AUTO_INCREMENT, 
 `nome_aluno` VARCHAR(100) NOT NULL, 
 `sobrenome_aluno` VARCHAR(100) NOT NULL, 
 `sexo` VARCHAR(45) NOT NULL, 
 `filiacao` VARCHAR(150) NOT NULL, 
 `cpf` VARCHAR(45) NOT NULL, 
 `endereco` VARCHAR(200) NOT NULL, 
 `status` VARCHAR(100) NOT NULL, 
 `telefone` INT(11) NOT NULL, 
 `telefone2` INT(11) NULL, 
 `contato` VARCHAR(100) NOT NULL, 
 `contato2` VARCHAR(100) NULL, 
 `turma_cod_turma` INT NOT NULL, 
 `curso_cod_curso` INT NOT NULL, 
 PRIMARY KEY (`cod_aluno`, `turma_cod_turma`, `curso_cod_curso`), 
 UNIQUE INDEX `cpf_UNIQUE` (`cpf` ASC) , 
 UNIQUE INDEX `cod_aluno_UNIQUE` (`cod_aluno` ASC), 
 INDEX `fk_aluno_turma1_idx` (`turma_cod_turma` ASC), 
 INDEX `fk_aluno_curso1_idx` (`curso_cod_curso` ASC), 
 CONSTRAINT `fk_aluno_turma1` 
 FOREIGN KEY (`turma_cod_turma`) 
 REFERENCES `dbunidbsco`.`turma` (`cod_turma`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION, 
 CONSTRAINT `fk_aluno_curso1` 
 FOREIGN KEY (`curso_cod_curso`) 
 REFERENCES `dbunidbsco`.`curso` (`cod_curso`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`aluno_disciplina` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`aluno_disciplina` ( 
 `aluno_cod_aluno` INT NOT NULL, 
 `disciplina_cod_disciplina` INT NOT NULL, 
 PRIMARY KEY (`aluno_cod_aluno`, `disciplina_cod_disciplina`), 
 INDEX `fk_aluno_has_disciplina_disciplina1_idx` (`disciplina_cod_discip
lina` ASC), 
 INDEX `fk_aluno_has_disciplina_aluno1_idx` (`aluno_cod_aluno` ASC), 
 CONSTRAINT `fk_aluno_has_disciplina_aluno1` 
 FOREIGN KEY (`aluno_cod_aluno`) 
 REFERENCES `dbunidbsco`.`aluno` (`cod_aluno`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION, 
 CONSTRAINT `fk_aluno_has_disciplina_disciplina1` 
 FOREIGN KEY (`disciplina_cod_disciplina`) 
 REFERENCES `dbunidbsco`.`disciplina` (`cod_disciplina`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`historico` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`historico` ( 
 `cod_historico` INT NOT NULL AUTO_INCREMENT, 
 `periodo_realizacao` TIME NOT NULL, 
 `aluno_cod_aluno` INT NOT NULL, 
 PRIMARY KEY (`cod_historico`, `aluno_cod_aluno`), 
 INDEX `fk_historico_aluno1_idx` (`aluno_cod_aluno` ASC), 
 CONSTRAINT `fk_historico_aluno1` 
 FOREIGN KEY (`aluno_cod_aluno`) 
 REFERENCES `dbunidbsco`.`aluno` (`cod_aluno`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
 
-- ----------------------------------------------------- 
-- Table `dbunidbsco`.`disciplina_historico` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `dbunidbsco`.`disciplina_historico` ( 
 `nota` INT NOT NULL, 
 `frequencia` INT NOT NULL, 
 `historico_cod_historico` INT NOT NULL, 
 `disciplina_cod_disciplina` INT NOT NULL, 
 PRIMARY KEY (`historico_cod_historico`, `disciplina_cod_disciplina`), 
 INDEX `fk_disciplina_historico_disciplina1_idx` (`disciplina_cod_discip
lina` ASC), 
 CONSTRAINT `fk_disciplina_historico_historico1` 
 FOREIGN KEY (`historico_cod_historico`) 
 REFERENCES `dbunidbsco`.`historico` (`cod_historico`) 
 ON DELETE NO ACTION 
 ON UPDATE NO ACTION, 
 CONSTRAINT `fk_disciplina_historico_disciplina1` 
 FOREIGN KEY (`disciplina_cod_disciplina`) 
 REFERENCES `dbunidbsco`.`disciplina` (`cod_disciplina`) 
 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;

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais