Baixe o app para aproveitar ainda mais
Prévia do material em texto
Modelo Entidade- Relacionamento (MER) Prof. Dr. Fernando Almeida fernando.almeida@docente.unip.br mailto:fernando.almeida@docente.unip.br Agenda • Entidades e relacionamentos • Chaves • Dependências funcionais • Redundâncias versus perdas • Anomalias • Normalização de dados Projeto de Banco de dados Minimizar a redundância de dados sem perder nenhuma informação Objetiva ter a menor quantidade de espaço de armazenamento, mantendo todos os vínculos entre os dados Terminologias Entidades Relacionamentos Colunas ou atributos Linhas, registros, tuplas Entidade • Conjunto de objetos do mundo real sobre os quais se deseja manter informações no banco de dados • Representada através de um retângulo • Pode representar: • Objetos concretos (uma pessoa) • Objetos abstratos (um departamento) João Pedro Paulo Maria Empregado Departamento Contabilidade Financeiro Jurídico Pessoal Entidade e relacionamento Armazenamento de informações sobre funcionários e os departamentos onde eles trabalham Esmeralda Peter Megamente Trab alha para Trab alha para Trabalha par a Pesquisa e desenvolvimento Os relacionamentos podem ser de tipos diferentes - um para um, um para muitos e muitos para muitos Entidade e relacionamento Esmeralda Peter está localizado em está localizado em Compartimento 1 Compartimento 2 O relacionamento “está localizado em” é de um para um. O relacionamento “trabalha para” é de muitos para um Os relacionamentos e os tipos de relacionamentos dependem do ambiente e das regras de negócio que está sendo modelado Tabelas • Conjunto de objetos do mundo real sobre os quais se deseja manter informações no banco de dados idFuncionario nome função idDepartamento 7513 Peter Pan Programador 128 9842 Esmeralda X DBA 42 6651 Megamente Programador 128 9006 Candy Burnet Administrador Sys 128 Funcionários coluna ou atributo linhas, registros ou tuplas Chaves coluna ou conjunto de coluna que identifica uma única linha dentro da tabela representam ligações entre tabelas Dependência funcional A —> B se em uma determinada tabela houver uma dependência funcional entre a coluna A e a coluna B, então o valor da coluna A determinará o valor da coluna B Exemplo: na tabela funcionários, idFuncionario determina o nome (e todos os outros atributos da tabela) Esquemas funcionario(idFuncionario, nome, funcao, idDepartamento) chave primária chave estrangeira idDepartamento Princípios do Projeto de Banco de dados Quais informações precisam ser armazenadas? Que perguntas faremos ao banco de dados (as chamadas consultas) Regra do negócio (modelagem) Entidades (tabelas) Relacionamentos (vínculos) Redundância versus perda de dados Funcionários e departamento em uma única tabela idFuncionario nome função idDepartamento nomeDepartamento 7513 Peter Pan Programador 128 Pesquisa 9842 Esmeralda X DBA 42 Finanças 6651 Megamente Programador 128 Pesquisa 9006 Candy Administrador Sys 128 Pesquisa FuncionarioDepartamento funcionarioDepartamento(idFuncionário, nome, funcao, idDepartamento, nomeDepartamento) redundância Redundância versus perda de dados idFuncionario nome função idDepartamento nomeDepartamento 7513 Peter Pan Programador 128 Pesquisa 9842 Esmeralda X DBA 42 Finanças 6651 Megamente Programador 128 Pesquisa 9006 Candy Administrador Sys 128 Pesquisa FuncionarioDepartamento funcionario(idFuncionário, nome, funcao, idDepartamento) departamento(idDepartamento, nomeDepartamento) Funcionario Departamento idDepartamento idFuncionario idDepartamento Anomalias Anomalias de inserção Anomalias de eliminação Anomalias de atualização Valores nulos Esquemas de tabelas com colunas com grandes quantidades de atributos vazios Funcionários Qualificação especial campos vazios Solução: adição de uma nova tabela, armazenado o id dos funcionários e a qualificação 1 99100 funcionários Atividade 2 Normalização Primeira Forma Normal Segunda Forma Normal Terceira Forma Normal Forma Normal de Boyce-Codd Normalização Processo utilizado para remover eventuais falhas em um projeto de banco de dados Conjunto de regras que descrevem o que se deve fazer nas estruturas das tabelas Consiste em dividir as tabelas em tabelas menores (melhor utilização dos recursos) Primeira Forma Normal - 1NF Estabelece que cada valor do atributo ou da coluna tem que ser atômico (valor único) Funcionário idFuncionario nome função idDepartamento skills 7513 Peter Pan Programador 128 C, C#, Java 9842 Esmeralda X DBA 42 DB2 6651 Megamente Programador 128 VB, Java 9006 Candy Administrador Sys 128 Win, Linux Esquema não normalizado na primeira forma normal, porque contém conjuntos de valores na coluna skill Primeira Forma Normal - 1NF Funcionário idFuncionario nome função idDepartamento skills 7513 Peter Pan Programador 128 C 7513 Peter Pan Programador 128 C# 7513 Peter Pan Programador 128 Java 9842 Esmeralda X DBA 42 DB2 6651 Megamente Programador 128 VB 6651 Megamente Programador 128 Java 9006 Candy Administrador Sys 128 Win 9006 Candy Administrador Sys 128 Linux Agora, todos os valores são atômicos Red und ânc ia Primeira Forma Normal - 1NF Funcionário idFuncionario nome função idDepartamento 7513 Peter Pan Programador 128 9842 Esmeralda X DBA 42 6651 Megamente Programador 128 9006 Candy Administrador Sys 128 Skills idFuncionario Skills 7513 C 7513 C# 7513 Java 9842 DB2 6651 Java 6651 VB 9006 Win 9006 Linux Exercícios clientes(idCliente, nomeCliente, enderecoCliente) pedidos(idPedido, dataPedido, idCliente) itensPedido(idPedido, idItem, qtdeItem) itens(idItem, nomeItem) Dado o esquema abaixo, analise e normalize-o na 1NF 1 Exercícios Pessoa(cpf, nome, localização, telefone) Dado o esquema abaixo, analise e normalize-o na 1NF 2 cpf nome localização telefone 123 Lia Rio de Janeiro, RJ, Brasil 999-555, 777-333 222 Caio Brasília, DF, Brasil 555-888, 333-222 111 Ana São Paulo, SP, Brasil 444-999 444 Beto Porto Alegre, RS, Brasil 888-222 Exercícios Resolução2 1NF Pessoa (cpf, nome, sexo) Telefone (cpf, telefone) Localização (cep, cidade, uf, pais) Segunda Forma Normal - 2NF Um esquema pode ser considerado na 2NF se estiver na 1NF e todos os atributos que não fazem parte da chave primária forem funcionalmente dependente da chave primária idFuncionario nome função idDepartamento skills 7513 Peter Pan Programador 128 C 7513 Peter Pan Programador 128 C# 7513 Peter Pan Programador 128 Java 9842 Esmeralda X DBA 42 DB2 6651 Megamente Programador 128 VB 6651 Megamente Programador 128 Java 9006 Candy Administrador Sys 128 Win 9006 Candy Administrador Sys 128 Linux Segunda Forma Normal - 2NF { Segunda Forma Normal? Qual é a chave primária desta tabela? Uma chave primária tem que identificar com exclusividade uma única linha em uma tabela idFuncionario nome função idDepartamento skills 7513 Peter Pan Programador 128 C 7513 Peter Pan Programador 128 C# 7513 Peter Pan Programador 128 Java 9842 Esmeralda X DBA 42 DB2 6651 Megamente Programador 128 VB 6651 Megamente Programador 128 Java 9006 Candy Administrador Sys 128 Win 9006 Candy Administrador Sys 128 Linux idFuncionario, skill —> nome, função, idDepartamento Funcionario(idFuncionario, nome, função, idDepartamento, skill) idFuncionario —> nome, função, idDepartamento) Dependência Funcional Como podemos colocá-la na segunda forma normal? Precisamos decompor a tabela em tabelas nas quais todos os atributos que não compõem a chave sejam totalmente e funcionamento dependente da chave funcionário(idFuncionario, nome, skill, idDepartamento funcionárioFunção(idFuncionario, skill) Está na primeira forma normal porque os valores são todos atômicos Está na segunda forma normal porque cada atributo que não compõe a chave primária, agora é dependendo funcionamento de todas as partes da chave Terceira Forma Normal - 3NF Um esquema pode ser considerado na 3NF se estiver na 2NF e todasas dependências transitivas devem ser retiradas Terceira Forma Normal - 3NF FuncionarioDepto(funcID, funcNome, deptoID, deptoNome) funcID —> funcNome, deptoID, deptoNome deptoID —> deptoName Dependência Funcional funcID —> deptoNome funcID —> deptoID deptoID —> deptoNome deptoID não é chave Esta relação significa que a dependência funcional funcID —> deptoNome é uma dependência transitiva Existe uma etapa intermediária deptoID —> deptoNome Terceira Forma Normal - 3NF Funcionario(funcID, funcNome, deptoID, deptoNome) Depto(deptoID, deptoNome) superchave Dependência funcional fará parte de qualquer chave desta tabela { Conclusão A normalização é para a chave, a chave inteira e nada além da chave A 2NF nos diz que os atributos devem depender da chave inteira A 3NF nos diz que os atributos não tem que depender de nada, exceto da chave Forma Normal de Boyce-Codd Também conhecida como BCNF, é uma variação da 3NF Para estar na BCNF, ela tem que estar na 3NF e todas as dependências funcionais tem que ter uma superchave do lado esquerdo Exercícios Orders(costumerID, costumerName, costumerAddress, orderID, orderDate, itemID, itemName, itemQuantity) Normalize o seguinte esquema até a 3NF 3 Exercícios clientes(idCliente, nomeCliente, enderecoCliente) pedidos(idPedido, dataPedido, idCliente) itensPedido(idPedido, idItem, qtdeItem) itens(idItem, nomeItem) Verifique se a correspondência abaixo possui as devidas regras de normalização 4
Compartilhar