Banco de Dados - Normalização - Parte 2

11.03k views3268 WordsCopy TextShare
UNIVESP
univesp.br Eixo de Computação - COM300 Univesp - Universidade Virtual do Estado de São Paulo Profes...
Video Transcript:
E aí [Música] E aí pessoal eu sou pro celular de Santarém já estão na disciplina de banco de dados é quase segunda parte normalização que a gente já viu a primeira forma normal e a gente vai ver a segunda a terceira e a b c e f são formas mais importantes para a gente qualificar nosso projeto de banco de dados bom a segunda forma normal é baseada no conceito de atributo primo e dependência funcional Total ver como é que só que funciona então um atributo de um esquema de tabela te é chamado atributo primo de
ter se ele é membro de alguma chave candidata de caso contrário ele é chamado atributo não primo ou seja se aquele atributo faz parte de alguma chave candidato é a primos aí não faz parte de chave candidata nenhum né ele não é primo e nesse caso aqui a gente tem nesse Exemplo né da tabela func prod2 nós temos atributos primos e dente P número né que fazem parte da chave primária e a gente tem um atributo horas né que é um atributo não primo seja não faz parte de chave chave nenhuma e também não é
um atributo-chave candidato Até que esse valor pode repetir várias vezes aí durante a hora que eu montar a minha tabela vó tá segunda forma normal é baseada no conceito de atributo primo e dependência funcional Total E aí eu digo a dependência funcional x que leva a y é uma dependência funcional Total se ao remover qualquer atributo de ar de X a dependência funcional deixa de valer ou seja para que qualquer a pertencente a e x para não determina funcionalmente Y é uma dependência funcional x que leva a y é uma dependência funcional parcial se para
algum atributo a pertencente a x quando eu tenho x menos a leva a y vamos explicar isso aqui para ver como é que tá aqui funciona Então olha só eu tenho aqui no meu funk proj certo eu tenho aqui a minha chave é a minha chave primária que é funk dente e proj número então eu tenho uma dependência funcional especificada que de funk dente prod número para horas então essa é uma dependência funcional e eu tenho uma outra dependência funcional aqui funk dente que leva somente a funk nome ou seja horas é dependente funcionalmente de
toda a minha chave e já funk nome é dependente funcionalmente só de parte da minha chave só do funk dente e o meu brodi nome e prod localização são atributos que são dependentes né somente do meu prod número aqui ó Então nesse caso né aqui embaixo o olho funk dente prod número eles levam a horas funk nome prod nome e proj localização quando eu faço quando eu apresento essas dependências funcionais a gente vai perceber que é um problema aí que é um atributo quando a gente tira uma parte da chave essa relação de dependência Então
é só quando eu olho para funk dente prod número horas é dependente funcional total e agora quando eu olho funk dente para horas por exemplo né e brodi número para horas eles não valem no esquema Ou seja eu não consigo fazer horas né de quantidade de horas trabalhadas pelo funcionário somente relacionada ao funcionário ou somente acima do projeto Esse é um atributo está relacionado aos dois é uma dependência funcional total agora olha só aqui embaixo funk dente e prod número para funk nome quando eu faço essa relação né eu tenho uma dependência funcional parcial por
quê Porque funk dente leva funk nome ou seja o nome depende só do funk dente ele não depende do projeto nome do funcionário não depende do correto aquele participa depende somente do número identificação dele então quê que acontece aqui quando a gente disse que isso wagno esquema a gente tá quebrando o processo de dependência da chave por completo porque eu tenho um atributo que depende só de parte da chá e esse é um problema na minha foto da minha normalização nesse caso aqui né Lembrando que a segunda forma normal né um esquema da tabela ter
está na segunda forma normal se todo atributo primo há em ti tem dependência não primo a em ter tem dependência funcional total da chave primária ou de qualquer chave de ter ou escrevendo uma outra forma de pode ser o seguinte que o esquema tabela te tá na segunda forma normal se todo atributo não primo a em pé não depender parcialmente de qualquer chave de ter ou seja se eu pego um atributo não primo e ele não depende de toda a chave da chave completa a gente tem um problema sem depender de uma parte da chave
só a gente vai ter um problema de captar normalizar na segunda forma normal quiser tabela não está na segunda forma normal bom então aqui olha só eu sei que funk prod por exemplo tá está na primeira forma normal mas não está na segunda forma normal porque porque eu sei que eu tenho essas dependências funcionais aqui ó não totais da chave tanto a dependência funcional dois como a dependência funcional três eu tenho dependências parciais da chave que que acontece a gente vai ter que recorrer a segunda forma normal e aplicar segunda forma normal para poder resolver
esse problema aqui decompondo o esquema então em outros menores né seguindo a orientação da dependências funcionais ao normalizar esse esquema Então a partir de agora né Nós vamos passar T3 novos esquemas de tabela quando a gente aplica a segunda forma normal como que acontece bom do funk prod então é a gente tinha esses campos e essas dependências funcionais estabelecidas a gente vai passar ter um funk prod um para a gente vai deixar de ter esse cara aqui e deixar passar tem um funk prod um aonde eu tenho horas que depende de funk dente e de
prod numa horas dependendo do número do funcionário e do e do número do projeto ok Porque era uma dependência Total mesmo agora a gente vai separar né se eu funk nome é o nome dependia só do funk dentro só do número do funcionário isso vai passar ser uma nova tabela e aqui o que depende é só do proj número que era o nome do projeto é a localização do prédio como eles dependiam parcialmente deixar depende só do proj número né a gente separa também em uma outra tabela Então dessa forma a gente aplica a segunda
forma normal né que é separar esses atributos né em outras tabelas que depende só parcialmente da chave segunda forma normal bom e aí a gente parte para terceira forma normal a terceira forma normal o conceito de dependência transitiva como funciona a caneta transitiva uma dependência funcional x que leva a y Seja rico não dependente funcionamento de X em um esquema de tabela te é uma dependência transitiva se existe um conjunto de atributos Z seja um novo conjunto de atributos Z não é chave candidata e nem e subconjunto de qualquer chave de ter ou seja eu
tenho piseiro também não é uma chave candidato no de atributos e tanto x quanto Z quantos e quanto Y vale no esquema Ou seja a questão perceber que eu tenho a categorização a caracterização da dependência transitiva vamos ver como é que só que tá olha só eu tenho aqui no meu funk débito a minha tabela funk débito eu tenho funk dente tá que leva adepto já ident a tendência transitiva por débito número como que tá acontecendo isso eu tenho funk dente aqui ele tem esses atributos que dependem funcionalmente dele ou seja funk dente leva funk
nome leva funk de ter Nascimento leva o endereço leva a número e aqui eu tenho uma outra dependência funcional que o departamento nome o departamento de aí dente que dependem de débito número quando eu faço essa relação eu tenho aqui por exemplo essa relação de G débito já Idêntica É esse atributo aqui ele depende do débito número que depende de funk dente então a gente pode dizer pessoal que aqui existe uma dependência transitiva é um atributo que depende de um outro que depende ainda de um outro essa relação é chamada de dependência transitiva então quando
eu tenho aqui funk dente né que leva até débito o débito número que leva adepto já identity a gente tem que isso vale no esquema e caracteriza uma relação de dependência transitiva Oi e aí é um esquema de tabela te está na terceira forma normal se ele está também já na segunda forma normal e nenhum atributo não primo de ter é transitivamente dependente da chave primária ou de qualquer chave de ter ou escrevendo de outra forma né um esquema de tabela te está na terceira forma normal se todo atributo não primo Inter atende entre ambas
as condições abaixo ele tem Independência funcional total de toda a chave de ter e ele não é transitivamente dependente de toda a chave de ter Então é isso que caracteriza a nossa relação de de dependência transitiva por um campo que não é chave e que não pode acontecer quando a gente olha para isso aqui então né a gente tem a terceira forma normal nessa tabela aplicação dela vamos olhar para esse funk débito e vamos olhar e os campos aqui dependem de débito número e aí a gente pode dizer que funk débito está na primeira forma
normal está na segunda forma normal mas não está na terceira forma normal porque a dependência transitiva E aí a gente vai de compôr então né esse esquema em outros menores seguindo as dependências funcionais normalizando esse esquema e a gente vai ter dois novos esquemas de tabela ou se a gente vai mudar transformar né em dois novos esquemas de tabela olhando aqui a gente tem essa tabela como ela estava né e aplicando a forma normal lá vamos ter um F de um né como que débito um esse aqui deixa desistir né que é funk dente funk
nome funk de nascimento endereço e Departamento número ou seja eu trago só o que era dependência funcional um para essa nova tabela e eu crie uma nova tabela onde eu tenho é UEFI de dois aqui onde eu trago aquele Campo que antes era um campo de é é que fazia a relação da dependência transitiva eu trago ele como chave primária e trago aqui somente os campos que depende exatamente dele então eu tenho aqui né os campos que dependem somente de então eu separei em duas tabelas aplicando a terceira forma normal não vai existir mais o
caso da dependência transitiva que é um campo não chave que depende de outro Campo não chave que depende de um campo chave tá então a gente como decompõe em duas tabelas só que a gente aplicou a terceira forma normal tá bom E aí nós vamos para a nossa última forma normal dessa disciplina que é a Boys cod normal forma o abc NF lembrando que quando eu consigo fazer com que meu projeto humanidades atinge a terceira forma normal a forma normal de boa esconde eu já cheguei num o nível de qualidade para o meu projeto de
banco de dados ó e aqui eu vou dizer o seguinte que um esquema da tabela ter está na bcnf se sempre que uma dependência funcional não trivial x que levar valinter E X É Uma Super chave de ter e olhando aqui pessoal a gente tem uma dependência funcional aqui na minha tabela fp1 a gente tem uma dependência funcional um a gente tem afp2 que tem a dependência funcional dois que é um funcionário Depende de funcionário e dente o nome depende identificação EA que eu tenho a minha tabela fp3 aonde eu tenho projeto o nome do
ecolocalização dependendo a que da minha Independência funcional do meu projeto número então essas tabelas estão na bcnf tá esse é um exemplo vamos ver agora nosso exemplo dois aqui também eu tenho aqui um funcionário departamento eu tenho os dados do funcionário que são dependentes aqui ó esses esses esses atributos dependem funcionalmente do funcionário dente aqui tá minha Independência funcional um e eu tenho dependência funcional dois na minha outra tabela que o fd2 onde eu tenho departamento nome e o gerente do departamento dependendo do número do apartamento então é bem essa tabelas também estão na b
c NF e agora vamos dar nosso próximo exemplo aqui é um exemplo que tinha que a gente não tinha visto até então né que eu trago como lotes um lá eu tenho um campo aí de propriedade Eu tenho um campo o estado Eu tenho um campo a idiot e eu tenho um campo área será né que eu tô normalizado aqui vamos ver E então é só como só minhas dependências funcionais eu tenho aqui pela dependência funcional um a gente sabe que é de propriedade é uma chave candidata ela foi escolhida para se a chave primária
né então eu tenho uma dependência funcional tanto estado como Eyed lote como área dependem funcionalmente de agir propriedade a estabelecida aí eu tenho dependência funcional dois pela independência funcional do agente sabe que estado EA Idiot né é uma chave candidata aqui eu tenho nessa dependência funcional dois estado e e e aí dilote levam tanto para ir de propriedade quanto levam para a área então estabelecer aqui é uma dependência funcional dois eu digo na hora que eu tô cortando o banco traseiro ao sempre que eu tiver estado EA Idiot né vai ser o mesmo aí de
propriedade ou então vai ser a mesma área Oi e eu tenho aqui uma dependência funcional cinco que diz que toda vez que eu tiver uma informação em área eu vou ter a mesma informação no estado ou seja eu criei uma dependência funcional diária né que leva para estado ou seja estado é funcionalmente dependente diária tanto a dependência funcional 5 a gente sabe que todos os terrenos da mesma área está localizado no mesmo estado e a gente vai né olhar como que isso tá no nosso esquema nós vamos perceber aqui né que as dependências funcionais elas
são atendidas Entretanto a 5 e ela não está sendo atendida por quê Porque eu tenho áreas em São Paulo eu tenho área sem de Novo São Paulo mas eu tenho área 50 e aqui continua São Paulo ou seja eu estou quebrando a minha dependência funcional 5 e aqui eu tenho um problema da relação de trivialidade uma olhada lá e a tabela não está na bcnf pois o lado esquerdo da dependência funcional não trivial a área que leva a estado não é uma super chave ou seja área não é uma super chave eu não consigo dizer
que ar é uma super chave então quê que acontece aqui a minha Independência funcional não trivial tá acontecendo diária para estado pelo fato de área não ser uma super chave então Observe que esse esquema está na terceira forma normal mas não está na forma normal e dois códigos a resolver esse problema como que a gente vê como que a gente vai resolver nós vamos criar pessoal dois novos esquemas de tabela para poder de compor e poder obedecer essa normalização essa essa essa dependência funcional O bom do caso aqui nós vamos deixar de ter essa lotes
um a nós vamos passar até lotes um ex e o áudio lá Y percebam que aqui né A minha Independência funcional foi mantida e de propriedade para ir de lote e para área então eu tenho aqui a minha delícia funcional Igual estava antes eu tenho de propriedade para estado para ir de lote para Então vamos usar a gente aplicar essa dependência funcional aqui eu tenho desse lado aqui o Otis um a y aonde eu tenho a área que leva a estado onde a área passou a ser minha chave primária porque ela precisava ser uma super
ela precisava ser uma chave para poder fazer com que estado é dependência e funcionalmente diária essa na dependência funcional estabelecida pelo projetista na Então a gente tem que cumprir com isso aqui isso que tem que ser feito e aí a gente faz agora quando a gente queria essa nova tabela lotes um a y a gente passou até então essa dependência foi e esse daqui é estado dependendo diária e aqui a gente tem a outra dependência funcional um que é de propriedade para agir lote e área percebam que eu perdi aqui a minha é dependência funcional
dois ela deixou de existir por quê Porque a hora que eu apliquei bcnf eu não consegui né a hora que eu separo as tabelas eu não consigo mais manter aquela dependência funcional Inicial quando eu faço isso isso não é um erro isso as vezes vai acontecer então a gente tem que ficar claro na hora que eu estou estruturando a minha normalização Lembra no começo das aulas de forma normal que eu falei sobre isso que pode acontecer que isso que pode acontecer de eu perder uma dependência funcional na hora de fazer normalização aconteceu aqui então a
gente estruturou a gente tá Cumprindo com a normalização cês podem ver e agora a gente passa a ter duas novas tabelas então acreditem a bcnf aplicada a tabela a tabela agora estão normalizadas na bcnf aqui a gente e finaliza né a ideia de formas normais e no seguinte né que são propriedades de decomposição relacional as formas normais pessoas tem que pensar é preciso assegurar que cada atributo de aparecem pelo menos uma tabela dentro da decomposição então eu não posso de repente até o aplicar forma normal perder atributos nesses atributos não existem mais não pode acontecer
Nunca outra coisa é sempre uma meta tem uma das tabelas de composição em bcnf ou terceira forma normal Então essa é a ideia é chegar com calicute consigo atingir a terceira forma normal e seria ótimo projeto de banco de dados é sempre desejável preservar a dependências funcionais na decomposição Então vai a ideia é que a gente continue mantendo dependência porque ela fique cara de composição que não aconteceu no último exemplo que a gente mostrou então aqui é desejável não é obrigatório porque em algumas poções vai perder e é preciso assegurar o que a decomposição não
causará perdas na junção eu não posso né de compor uma tabela e perder a relação que existia antes né então tempo sempre que prestar atenção para levar o atributo é que faz a relação de chave primária chave estrangeira para que eu não perca a junção da informação EA conexão que existia Entre esses atributos na minha tabela original que é tão importante então aqui se você olhar para esse quadrinho aqui né Sempre que você tiver no processo de normalização e imaginar que você tá Cumprindo com s conjunto de sugestões aqui de regras aí você vai estar
na balizando muito bem as suas tabelas você pode me dizer ah mas eu já fizemos tudo isso no modelo de acionamento modelo racional Só que já foi aplicado sim mas alguns casos nós vamos passar então a normalização e um processo para a gente pode ficar mais ainda o nosso correta de banco de dados finalizamos assim as aulas sobre formas normais pessoal é E aí [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com