Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Alexandre Mignon Banco de Dados Modelo Lógico 1Material baseado em: HEUSER, Carlos Alberto. Projeto de Banco de Dados. Porto Alegre: Sagra Luzzato, 2004. Composição de um Banco de Dados Relacional ➔ Um banco de dados relacional é composto de tabelas ou relações ➔ Uma tabela é um conjunto não ordenado de linhas (ou tuplas) ◆ Cada linha é composta por uma série de campos (valor de atributo) ◆ Cada campo é identificado por nome de campo (nome de atributo) ◆ O conjunto de campos das linhas de uma tabela que possuem o mesmo nome formam uma coluna 2 Chaves ➔ Conceito básico para estabelecer relações entre linhas de tabelas de um banco de dados relacional ➔ Há ao menos dois tipos de chaves: ◆ Chave primária ◆ Chave estrangeira 3 Chave Primária (PK - Primary Key) ➔ É uma coluna ou uma combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela ◆ Chave primária simples: apenas um atributo (campo) compõe a chave primária ◆ Chave primária composta: mais de um atributo compõe a chave primária ➔ Exemplo 01 - Tabela Departamento 4 Departamento CodDept Nome D001 Financeiro D002 Engenharia D003 Comercial chave primária Chave Primária (PK - Primary Key) ➔ Exemplo 02 - Tabela Dependente ➔ Uma chave primária deve ser mínima, isto é, quando todas as suas colunas forem efetivamente necessárias para garantir o requisito de unicidade de valores da chave. 5 Dependente CodEmpregado NoDepen Nome Tipo E1 01 João Filho E1 02 Maria Esposa E2 01 Ana Esposa E5 01 Paula Esposa E5 02 José Filho chave primária (composta) Chave Estrangeira (FK - Foreign Key) ➔ É uma coluna ou uma combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma tabela ➔ É o mecanismo que permite a implementação de relacionamentos em um banco de dados relacional. ➔ Exemplo: Antes de efetuar a alocação de um funcionário em um departamento, é necessário que o departamento em questão conste na tabela de departamentos. 6 Departamento CodDept Nome D001 Financeiro D002 Engenharia D003 Comercial Funcionario CodFunc Nome CPF CodDept 1001 Antonio 000111222-33 D002 1002 Beatriz 111222333-44 D003 1003 Claudio 222333444-55 D001 chave estrangeira Chave Estrangeira (FK - Foreign Key) ➔ Uma chave estrangeira nem sempre referencia uma chave primária de outra tabela ➔ Ela pode ser usada para referenciar uma chave primária da própria tabela 7 Empregado CodEmp Nome CPF CodEmpGerente E5 Antonio 000111222-33 - E3 Beatriz 111222333-44 E5 E2 Claudio 222333444-55 E5 chave estrangeira referencia a chave primária da própria tabela Chave Estrangeira (FK - Foreign Key) A existência de uma chave estrangeira impões restrições que devem ser garantidas em diversas situações de alteração do banco de dados. ➔ Inclusão de uma linha na tabela que contém a chave estrangeira ◆ Deve ser garantido que o valor da chave estrangeira apareça na coluna da chave primária referenciada ➔ Alteração do valor da chave estrangeira ◆ Deve ser garantido que o novo valor de uma chave estrangeira apareça na coluna da chave primária referenciada ➔ Exclusão de uma linha da tabela que contém a chave primária referenciada pela chave estrangeira ◆ Deve ser garantido que na coluna chave estrangeira não apareça o valor da chave primária que está sendo excluída 8 Chave Única (Unique) ➔ Utilizada quando um determinado campo não deve ser repetido e não é chave primária ➔ Aumenta a consistência do banco de dados ➔ Exemplo: Cadastro de Funcionários - Cada funcionário recebe um código único, que é chave primária. Para maior segurança e consistência podemos optar que o campo CPF também seja único, evitando que o mesmo funcionário seja cadastrado duas vezes. 9 Domínios e Valores Vazios ➔ Para cada coluna de uma tabela deve ser especificado um conjunto de valores (alfanumérico, numérico, …) que os campos da respectiva coluna podem assumir ➔ Este conjunto de valores é chamado de domínio da coluna ou domínio do campo ➔ Também deve ser especificado se os campos da coluna podem estar vazios (null) ou não ◆ Indica que não é necessário o campo receber nenhum valor de seu domínio ➔ As colunas nas quais não são admitidos valores vazios são chamadas de colunas obrigatórias ➔ As colunas nas quais podem aparecer campos vazios são chamadas de colunas opcionais 10 Restrições de Integridade ➔ Um dos objetivos primordiais de um SGBD é a integridade de dados. ◆ Significa dizer que os dados refletem corretamente a realidade representada pelo banco de dados e que são consistentes entre si ➔ Para tentar garantir a integridade de um banco de dados os SGBD oferecem o mecanismo de restrições de integridade ◆ É uma regra de consistência de dados que é garantida pelo próprio SGBD ➔ Costuma-se classificar as restrições de integridade nas seguintes categorias a seguir 11 Restrições de Integridade ➔ Integridade de domínio ◆ Especifica que o valor de um campo deve obedecer a definição de valores admitidos para a coluna (o domínio da coluna) ➔ Integridade de vazio ◆ Especifica se os campos de uma coluna podem ou não ser vazios (se a coluna é obrigatória ou opcional) ◆ Campos que compõem a chave primária sempre devem ser diferentes de vazio ➔ Integridade de chave ◆ Restrição que define que os valores da chave primária e chave única devem ser únicos ➔ Integridade referencial ◆ Define que os valores dos campos que aparecem em uma chave estrangeira devem aparecer na chave primária da tabela referenciada 12 Especificação de Banco de Dados Relacional ➔ A especificação de um banco de dados relacional (chamada de esquema do banco de dados) deve conter no mínimo a definição do seguinte: ◆ Tabelas que formam o banco de dados ◆ Colunas que as tabelas possuem ◆ Restrições de Integridade ➔ São utilizadas diversas notações para a especificação do esquema de banco de dados ➔ Neste material apresenta-se: ◆ Notação textual compacta ◆ Notação gráfica 13 Notação Textual Compacta Departamento (CodDept, Nome) Funcionário (CodFunc, Nome, CPF, CodDept) CodDept referencia Departamento ➔ Nesta notação, são listadas as tabelas e, para cada tabela, enumerados, entre parênteses, os nomes das colunas que compõem a tabela ◆ As colunas que compõem a chave primária aparecem sublinhadas ◆ Após a definição da tabela aparece as definições das chaves estrangeiras <nome de coluna ch. estrangeira> referencia <nome de tabela> ou (<nome de coluna>1,<nome de coluna>2,…) referencia <nome de tabela> 14 Notação Gráfica (brModelo) ➔ Na notação compacta não é possível determinar a cardinalidade do relacionamento 15 Transformação entre Modelos ➔ A abordagem ER é voltada à modelagem de dados de forma independente do SGBD considerado ◆ Adequada para a construção do modelo conceitual ➔ A abordagem relacional modela os dados a nível de SGBD relacional ◆ Um modelo neste nível de abstração é chamado de modelo lógico ➔ O projeto lógico de um BD relacional consta da transformação de um modelo ER em um modelo lógico 16 Visão Geral do Projeto Lógico Um determinado modelo ER pode ser implementado através de diversos modelos relacionais ➔ Diferentes modelos relacionais podem resultar em diferentes desempenhos do sistema construído sobre o banco de dados ➔ Diferentes modelos relacionais podem implicar maior facilidade, ou dificuldade de desenvolvimento e manutenção do sistema construído sobre o banco de dados. 17 Transformação ER para Relacional 1. Tradução inicial de entidades e respectivos atributos 2. Tradução de relacionamentos e respectivos atributos 3. Tradução de generalizações/especializações 18 Tradução Inicial de Entidades ➔ Cada entidade é traduzida para uma tabela ➔ Cada atributo da entidade define uma coluna desta tabela ➔ Os atributos identificadores da entidade correspondem às colunas que compõem a chave primária da tabela Esquema relacional: Pessoa (CodPessoa,Nome,Endereço,DataNasc,DataAdm) 19Implementação de Relacionamentos ➔ O fator determinante para a tradução a adotar no caso de relacionamentos é a cardinalidade mínima e máxima das entidades que participam do relacionamento ➔ Existem três formas básicas de tradução de relacionamentos para o modelo relacional ◆ Tabela própria ◆ Colunas adicionais dentro de tabela de entidade ◆ Fusão de tabelas de entidades 20 Tabela Própria ➔ O relacionamento é implementado através de uma tabela própria ➔ Esta tabela contém as seguintes colunas: ◆ colunas correspondentes aos identificadores das entidades relacionadas ◆ colunas correspondentes aos atributos do relacionamento 21 Colunas adicionais dentro de tabela de entidade ➔ A outra alternativa de implementação de um relacionamento é a inserção de colunas em uma tabela correspondente a uma das entidades que participam do relacionamento 22 Fusão de Tabelas de Entidades ➔ Somente pode ser aplicada quando o relacionamento é de tipo 1:1 ➔ A tradução consta de implementar todos atributos de ambas entidades, bem como os atributos do relacionamento em uma única entidade. 23 Relacionamentos Binários - Cardinalidade Máxima 1:1 24 Relacionamentos Binários - Cardinalidade Máxima 1:N 25 Relacionamentos Binários - Cardinalidade Máxima N:N 26 Relacionamento com Atributo Identificador 27 Auto-Relacionamentos 28 Auto-Relacionamentos 29 Relacionamentos Ternários 30 Generalização/Especialização 31 Exercício Uma empresa de consultoria deseja registrar informações sobre seus projetos e consultores. Para cada projeto é necessário armazenar o código, nome e endereço da empresa que solicitou o projeto, o número do projeto, a data de início e de término do projeto, o valor do projeto, o número, nome, número do documento de identidade e especialização dos consultores que participaram do projeto, as horas que trabalharam em cada projeto e a função que exerceu (líder ou membro). Uma mesma empresa pode solicitar diversos projetos e um mesmo consultor pode trabalhar em diversos projetos 1. Criar o modelo conceitual (DER) 2. Criar o modelo lógico 32 Exercício - Resolução - Modelo Conceitual 33 Exercício - Resolução - Modelo Conceitual 34
Compartilhar