E aí [Música] E aí eu não sei agora uma série de 6 vídeo aulas sobre o conceito de normalização para vão te dar os relacionados então vou fazer uma introdução sobre assunto depois falar sobre diretrizes de projeto apresentar o conceito de dependências funcionais e finalizar e com as formas normais e normalização nessa primeira vídeo aula eu vou fazer uma introdução sobre o assunto e falar sobre as diretrizes de projeto e quando se constroem um projeto de uma cidade relacional é nós precisamos de uma forma para avaliar se esse projeto tá realmente bom ou não então
a ideia desse assunto é hétero objetivo aí de avaliar a qualidade do projeto de esquemas de relações por meio de medidas formais nós temos aí dois níveis de boas práticas aí para criar esses esquemas um ano nível lógico ou conceitual que está relacionado a como interpretar o esquema e relações e o significado de seus atributos e o outro nível de implementação o armazenamento físico O que é com as tuplas são armazenadas e atualizados é bem nós temos aí dois objetivos implícitos que são apresentação da informação que é Matheus conceitos aí capturada Originalmente no modelo conceitual
EA redundância mínima está relacionada aí a questão de diminuiu o armazenamento redundante da mesma informação mas nunca redundante é quando eu armazeno o mesmo dado em mais uma vez de forma repetida dentro da mesma relação ou em relação à diferença e é com isso eu quero reduzir a necessidade de múltiplas atualizações Tá bom vou falar também sobre o conceito de independência funcional que é necessário aí Fran para a gente entender o assunto formalizar o assunto é dependência funcional é a principal ferramenta para medir aí formalmente adequação às dos tributos do grupo de atributos dentro de
um esquema de relação a normalização é mas assim de dados é uma série de testes nessas relações para verificar se elas atendem aos requisitos das formas normais que a gente vai introduzir aqui e se não atender é nós vamos ter compôs relações de forma aquelas peças atender os requisitos é bom para entender o assunto vamos falar primeiro sobre diretrizes de projeto ou seja são algumas medidas aí algumas diretrizes informais e pra gente poder medir a qualidade de um projeto que ele ficar o com bom ele está basicamente a gente tem quatro represas informais que estão
relacionadas aí é a garantir a semana semântica dos atributos que essa semântica dos outros você seja clara e no esquema das relações e é reduzir a informação redundante nas duplas reduzir os valores nulos nas tumbas e reprovaram EA possibilidade gerado pelas formas nós vamos entender passo a passo cada um desses tópicos tô conversando aqui com a semântica dos atributos nas relações bom então a ideia da semântica dos atributos é interpretar o significado desse atributo é o Projeto aí do esquema ele deve ter um significado claro que deve ser fácil de explicar por exemplo quando eu
tenho um esquema igual a esse onde as relações são divididas aqui um funcionário porque tem os dados realmente dos funcionários e um aqui para fazer um relacionamento com o departamento que trabalha na relação do trabalho departamento que eu tenho os dados do departamento seu número e nome e uma tributo para fazer relacionamento com o funcionário para dizer que quem é o gerente de funcionário do departamento tem várias localizações Então aqui tem os dados atualização aqui tem dado de projeto dos funcionários que trabalham em cada projeto tão se eu conseguir explicar isso de forma fácil bom
então é um bom disso aí que o projeto também feito então deve ser fácil explicar significado de das relações seus atributos e práticas ruins seriam por exemplo Connect coloca Flag cria uma tributo numa relação e diga a si se o valor for zero Então o próximo valor significa tal coisa se for um Então significa outra coisa então esse tipo de tributo não é bom não é uma boa prática fazer isso é um projeto usar também nomes amigos que tem duplo significado e esteja se explicar entender é fazer união de relações que são semanticamente distintas por
exemplo colocar dados e funcionários do apartamento na mesma relação nesse não é é é todas essas aqui não são boas práticas e indico aí projetos ruim é a concorrência a gente pode definir a diretriz um que seria que diz o seguinte projeto esquema de relação de modo que seja fácil de explicar o seu significado não combine atributos e vários tipos de entidade e relacionamento em uma única relação o Tom está relacionada essas duas questões estão aqui nós temos um exemplo que viola essa diretriz um ou seja não está de acordo com esse diretriz um quando
eu coloco a por exemplo aqui no item a é os dados tanto de funcionário quanto de departamento uma mesma tabela então isso vai contra essa diretriz não a mesma forma que tem uma uma tabela que tem os dados tanto funcionários quanto os projetos em que eles trabalham tudo numa mesma relação e também não é uma boa prática está violando essa diretriz um é bom agora questão da informação redundante nas tuplas relacionadas espaço de armazenamento ele deve ser usado depois as relações e tem que ser minimizada seja quanto menos espaço melhor Ah é Então a gente
pode comparar por exemplo os dados dessa tabela aqui com os dados utilizados quando eu tenho duas tabelas separadas funcionários departamento como nesse exemplo anterior que ama onde eu tenho os dados de funcionário na tabela o nome CPF data de nascimento endereço e o número do apartamento que trabalha depois na outra tabela do apartamento eu tenho nome do departamento número de CPF gerente está em duas relações separadas o seu junto essas relações criando a tabela e a func dep com todos os dados de funcionário e também de departamento eu crio é dados redundantes então por exemplo
aqui ó se o primeiro funcionário João João Silva trabalha no departamento número 5 esse apartamento cinco se chama pesquisa e tem esse gerente e quando eu vou colocar o segundo o funcionário aqui o ônibus o Fernando o homem também trabalhando apartamento cinco aí eu repito aqui o nome e repita STF gerente mesma coisa aqui ó os apartamento quatro Parece duas vezes contatos repetidos os cinco volta aqui de novo com o mesmo nome mesmo CPF gerente então eu tenho aqui informações redundantes eu tô repetindo aqui esse nome e CPF diversas vezes também o número nesse caso
aqui eu tô isso é além de desperdiçar espaço para armazenar esses dados repetidos ele gera um outro problema Pior que é a redundância dos dados e essa redundância ela leva as chamadas anomalias de atualização e vão entender melhor as cansei de análise atualização e eu tenho posso dividir essa análise atualização e análise exceção diz que usam e de notificação bom então por exemplo no caso da dar uma lida em sessão está relacionada ao fato é o próximo problemas que eu tenho quando vou inserir dados em uma tabela como Aquela func dep então se eu quiser
inserir uma nova to play from que Depp os dados do departamento que são nome e CPF gerente eles devem ser coerente com os valores dos apartamentos nas outras turmas então por exemplo que o seu foi inserir um novo funcionário aqui que trabalha para o departamento 1 e eu tenho que ir colocar aqui o mesmo na onde departamento que é matriz e o mesmo CPF gerente eu não posso de forma nenhuma fazer nenhuma modificação nesses dados porque senão eu perco a coerência consistência dos dados e agora aí vem o problema como é que eu insiro o
novo apartamento que ainda não tem funcionários trabalhando nele bom então por exemplo se eu quero inserir ainda apartamento número 2 que não tá aqui eu não posso inserir só metade dos Estados aqui de uma tupla eu tenho que seria uma turma completa então precisaria ter algum funcionário que trabalha nesse apartamento que eu consegui inserir o departamento é um projeto dessa forma eu não consigo fazer isso é bom em relação aliás exclusão imagina que o que eu vá excluindo ali que eu quero excluir da você essa tabela é quando eu exclui o último funcionário de um
departamento o departamento também é automaticamente excluído por exemplo e aqui eu só tenho um funcionário trabalhando departamento um que a matriz se eu excluir esse funcionário Brito Jorge Brito eu eu também só posso excluir todas inteiras não tem como escolher metade na tampa bom então se eu excluir essa Funcionário é automaticamente estou excluindo o departamento um que a matriz eu perco esses ossos e você também é um problema e em relação a notificação imagina que o gerente de um departamento naquela tabela é modificado então todas as turmas de funcionários do mesmo departamento tem que ser
também atualizado uma por exemplo aqui ó o modifica o gerente do departamento 5 o que tem e CPF agora vai passar o seu outro funcionário então se eu modificar esse se eu quero modificar tem uma espécie todas as linhas que tem que departamentos em ter mudar aqui tem que mudar aqui tem que contar aqui e aqui se eu deixar de Mudar em um deles aí eu tenho 25 é diferente para o gerente do mesmo departamento geral ele gera uma inconsistência nos dados Então por aí dá para gente perceber como é complicado é um projeto dessa
forma que que mistura dados aqui de duas tabelas que deveriam estar separado então é um problema sério em quantidades é porque é torna difícil exceção explosão e notificação de dados e pode gerar inconsistências e se não for feito corretamente a pensar o que é o principal problema da redundância de dados G1 Oi gente leva a nossa diretriz dois que diz o seguinte projeto esquemas relação de modo a evitar as na análise em sessão exclusão notificação em pó na prática Às vezes a gente precisa violar essa essa diretriz por algum motivo por exemplo melhor desempenho de
certas consultas quando a gente vai quebrando aí muitas tabelas às vezes na hora de montar uma consulta isso acaba ficando ineficiente Mas é isso pode ser feito Desde que seja feita de forma Consciente e você document todo o processo para garantir que as aplicações vão garantir a consistência dos dados Então essa consciência deve ser feita pelos programas de aplicação pode ser feita também por meio de trilhas e estampas simples o melhor mesmo o que é realmente aconselhável é você usar relações aí de base Sem Análise e criar visões os rios que inclui então junções aí
para reunir os atributos que frequentemente são referenciados nos consultas importantes bom então por exemplo essa tabela aqui poderia ser o resultado de uma visão poderia ter a tabela funcionário e a tabela dependente apartamento de forma separado e criar uma uma visão que junte os dados das duas tabelas dessa forma e aí usar essas visões as consultas e isso seria o mais indicado é bom em relação aos valores nulos nas tuplas Oi lulu minhas Kelly né gente aprende com um nó o que eu tenho inglesa tem um valor que significa um valor desconhecido se ele é
um valor desconhecido ele não pode ser comparado a outros valores Ou seja eu não posso comparar por exemplo verificar se o nulo é maior que 5 ou menor que 5 = 5 Ele simplesmente desconhecido eu não posso afirmar nada sobre não é maior nem menor negócio bom então você pode gerar grandes problemas né e essa o nulo pode ter várias interpretações e ele é um atributo que não se aplica aquela to plan ou o valor realmente é desconhecido ou era conhecido mas ainda não foi registrado bom então criar o valor dos números é desperdício espaço
interno de armazenamento e é ele pode apresentar problemas aí com especificação de operações de junção ele complica as consultas por causa da interpretação do significado pode ter pode ter os programadores podem a interpretações diferentes aqui e acaba criando consultas que não seriam realmente os desejados então a gente deve tá valores nulos nas tripas Oi Valdir é 33 Jesus seguinte evite qualquer atributo é uma relação com os valores podem ser nulos com frequência é claro que exceções é acabam sendo necessárias mas é quando ele se torna muito frequente É melhor evitar o pão por exemplo uma
situação que poderia evitar valores novos funk na tabela funcionário eu queira armazenar lá o número do escritório de cada funcionário só que somente quinze por cento os funcionários tem o número do escritório os outros não têm então se eu colocar o nome de escritório na tabela funcionário a maioria 85 porcento das tuplas não tem valores nulos para não de escritório que não é uma boa prática o melhor seria então criar uma nova relação a gente chamado fundo escritório com os atributos ser perto funcionário no escritório e aí então essa relação eu vou incluir apenas as
tuplas dos funcionários que tem escritórios Torres evitaria eu ter um outro boto no escritório na tabela funcionário que não olho das vezes seria nula é bom e a quarta questão relacionadas diretrizes é a questão da geração de tuplas falsas é suponha um esquema de relações com esse aqui ó eu tenho uma reação chamada fonte local que tem o nome do funcionário e o atualização dos do projeto que trabalha as duas juntas são aqui uma chave primária eu tenho outra relação que tem funcionário projeto que diz aqui é os dados o CPF do funcionário o número
do projeto que trabalha Esse é o nome horas que eu trabalho naquele projeto o nome do projeto EA localização do projeto é bom Celsius as essas tabelas e que suas relações foram povoadas com os dados que estão no próximo slide esse aqui então ela tem os dados aqui dos Funcionários tá dando da localizado no projeto quem trabalha e aqui nas Com certeza funcionar ou não do projeto não via horas nome do projeto é localização e não se ocorre que eu tenho esses dados aqui ó E se eu aplicar uma junção natural entre essas relações O
resultado é mostrado no episódio seguinte e é que seria a junção natural já são natural é a juntar essa tabela se for um atributo que tem o mesmo nome aqui em casa que é a localização do projeto bom então se eu aplicar isso nessa nessa tabela aqui ó então por exemplo o João Silva o que trabalha em Santo André e eu vou juntar criar uma relação com o nome do projeto aqui Santo André Então eu vou criar uma relação que tem todos os lados aqui João Silva Santo André mas esse CPF já estou um 32
e 6 horas é projeto x Santo André ó e Vai juntar também com todos os gastos tivesse em Santo André tão Por exemplo essa linha aqui tem Santo André no produto x 20 horas é que a outra CPF e é tão junção natural combinadas e dariam um resultado assim e nesse caso para não ficar muito grande exemplo a tá mostrando só a junção entre as linhas que estão Acima das Ostras fechadas aqui dessa tabela com essa outra tabela que a senha outra fechado a combinação dessas essas duas pela ação natural aqui daria esse resultado é
bom acontece quando eu faço isso vamos voltar aqui nesse slide você aplicar a junção natural entre essas relações o resultado produce chamadas tuplas falsas são aquelas que são marcados com asterisco é o quê que isso acontece porque o outro boto prod local não é chave primária e nem chave estrangeira que nenhuma das tabelas Então não é muito adequado fazer junção é o atributo que não são chave bom então isso gera Tu parece falsas por exemplo aqui todos que tão marcados com asterisco aqui significa que são tuplas que realmente não existiria nessa junção não fazem sentido
aqui elas estão aqui só porque é foram combinadas pelo nome da localização do projeto Mas é por exemplo aqui tá falando do projeto do Projeto X em Santo André no funcionário que trabalha 32 5:00 no projeto um mas Observe que são a e eu serve que são de funcionários diferentes aqui ó o som Silva e a Joyce leite Ah é Então essa segunda linha aqui ela não faz sentido que ela tá sobrando é uma chamada dupla falsa Ah tá combinando dados que não são da Joice com é por causa da localização do projeto dela que
não no mesmo local mas são chamadas as tuplas falsas então é a gente não deve e sempre que eu puder sempre que eu tiver da desmembrados assim relações E se eu fizer a junção natural e e essa junção natural gera dados falsos Então é isso não é isso é um problema aí no projeto Avante da surpresa não tá bom sem ficar essas relacionam estão bem para já tá nesse com duas aqui a nossa Diretriz quatro que diz projeto esquemas relação de modo que possam ser unidos com condições de igualdade sobre os atributos que são pares
relacionados corretamente ou seja de uma chave primária na tabela com chave estrangeira na outra que mora que de modo a garantir que nenhuma tupla falsa será gerada bom então a atenção das ela gosta de roça E aí