E aí [Música] E aí sua postura Duarte Santarém nós vamos dar continuidade 920 banco de dados hoje não se trata especificamente sobre a primeira parte de normalização O que que a normalização da análise no processo de qualificar o nosso projeto de banco de dados E aí nós vamos ver que a gente tem algumas regras algumas tarefas para fazer para poder melhorar o processo de qualidade do nosso banco de dados a primeira coisa que a gente tem que saber quando a gente vai falar de qualidade vai falar de normalização é justamente que são as dependências funcionais
e o que a dependência funcionar uma restrição imposta a dois conjuntos de atributos de um banco de dados essa restrição é é definida pelo projeto no banco de dados e como que ele faz isso a partir da observação do mundo real olhando para o mundo real ele consegue a partir disso né trazer essas dependências funcionais para o banco de dados Então na verdade é uma ferramenta que permite estabelecer uma formalização para avaliação de qualidade do nosso projeto de banco de dados e eu quero mostrar aqui começar mostrando um é sobre dependência funcional pra gente compreender
como é que funciona a dependência funcional então Aqui nós temos um esquema de banco de dados relacional né E esse esquema que eu chamei de Universal tem os atributos A B C e D então quando a gente olha para esse esquema de banco de dados Oi e a gente tem aqui é a estrutura Nossa o esquema do banco de dados Universal Aqui nós temos uma Instância desse banco de dados percebam que eu trouxe aqui informações com pouca semântica que a justamente para se caracterizar semântica eu quero mostrar para vocês a partir do que a partir
da compreensão de uma estrutura básica com um conjunto de dados básicos em relação a língua para vocês conseguirem compreender melhor o que é dependência funcional aqui a gente tem olha só eu tenho um bebê que leva a ser tão quantas vezes que vocês encontrarem esse desenho aqui é porque eu tô dizendo que a dependência funcional bebê que leva se ou então eu posso dizer que cê é dependente funcionalmente DB a gente olhar para esse banco de dados aqui ó eu tô dizendo que de leva ser então toda vez que eu repeti alguma informação no atributo
B essa informação também tem que ser repetida no atributo seco Então olha só aqui eu tenho o b2 e aqui eu tenho C2 aqui eu tenho de novo B2 e aqui eu tenho denovo cê dois isso podia ser cidade-estado isso podia ser produto nome de podia ser qualquer outra informação e que B2 C2 B2 C2 percebo que no B1 eu tenho o valor representado aqui de ser um e eu e aqui também no B3 eu tenho valor representado de ser dois olha só que tá escrito aqui embaixo para os pares de registro nas quais os
valores de atributo B são iguais nos registros dois e três os valores no atributos e também são iguais e aí sim Então essa Instância que é válida essa Estância dessa tabela é válida E você já tô cumprindo né com a minha proposta de independência funcional O que é Uber leva a ser toda vez que eu tiver determinado valor em B eu vou ter o mesmo valor em ser eles vão se eles vão acompanhar é uma dependência funcional Então na verdade é uma propriedade semântica né desses atributos escolhidos e por isso ela é derivado do conhecimento
que o projetista tem do meu mini mundo do meu mundo real trazendo isso para o banco de dados o principal uso das dependências funcionais que só é descrever um esquema de tabela de forma mais detalhada por meio das especificações de restrição nos atributos que devem ser garantidos todo tempo Lembrando que muitas vezes né essa dependência funcional ela vai ter que ser implementada por meio de funções pelo pelo programador então é uma uma uma instrução que eu tenho para que ela seja refletida no banco de dados e às vezes cabe ao programador né fazer com que
isso seja executado bom eu vou mostrar aqui então quando Nos esquemas abaixo são esquemas de baixa qualidade então não pensa que se esqueçam normalizada então esquema de baixa qualidade Então veja quais dependências funcionais a gente gostaria de estar bom então eu tenho aqui uma tabela funk débito e uma tabela funk protege tá E aí vai molhar como que eu construo aqui essa dependências funcionais então eu digo que a dependência funcional aqui eu digo que funk dente leva a funk nome a funk de ter Nascimento a endereço a departamento número ou seja essa linha aqui ó
eu tenho esse atributo que leva a esse leva a esse leva a isso aqui leva esse aqui ou seja toda vez que eu tiver esse funk e dente eu vou ter o mesmo nome a mesma data de nascimento o mesmo endereço o mesmo departamento número isso faz sentido então quer dizer é o mesmo o mesmo identificador podia ser um CPF ou código do funcionário eu vou ter as informações relativas a ele ali na continuidade e eu tenho uma outra dependência funcional que é o departamento número tá aqui ó então o departamento nome o tratamento de
identidade acompanham né o departamento novo então quando eu tenho departamento número o departamento nome é dependente funcionalmente o departamento número e o meu departamento de aí dente que é o número do meu do meu do meu gerente é também acompanha o departamento o número tá então isso são eu tô dizendo que essas dependências funcionais tem que acontecer no meu projeto bom aqui eu tenho um pouco diferente como que estão projetadas nessa tabela na funk prod as minhas dependências funcionais Então eu tenho aqui olha só a primeira é funk dente funk proj funk dente prod número
então eu tenho aqui funk dente e proj número tá leva horas tá aqui ó é isso aqui ó leva horas é porque eu tô dizendo que quando eu tiver o identificador do funcionário neste cabelo projeto o número tá a quantidade de horas que o funcionário trabalhou então a hora tem que a dependendo funcionalmente desses dois atributos eu também tenho funk dente e funk nome quando eu tenho funk dente funk nome que é essa dependência funcional aqui funk dente leva a um quilômetro sempre que tiver um finalmente Funcionário é porque eu tenho aquele mesmo identificador ali
a mesma informação no funk dente e eu tenho a minha terceira dependência funcional aqui que é proj número para proj nome prova localização proj número para proj nome e prod localização Eu percebo que prod nome e prod localização são atributos são dependentes funcionalmente de pros de número toda vez que eu tiver um número de projeto o nome EA localização das coisas são seus mesmo que eles têm que acompanhar no esquema da minha tabela é assim que eu que eu estrutura as minhas dependências funcionais e assim que eu apresento as dependências e funcionais então não pode
haver instâncias de relação no banco de dados que viole as dependências funcionais estabelecidas pelo projetista do banco de dados ou seja a gente tem que garantir né que as dependências funcionais não serão violadas então colher Determine os compra de tudo amizade Tem que olhar para ver se está sendo realmente implementado no banco de dados e depois até quando estou implementado como um sistema e o preferível né pessoal é sempre estabelecer um bom projeto de banco de dados parecendo que eu trouxe para vocês aqui né o que eu chamei de uma de uma de uma Instância
de uma de um esquema de baixa qualidade mas o ideal é que quando você segue as regras lá do modelo de relacionamento no modelo relacional provavelmente hora que você chegar aqui nas dependências funcionais daí que você chegar na parte normalização você vai ter poucos poucos ajustes para fazer mas ainda pode ser que existam alguns e a segunda parte é sempre fazer o quê implementando funções funções para garantir essas dependências e funcionais bom tem quando a gente compreende as dependências funcionais a gente vai partir para compreender o que são as formas normais tá então é interessante
saber que a qualidade de um projeto de banco de dados Pode ser sim medido a partir da verificação da forma normal em que ele alcança então conforme o banco de dados avança nas formas normais a gente pode garantir que ele vai ter mais qualidade e nós vamos tratar especificamente aqui nessa disciplina quatro formas normais a primeira forma normal a segunda forma normal a terceira forma normal e a b c NF ou a forma normal de boys cod que que acontece a gente compreende que se um banco de dados atingir a terceira forma Normal pelo menos
ele tá num bom nível de qualidade e é essas vocês vão encontrar na literatura outras formas normais ainda mais a gente entende que a partir do momento que você implementa e você consegue trazer o banco de dados para pelo menos a terceira forma E é porque a gente atingir um bom nível bom um processo de normalização é dirigido pela informação referente às dependências funcionais e as chaves né que a gente tem no esquema das tabelas então é a país que a gente vai olhar para conseguir aplicar a normalização então o processo de análise e adequação
dos esquemas as tabelas com objetivo de Minimizar redundâncias e anomalias de inserção discusão e de alteração é para escreva a forma normal a parte mais você tem estrutura né hora que você começa a alimentar o banco Condado montar o esquema montar a Instância do banco de dados vão começar a olhar para esse ver somente ficar seguindo o que a gente tem nas dependências funcionais e o que as normas as formas normais estruturaram bom A normalização então né É no processo de normalização esquemas e tabelas que não satisfazem certas condições são decompostos em esquemas de tabelas
menores que satisfazem as Tais condição as condições e ainda a propriedade desejares não perceber que o processo de atualização e sempre pegasis uma tabela maior né e transformar em tabelas menores para que a gente consiga melhorar o processo de compreensão e estruturação delas é a forma normal de uma tabela é a mais alta forma normal cujas condições são atendidas então eu digo o seguinte não uma tabela só aquela tabela né chegou até a forma normal dois até forma normal três eu digo aqui então essa tabela que está normalizada na forma normal dois ou na forma
normal três já a forma normal de um banco de dados é aquela referente a sua tabela mais baixa de forma normal se eu tenho várias tabelas em terceira forma normal forma normal na bm&f mas eu tenho uma só lá na segunda forma normal Pode ser que o meu banco de dados está normalizado na segunda forma normal sempre eu pego a mais baixa de todas as tabelas E aí portanto saber que considerar apenas as formas normais não garante que o projeto de banco de dados e tá bom né E ainda preciso considerar algumas outras propriedades adicionais
quais são as propriedades bom o processo de humanização estudado será realizado por meio de decomposição essa tabela então eu falei pega as tabelas maiores vai decompondo e também e essa decomposição deve sempre garante a propriedade de junção sem perdas então a propriedade necessária quando eu quando eu desconstruo as tabelas quando eu disse componho elas aí eu tenho que manter a possibilidade da ligação né da conexão da junção sem haver perdas e uma coisa que eu tenho que procurar preservação as dependências funcionais essa é uma propriedade desejava nem sempre você vai conseguir garantir né as dependências
funcionais mas quanto mais você conseguir fazer melhor a gente vai exemplo tem hora que você não consegue garantia dependência funcional é bom a primeira forma normal né ela permite é ela não permite dentro de tabelas dentro de tabelas ou tabelas como valores de atributos dentre outros registros então não permite informações de tabela aninhada dentro de uma tabela ou valores né que não são atômicos então é necessário o único valor permitido pela primeira forma normal pela 1nf é o valor atômico o valor único então pegar um exemplo aqui da minha tabela departamento ela tem um campo
aqui que a localizações tem um atributo localizações que a gente sabe que isso aqui não é o valor atômico é um valor multivalorado então o que que vai acontecer aqui quando a gente trata esse esse campo como multivalorado a gente sabe que esse esquema que essa tabela é departamento ela não tá né Cumprindo com a primeira forma normal não que a gente vai ter que fazer vamos aplicar a forma normal olhando para isso aqui como que a gente teria essa tabela departamento com esse Campinho as ações Olha só eu tenho aqui o número dos departamentos
né E aqui na frente eu tenho São Paulo São Paulo mais aqui por exemplo São Paulo Campinas e Sorocaba já seria um valores que não representaria um barulho atômico é o valor multivalorado não pode então não tá na feira forma normal como que a gente normaliza a gente vai pegar essa tabela e a gente vai montar dois esquemas de tabela novos então aqui a gente vai partir a ter dois novos esquemas olhando para essa tabela como que acontece eu vou pegar e vou repetir aqui esse departamento como departamento B tá é a mesma tabela né
só coloquei um nome diferente você entender que eu separei em duas etapas primeira de cima não vai mais existir um esse essas duas departamento B com número nome e hoje aí dente que eram atributos que já faziam parte aqui eu vou normalizar localizações como que funciona número e localização o número é a relação que eu tenho pra tabela anterior a minha chave primária mantendo essa chave primária um pouco mais um campo localização também como chave primária percebo que é muito parecido com que a gente fazia quando a gente tava fazendo modelo está relacionamento para modelo
relacional no mapeamento é exatamente o mesmo processo é que às vezes escapa alguma coisa que passa Então não precisa organização isso a gente vai corrigir né então os dois novos esquemas cadela agora passa no Ah tá atendendo a primeira forma normal e agora como que ficaria a minha tabela quente ela departamento ela fica assim ela vai ter um departamento Ok de localização e ela vai ter um departamento B essa aqui Deixa de existir Ok então eu passo até um departamento sem ter aqui nenhum campo multivalorado e os campos multivalorados né eles são decompostos aqui então
eu tenho departamento um é São Paulo aquele apartamento três é São Paulo departamento três Campinas departamento três Sorocaba fiz a primeira forma normal o outro exemplo aqui de valor atômico é quando eu tenho uma tabela aninhada dentro de outra percebam que aqui ó eu tô tratando de funk e proj e eu tenho nesse caso aqui nesse exemplo dois olha só eu tenho como se fosse uma chave parcial aqui né que é o meu pé número o número do projeto eu tenho identificador né do funcionário eu já que eu tenho que número e eu tenho aqui
esse campinho horas aqui ó que depende do meu pé número Isso quer dizer o que que eu tenho a Cássia apresentando aqui uma tabela dentro da outra eu tenho uma relação alinhada Eu Vejo claramente que existem duas tabelas que podem ser separadas aqui então olha só como que isso ficaria se eu fosse criar uma Instância eu teria aqui por exemplo olha só eu tenho aqui a uma tabela de dentro de um registro é uma tabela dentro de outra então se você parar isso aqui porque um funcionário pode trabalhar em vários projetos e aí como é
que eu vou colocar essa informação como é que eu vou destrinchar essa informação então quando eu tenho tabelas aninhadas eu tenho que aplicar a primeira forma normal para aplicar eu vou partir de uma tabela para montar dois novos esquemas de tabela como que ficaria isso no primeiro eu pego a primeira parte aqui hoje e trago por uma nova tabela e na segunda tabela eu pego essa segunda parte trago para essa segunda tabela Lembrando que eu tenho que manter a relação aqui ó Então eu tenho que manter esse campinho aqui que aqui é o atributo que
faz a relação de chave né com a minha tabela principal Então a partir de agora na verdade ele não tá mais com esse né ele tá com esse aqui ó eu fazendo essa relação eu tenho identificador nome na tabela funk proj e eu treinar funk para os dois identificador de número e horas e agora eu posso dizer que essas duas tabelas estão na primeira forma normal olha só como é que ficou essa tabela que não vai existir mais porque ela não podia ter isso aqui né ela passa a ser uma tabela funk prod o que
pode um que eu tenho identificador enorme separadinhos bonitinhos e eu tenho aqui um identificador o número do projeto EA quantidade de óleo percebam que aqui ó aquele problema que eu tinha anteriormente eu não tenho mais nem para cada para cada funcionário eu tenho o número parece que ele trabalha a quantidade bom então aqui agora passei aqui nos meus dois esquemas estão na primeira forma normal bom Pessoal espero ter compreendido é muito importante que se faça os exercícios de apoio da semana aí não é para conseguir construir esse processo da primeira forma normal é próxima a
gente vai falar sobre a Segunda a terceira e a forma normal de voz corte até mais é E aí [Música]