<p><img src="https://i.imgur.com/D01Fpky.png" alt="" title="Entre no nosso site e veja nossos cursos"></p> <h1> <img class="emoji" alt="" src="https://image.flaticon.com/icons/png/128/2906/2906274.png"> BD Essencial - Conceitos Gerais </h1> <p>O objetivo desse curso &eacute; capacitar o aluno a entrar no mercado de trabalho executando as atividades primordiais que s&atilde;o solicitadas no desenvolvimento, manuten&ccedil;&atilde;o, ou atualiza&ccedil;&atilde;o de bancos de dados dos mais diferentes tipos de sistemas.</p> <p>Focamos na execu&ccedil;&atilde;o, e n&atilde;o em cria&ccedil;&atilde;o de diagramas - atividade essa que &eacute; desenvolvida por profissionais mais experientes.</p> <p>Nas nossas prieiras aulas, utilizamos o Gerenciador de Bancos de Dados Relacionais <strong>MySQL</strong> nesse nosso curso de Banco de Dados Essencial, porque essa ferramenta &eacute; gratuita e de f&aacute;cil utiliza&ccedil;&atilde;o - entretanto, todo o nosso conte&uacute;do pode ser aplicado em qualquer Gerenciador de Bancos de Dados Relacionais, apenas com algumas m&iacute;nimas diferen&ccedil;as.</p> <p>Na segunda parte do curso, utilizamos o Gerenciador de Bancos de Dados Relacionais <strong>PostgreSQL</strong>.</p> <h2>Conceitos Gerais</h2> <p>Primeiramente, precisamos abordar os principais conceitos de nosso objeto de estudo:</p> <ul> <li><strong>Banco de Dados Relacional</strong>: &eacute; um BD feito seguindo o modelo de entidades e relacionamentos, criado na segunda metade da d&eacute;cada de 1970;</li> </ul> <ul> <li><strong>Entidades</strong>: s&atilde;o as tabelas do banco de dados que cont&eacute;m os dados que concebemos como necess&aacute;rios ao nosso neg&oacute;cio e ao seu funcionamento;</li> </ul> <ul> <li><strong>Relacionamenos</strong>: s&atilde;o tabelas criadas com o principal objetivo de realizar a liga&ccedil;&atilde;o entre tabelas diferentes para armazenar dados que, se fossem armazenados em entidades, deixariam os bancos de dados lentos e ocupando um espa&ccedil;o em disco muito maior.</li> </ul> <p>&nbsp;</p> <p><h3>Exemplo de Relacionamento</h3>:</p> <p>Na figura abaixo, vemos que o relacionamento <em>ItemPedido</em>, relaciona um produto e um pedido atrav&eacute;s de dados dessas duas tabelas, no caso <em>id_Pedido</em> e <em>id_Produto</em>, e adiciona alguns dados pertinentes ao pedido, como a quantidade de cada item. Em amarelo, em todas as tabelas, representamos outros campos que elas teriam num sistema real. [Para simplificarmos, nesse momento, não discutimos sobre como deveria ser a chave primária do relacionamento <em>ItemPedido</em>]</p> ![](https://i.imgur.com/S5lBvgY.jpg) <p><br /><h4>Chave Prim&aacute;ria</h4></p> <p>Cada registro, ou seja cada linha em cada tabela de um banco de dados, precisa de um campo, ou seja de uma coluna, que identifique aquele registro de forma &uacute;nica. Por exemplo, cada um de n&oacute;s possui um CPF, que nos identifica como pessoa f&iacute;sica - dessa forma, duas pessoas podem ter o mesmo nome, mas seus CPFs ser&atilde;o diferentes.</p> <p><h4>Chave Estrangeira</h4></p> <p>Uma chave &eacute; chamada de chave estrangeira quando ela &eacute; um dado que veio de uma outra tabela. No caso do exemplo da figura abaixo, as chaves estrageiras seriam <em>id_Pedido</em> e <em>id_Produto</em>, no relacionamento <em>ItemPedido</em>, ou seja, esses dados foram importados de outras tabelas, no caso, das tabelas Produto e Pedido.</p> ![](https://i.imgur.com/S5lBvgY.jpg) <h2> Normalização em Bancos de Dados </h2> <p> Normalização é o processo de criar e modelar o banco de dados projetando a forma como as informações serão armazenadas a fim de eliminar, ou pelo menos minimizar, a redundância de dados entre as tabelas do banco. Tal procedimento é feito a partir da identificação de uma anomalia em uma ou mais tabelas, decompondo-as em tabelas melhor estruturadas. </p> <h3> Primeira Forma Normal </h3> <p> Dizemos que uma tabela se encontra a 1ª forma normal, quando ela não tem nenhum atributo que contenha uma lista de dados. O exemplo clássico é o campo "telefones", onde haveria vários telefones de contato, separados por vírgula. </p> <p> Como veremos, o procedimento é o de criar um relacionamento contendo, por exemplo, id_Cliente e um número de telefone. Assim, um mesmo id_Cliente apareceria várias vezes, mas o campo telefone teria como conteúdo apenas um dado e não uma lista. </p> <p> Devemos adotar a mesma estratégia quando tivermos um atributo multivalorado, como endereço. Endereço não é um atributo isolado - ele pode ser decomposto em logradouro, CEP, bairro, cidade e estado. Também devemos criar um relacionamento para armazenar esses dados, como veremos mais adiante. </p> <h3> Segunda Forma Normal </h3> <p> Dizemos que uma tabela está na segunda forma normal, quando ela está na 1º forma normal, e todos os seus dados dependem apenas da chave primária da tabela. </p> <p> Na figura abaixo, os dados da tabela devem ser dependentes apenas da chave primária, que é a de locação de filme. O título do filme deve ficar na tabela que contém os dados do filme e não os dados da locação do filme. </p> ![](https://i.imgur.com/W3MtNys.jpg) <br> <h3> Terceira Forma Normal </h3> <p> Uma tabela que está na 3ª forma normal, precisa estar na 1º e na 2ª formas normais. </p> <p> Identificamos uma tabela como não sendo da 3ª forma normal quando ela possui uma relação 1-1 "dentro dela", ou seja, quando ocorre uma redundância de dados em função de uma dependência entre esses dados e um campo não-chave. </p> <p> O exemplo clássico é o da tabela Carro. Cada carro tem apenas um fabricante, mas se registrássemos os dados do fabricante na tabela Carro, todos esses dados iriam aparecer sempre que um carro fosse daquele fabricante: redundância de dados em função de uma dependência entre esses dados e um campo não-chave - no caso, o campo fabricante. A solução para isso é criar um Relacionamento 1-1 entre a tabela Carro e a tabela Fabricante - onde cada carro teria um id_Fabricante. </p> <h3> Quarta Forma Normal </h3> <p> Uma tabela que está na 4ª forma normal, precisa estar na 1º, na 2ª, e na 3ª formas normais. </p> <p> Identificamos uma tabela como não sendo da 4ª forma normal quando ela possui uma [ou mais] relações 1-n "dentro dela", ou seja, quando ocorre mais de uma redundância de dados em função de uma dependência entre esses dados e um campo não-chave. </p> <p> O exemplo clássico seria o de uma tabela contendo dados de música, intérprete e CD. Não apenas uma música pode ser gravada por mais de um intérprete, como também pode aparecer em mais de um CD, e finalmente, pode aparecer em mais de um CD de um mesmo intérprete. </p> <p> A solução é criarmos dois relacionamentos 1-n. Música relacionando-se com Intérprete em um relacionamento; e música se relacionando com CD em outro. Minimizando as redundâncias de dados. </p> ![](https://i.imgur.com/0iq1yAa.jpg) ![](https://i.imgur.com/X6c0elv.jpg) <h3> Tipos de Dados Numéricos do MySQL </h3> <p> Na tabela abaixo vemos os tipos da dados numéricos aceitos no MySQL. Utilizamos, BIT ou TINYINT(1) para armazenar um campo booleano. Além dessa situação, os mais utilizados são TINYINT, INT, e DOUBLE. Por padrão, os campos admitem números com sinal, portanto, o padrão [default] é SIGNED. </p> ![](https://i.imgur.com/ctbQVW0.png) <p><br />Com esses conceitos preliminares, j&aacute; podemos abrir o <strong>MySQL</strong> e come&ccedil;ar nossos trabalhos.</p> <!-- <blockquote style="border-left-color: red;"> <p><span class="color" data-color="red"></span><span> </span><small><i class="fa fa-user"></i> Prof Fernando Gomes - fernandojnr@gmail.com</small></p></blockquote> <h2 id="-Tema-da-aula" data-id="-Tema-da-aula"><a class="anchor hidden-xs" href="#-Tema-da-aula" title="-Tema-da-aula"><span class="octicon octicon-link"></span></a><img class="emoji" alt=":book:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/book.png"> <span> Tema da aula:</span></h2><span> --> <blockquote style="border-left-color: red;"> <p><span class="color" data-color="red"></span><span> </span><small><i class="fa fa-user"></i> Prof Fernando Gomes - fernandojnr@gmail.com</small></p></blockquote> <br> <div class="alert alert-info"> <blockquote style="border-left-color: blue;"> <p><span class="color" data-color="blue"></span><span> </span><small><i class="fa fa-user"></i> E.B. Cursos https://www.cursoseb.com.br/</small><br> <span class="color" data-color="blue"></span><span> </span><small><i class="fa fa-user"></i> E.B. Cursos EAD https://edsonbelemtreinamento.com.br/ead/</small></p> </blockquote> </div>