Diagrama de Entidade Associação ou Relacionamento Quanto à obrigatoriedade dos elementos de uma entidade participarem, ou não, no relacionamento com outra entidade, tem-se: Participação obrigatória de ambas as entidades Participação não obrigatória de uma das duas entidades Participação não obrigatória de nenhuma das entidades 1 Diagrama de Entidade Associação ou Relacionamento O quadro 12 exemplifica um conjunto de situações e simbologias utilizadas, neste caso, num relacionamento binário Para facilitar a explicação descreve-se, em quase todos os exemplos, o relacionamento apenas de um dos lados No preenchimento da coluna “Descrição”, os valores entre parêntesis devem ler-se (mínimo..máximo) 2 Diagrama de Entidade Associação ou Relacionamento 3 Construção do DEA Na construção de um modelo DEA, realizamse por ordem os seguintes passos: Identificar as entidades Identificar associações entre entidades, tipo e grau de associação Identificar os atributos identificadores e os atributos descritores de cada entidade Definir os graus máximo e mínimo de associações 4 Construção do DEA Também na construção de um modelo DEA se deve observar que: Todos os atributos se aplicam a todas as instâncias de uma entidade Quando há grupos repetitivos cria-se uma nova entidade e uma nova associação. Entende-se por grupo repetitivo um conjunto de atributos cujos valores se repetem para um dado valor do atributo identificador Quando existir relacionamentos de M:M, subdividem-se em dois relacionamentos 1:M, criando-se uma entidade associativa adicional, que fará a interface entre as entidades anteriores e que pode apresentar alguns atributos específicos 5 Construção do DEA A partir do conteúdo de dois depósitos de dados, fornecedores e produtos, de um Dicionário de Dados, desenha-se o Diagrama de Entidade Associação da figura 1.16, identificandose as entidades, o tipo e grau de associação, os atributos descritores e os atributos identificadores 6 Construção do DEA A figura 1.17 indica que face a um relacionamento de M:M é preciso criar a entidade associação ForneceProdutos 7 Construção do DEA A figura 1.18 mostra uma outra forma de representar o diagrama da figura 1.17 8 4.2.4. Normalização de dados 9 Normalização de dados A normalização de dados pode ser aplicada directamente sobre um conjunto de dados em bruto ou feita a partir de modelos de dados resultantes da modelação com diagramas E-R, com o objectivo de criar um modelo de base de dados relacional A normalização de dados consiste numa série de passos relacionados com o desenho de uma base de dados de forma a obterem-se estruturas de dados sem redundância e consistentes Este processo é conduzido por um conjunto de regras que constituem as Formas Normais 10 Normalização de dados As Formas Normais enunciam um conjunto de restrições sobre os relacionamentos ou as dependências existentes entre os dados Inicialmente foram criadas três formas normais: 1.ª Forma Normal (1FN), 2.ª Forma Normal (2FN) e 3.ª Forma Normal (3FN) Depois surgiram mais formas normais: Forma Normal de Boyce-Codd (FNBC), 4.ª Forma Normal (4FN) e 5.ª Forma Normal (5FN) 11 Normalização de dados Representação de dados na forma não normalizada Uma estrutura diz-se não normalizada quando os dados se agrupam por atributos que não foram analisados segundo as regras da normalização O quadro 13 mostra um exemplo de como representar uma entidade através dos seus atributos segundo três notações diferentes Neste caso, por cada nota de encomenda podem existir vários produtos encomendados, o que acarreta, em termos de organização de uma base de dados informatizada, uma redundância de dados, ocupando mais espaço, tornando o processamento mais lento e aumentando a probabilidade de ocorrem erros 12 Normalização de dados Representação de dados na forma não normalizada (continuação) 13 Normalização de dados Representação de dados na forma não normalizada (continuação) 14 Normalização de dados Fases da normalização O modelo da base de dados relacional organiza os dados em estruturas designadas por relações (figura 1.19) Os atributos de uma relação correspondem às colunas e os tuplos correspondem às linhas que apresentam um conjunto de dados relativos a uma entidade concreta Estes dados são, por sua vez, representados por valores 15 Normalização de dados Para alcançar um modelo de uma base de dados minimamente consistente, é suficiente submeter a sua estrutura de dados até à terceira forma normal A primeira forma normal obriga a que não exista grupo de atributos repetitivos No exemplo da entidade Encomenda os atributos que se encontram entre parêntesis constituem um grupo repetitivo, porque para uma mesma encomenda podem ser pedidos vários produtos 16 Normalização de dados Encomenda = @Número_encomenda + Data_encomenda + Código_cliente + Nome_cliente + Telefone + {Código_produto + Nome_produto + Preço_unitário + Quantidade} + Total_encomenda Para aplicar a 1FN, efectuam-se os seguintes passos Escolher uma chave primária ou um atributo identificador, que é um atributo que identifica de forma exclusiva cada ocorrência de uma entidade. No exemplo dado a chave identificada é Número_encomenda Identificar o grupo repetitivo, que é {Código_produto + Nome_produto + Preço_unitário + Quantidade} Criar uma nova relação por cada grupo repetitivo, escolhendo uma nova chave e efectuando um relacionamento com a entidade original através do atributo comum Número_encomenda 17 Normalização de dados Da entidade inicial Encomenda, depois de aplica a 1FN, resultam as entidades Encomenda e DetalheEncomenda Encomenda = @Número_encomenda + Data_encomenda + Código_cliente + Nome_cliente + Telefone + Total_encomenda DetalheEncomenda = @Número_encomenda + @Código_produto + Nome_produto + Preço_unitário + Quantidade 18 Normalização de dados A segunda forma normal obriga a que se removam todas as dependências funcionais que dependam apenas de uma parte da chave e não da sua totalidade No caso da entidade DetalheEncomenda, a chave primária é constituída pelo para de atributos Número_encomenda e Código_produto Os atributos Nome_produto e Preço_unitário, para além de serem identificados de forma unívoca pela chave, são também identificados por parte dela, isto é, são funcionalmente dependentes do atributo Código_produto 19 Normalização de dados Para aplicar 2FN, efectuam-se os seguintes passos: Verificar se os atributos não-chave são dependentes funcionalmente da totalidade da chave Criar uma nova relação com os atributos que dependem de parte da chave, sendo esta a chave da nova relação Identificar os relacionamentos existentes entre a nova relação e a relação original, mantendo, nesta, a chave inicial que contém o atributo comum às duas relações 20 Normalização de dados Da entidade inicial DetalheEncomenda, depois de aplicada a 2FN, resultam as entidades DetalheEncomenda e Produto DetalheEncomenda = @Número_encomenda + @Código_produto + Quantidade Produto = @Código_produto + Nome_produto + Preço_unitário 21 Normalização de dados A terceira forma normal obriga a que se removam todas as dependências funcionais que dependam de atributos-não-chave No caso da entidade Encomenda, os atributos Nome_cliente e Telefone são também funcionalmente dependentes do atributo-não-chave Código_cliente 22 Normalização de dados Para aplicar a 3FN, efectuam-se os seguintes passos: Verificar se os atributos não-chave são dependentes funcionalmente de outros atributosnão-chave Criar uma nova relação com os atributos que dependem dos atributos-não-chave, sendo estes a chave da nova relação Identificar os relacionamentos existentes entre a nova relação e a relação original, mantendo, nesta, o atributo-não-chave que é um atributo comum 23 Normalização de dados Da entidade Encomenda, depois de aplicada a 3FN, resultam as entidades Encomenda e Cliente Encomenda = @Número_encomenda + Data_encomenda + Código_cliente Cliente = @Código_cliente + Nome_cliente + Telefone Depois de aplicadas as três formas normais à entidade inicial, Encomenda, resultam as entidade normalizadas: Cliente, Produto, Encomenda, e DetalheEncomenda Cliente = @Código_cliente + Nome_cliente + Telefone Produto = @Código_produto + Nome_produto + Preço_unitário Encomenda = @Número_encomenda + Data_encomenda + Código_cliente DetalheEncomenda = @Número_encomenda + @Código_produto + Quantidade 24