diff --git a/alunos/abraao-junior/tarefa-01.md b/alunos/abraao-junior/tarefa-01/tarefa-01.md similarity index 94% rename from alunos/abraao-junior/tarefa-01.md rename to alunos/abraao-junior/tarefa-01/tarefa-01.md index fb99308..7f35859 100644 --- a/alunos/abraao-junior/tarefa-01.md +++ b/alunos/abraao-junior/tarefa-01/tarefa-01.md @@ -1,6 +1,6 @@ # **Apresentação Pessoal** -Olá. Meu nome é Abraão da Silva Junior, tenho 34 anos, sou de Parnamirim/RN, estou me formando no curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas no Centro Universitário de João Pessoa (UNIPÊ) -e estou em proceso de transição de carreira para esta área. Iniciar essa graduação despertou em mim o interesse pela tecnologia, em especial, programação. Com isso tenho buscado cursos e orientações de quem já atua na área +Olá. Meu nome é Abraão da Silva Junior, tenho 34 anos, sou de Parnamirim/RN. Estou me formando no curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas no Centro Universitário de João Pessoa (UNIPÊ) +e estou em processo de transição de carreira para esta área. Iniciar essa graduação despertou em mim o interesse pela tecnologia, em especial, programação. Com isso tenho buscado cursos e orientações de quem já atua na área para poder ingressar na carreira de Desenvolvedor Back-end em Java. --- @@ -32,7 +32,7 @@ A normalização é um processo de organização do banco de dados que segue um __1ª Forma Normal (1FN)__: Eliminar dados repetidos e garantir atomicidade. Cada linha com um valor único e cada coluna sem valores compostos; -__2ª Forma Normal (2FN)__: Eliminar dependência parciai. Cada coluna não chave deve depender da chave-primária inteira (no caso de chave-primária composta). +__2ª Forma Normal (2FN)__: Eliminar dependência parcial. Cada coluna não chave deve depender da chave-primária inteira (no caso de chave-primária composta). __3ª Forma Normal (3FN)__: Eliminar dependência transitiva. Coluna não chave não deve depender de outra coluna não chave. diff --git a/alunos/abraao-junior/tarefa-02/DiagramaBDloja.png b/alunos/abraao-junior/tarefa-02/DiagramaBDloja.png new file mode 100644 index 0000000..c44577e Binary files /dev/null and b/alunos/abraao-junior/tarefa-02/DiagramaBDloja.png differ diff --git a/alunos/abraao-junior/tarefa-02/tarefa-02.md b/alunos/abraao-junior/tarefa-02/tarefa-02.md new file mode 100644 index 0000000..4a2db3c --- /dev/null +++ b/alunos/abraao-junior/tarefa-02/tarefa-02.md @@ -0,0 +1,93 @@ +# __Violação das Formas Normais__ + +### __1ª Forma Normal__ + +Para uma tabela estar na 1FN precisa ter valores atômicos (não divisíveis), o que não é o caso da tabela 'pedidos', pois, o atributo 'endereco_entrega' é um atributo composto +e pode ser desmembrado em mais de uma informação. Já o atributo 'cliente_telefone' e 'fornecedor_telefone', embora não sejam multivalorados, há a possibilidade de se tornarem, a partir do momento em que o cliente ou fornecedor informe mais de um número de telefone. + +### __2ª Forma Normal__ + +A tabela 'pedidos' não pode estar na 2FN, pois ela precisa estar na 1FN e que atributos não chave dependam da chave primária completa (no caso de chaves primárias compostas). + +### __3ª Forma Normal__ + +Na 3FN, além de obedecer à 1FN e a 2FN, não pode haver atributos não-chave que dependam de outro atributo não-chave, ou seja, dependência transitiva, como vemos na tabela 'pedidos' que o atributo 'produto_preco' depende do atributo 'produto_nome'. + + +## __Correção da tabela 'pedidos'__ + +Script SQL usado para criar tabelas corrigidas: + +-- CREATE TABLE `cliente` ( +`id_cliente` int NOT NULL AUTO_INCREMENT, +`nome_cliente` varchar(150) NOT NULL, +PRIMARY KEY (`id_cliente`) +); + +--CREATE TABLE `telefone_cliente` ( +`id_cliente` int NOT NULL AUTO_INCREMENT, +`num_telefone` varchar(15) NOT NULL, +KEY `telefone_cliente_cliente_FK` (`id_cliente`), +CONSTRAINT `telefone_cliente_cliente_FK` FOREIGN KEY (`id_cliente`) REFERENCES `cliente` (`id_cliente`) +); + +--CREATE TABLE `endereco_entrega` ( +`logradouro` varchar(200) NOT NULL, +`numero` int NOT NULL, +`endereco_id` int NOT NULL AUTO_INCREMENT, +PRIMARY KEY (`endereco_id`) +); + +--CREATE TABLE `fornecedores` ( +`id_fornecedor` int NOT NULL AUTO_INCREMENT, +`nome_fornecedor` varchar(100) DEFAULT NULL, +PRIMARY KEY (`id_fornecedor`) +); + +--CREATE TABLE `telefone_fornecedor` ( +`id_fornecedor` int NOT NULL, +`num_telefone` varchar(150) NOT NULL, +KEY `telefone_fornecedor_fornecedores_FK` (`id_fornecedor`), +CONSTRAINT `telefone_fornecedor_fornecedores_FK` FOREIGN KEY (`id_fornecedor`) REFERENCES `fornecedores` (`id_fornecedor`) +); + +CREATE TABLE `produtos` ( +`id_produto` int NOT NULL AUTO_INCREMENT, +`nome_produto` varchar(100) NOT NULL, +`preco_produto` decimal(10,2) NOT NULL, +`id_fornecedor` int NOT NULL, +PRIMARY KEY (`id_produto`), +KEY `produtos_fornecedores_FK` (`id_fornecedor`), +CONSTRAINT `produtos_fornecedores_FK` FOREIGN KEY (`id_fornecedor`) REFERENCES `fornecedores` (`id_fornecedor`) +); + +--CREATE TABLE `pedidos` ( +`pedido_id` int NOT NULL AUTO_INCREMENT, +`id_cliente` int NOT NULL, +`endereco_id` int NOT NULL, +PRIMARY KEY (`pedido_id`), +KEY `pedidos_cliente_FK` (`id_cliente`), +KEY `pedidos_endereco_entrega_FK` (`endereco_id`), +CONSTRAINT `pedidos_cliente_FK` FOREIGN KEY (`id_cliente`) REFERENCES `cliente` (`id_cliente`), +CONSTRAINT `pedidos_endereco_entrega_FK` FOREIGN KEY (`endereco_id`) REFERENCES `endereco_entrega` (`endereco_id`) +); + +--CREATE TABLE `itens_pedido` ( +`itens_id` int NOT NULL AUTO_INCREMENT, +`id_pedido` int NOT NULL, +`id_produto` int NOT NULL, +`quantidade` int NOT NULL, +`valor_unidade` decimal(10,2) NOT NULL, +PRIMARY KEY (`itens_id`), +KEY `itens_pedido_pedidos_FK` (`id_pedido`), +KEY `itens_pedido_produtos_FK` (`id_produto`), +CONSTRAINT `itens_pedido_pedidos_FK` FOREIGN KEY (`id_pedido`) REFERENCES `pedidos` (`pedido_id`), +CONSTRAINT `itens_pedido_produtos_FK` FOREIGN KEY (`id_produto`) REFERENCES `produtos` (`id_produto`) +); + +Estas novas tabelas corrigem os problemas que a tabela pedidos tinha inicialmente, pois separa os atributos em suas respectivas tabelas, cada uma com sua chave primária e os atributos não-chave dependendo do atributo chave de sua tabela. +Dessa forma também é possível criar os relacionamentos entre as tabelas através da chave estrangeira. + +Print DER: + +![Diagrama-BD-loja](DiagramaBDloja.png) \ No newline at end of file diff --git a/alunos/abraao-junior/tarefa-03/frase.txt b/alunos/abraao-junior/tarefa-03/frase.txt new file mode 100644 index 0000000..138c189 --- /dev/null +++ b/alunos/abraao-junior/tarefa-03/frase.txt @@ -0,0 +1 @@ +Meu gatinho tomou leite e ficou feliz! \ No newline at end of file diff --git a/alunos/abraao-junior/tarefa-03/tarefa-03.md b/alunos/abraao-junior/tarefa-03/tarefa-03.md new file mode 100644 index 0000000..cbfe48d --- /dev/null +++ b/alunos/abraao-junior/tarefa-03/tarefa-03.md @@ -0,0 +1,6 @@ +# Explicação + +- Para iniciar essa atividade eu criei uma branch de feature, que é usada para desenvolver novas funcionalidades no projeto, e criei um novo diretório com o arquivo `frase.txt`. Após esta etapa, criei uma branch de release (usada para criação de novas versões) e modifiquei o conteúdo do arquivo. Fiz o merge da branch release na branch main, e a partir desta, criei a branch hotfix (para correção de bugs) e ajustei o conteúdo do arquivo `frase.txt` e fiz o merge novamente na branch main. + + +- Na realização desta tarefa eu pude entender um pouco do funcionamento do Gitflow, seja ao criar novas funcionalidades, fazer uma atualização ou corrigir um bug, cada ação em uma branch apropriada, trazendo organização e melhor entendimento do trabalho e tudo isso sem afetar a branch principal, ou seja, uma maneira segura de produção. \ No newline at end of file