Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados 1 Banco de Dados UNIP Prof. Wagner Modelagem de Dados 2 Parte 1 Características e arquitetura de um SGBD 3 A abordagem tradicional SISTEMA 1 Dados Exclusivos Do Sistema 1 SISTEMA 1 SISTEMA 1 Dados Exclusivos Do Sistema 2 SISTEMA 2 Cada sistema define e controla seus próprios dados Redundâncias de dados entre sistemas Ausência de integração entre os sistemas 4 A abordagem com Banco de Dados SISTEMA 1 SISTEMA 2 SGBD Processador de consultas Gerenciador de transações ... Base de Dados Integrada SGBD Sistema Gerenciador De Banco de Dados Os dados de todos os sistemas ficam na mesma base de dados, que é compartilhada A única forma de ter acesso aos dados é através do SGBD 5 O que é um Banco de Dados? Uma grande coleção integrada de dados Modelos do mundo real Entidades (ex. estudantes, cursos) Relacionamentos (ex. Madonna está cursando CS564) Um Sistema Gerenciador de Banco de Dados (SGBD) é um software construído com a função específica de guardar e gerenciar um banco de dados Um Sistema Gerenciador de Banco de Dados (SGBD) é um software construído com a função específica de guardar e gerenciar um banco de dados 6 Porque usar um SGBD? Os dados constituem um bem para a organização e requerem controle integrado Acesso independente e eficiente a dados Redução no tempo de desenvolvimento das aplicações Integridade e segurança dos dados Administração uniforme dos dados Acesso concorrente (compartilhamento) Recuperação de “crashes” Produtividade para o programador Independência dos dados 7 Funções Básicas dos SGBDs Definição do Esquema integrado dos dados DDL – Data Definition Language Dicionário de Dados Contém a definição de todos os objetos do Banco de Dados Armazenado no próprio Banco de Dados Acesso e Manutenção dos Dados DML – Data Manipulation Language Incluir novos dados Excluir dados existentes Alterar dados existentes Consultar (recuperar) dados 8 Características dos SGBDs Independência dos dados: Aplicações isoladas da maneira que os dados são estruturados e armazenados Invisibilidade ou transparência dos detalhes para o usuário (organização, estrutura de armazenamento e estratégia de acesso) Transparência da estratégia lógica de acesso Transparência da organização física do armazenamento e acesso Uma mudança na estrutura dos dados não afeta programas ou sistemas que não utilizam a estrutura modificada 9 Características dos SGBDs Esquema integrado Usuários têm uma visão uniforme dos dados Usuários vêem apenas relações no modelo relacional Integridade declarativa e garantia de consistência 1.000 ≤ Salário ≤ 10.000 Nenhum empregado pode ter um salário maior que seu/sua gerente O usuário especifica a regra e o sistema a garante Visões individualizadas Restrições a certas relações Reorganização das relações por certas classes de usuários 10 Características dos SGBDs Acesso declarativo Linguagem de consulta – SQL Esquemas são definidos usando uma DDL Dados são modificados/consultados usando uma DML O sistema determina a execução Processador de consultas e otimizador Controle de concorrência 11 Controle de concorrência Controle da concorrência de processos é essencial para uma boa performance do SGBD Acessos a discos são freqüentes e lentos, é importante deixar a CPU alocada a diversos processos concorrentemente Executar ações de diferentes processos poderia levar a contradições Ex.: o cheque compensado enquanto é feito um depósito ou um saque na mesma conta corrente O SGBD evita tais problemas: cada usuário pode atuar como se fosse o único usuário do sistema 12 Controle de Transações Execução das solicitações do usuário como uma seqüência atômica de ações no BD (unidade de leituras/gravações) Pode conter uma ou múltiplas operações Cada transação, executada completamente, deve deixar o BD em um estado consistente (se o BD é consistente quando a transação começa) Usuários podem especificar alguma restrições O SGBD não entende a semântica dos dados 13 Transações Transparência na concorrência: Múltiplos usuários podem acessar o banco de dados, porém com uma visão pessoal Controle de concorrência Transparência nas falhas: Mesmo que ocorra uma falha, a consistência da base de dados é garantida Mecanismos de logging e recuperação 14 Propriedades das transações Atomicidade: Propriedade tudo-ou-nada Consistência: Cada transação está correta e não viola a consistência da base de dados Isolamento: Transações concorrentes não interferem umas com as outras Durabilidade: Uma vez que a transação completa seu trabalho (commit), seus efeitos têm garantia de serem refletidos no banco independente do que possa ocorrer 15 Assegurando a Integridade do BD O SGBD assegura a Integridade Física e Lógica do BD Registra um Log (história) de todas as ações realizadas LOG: imagem (cópia fiel) do que mudou no BD Inserir: imagem depois Excluir: imagem antes Alterar: imagem antes e depois Antes da mudança ser feita no BD é feito o registro no LOG Log é seguro e freqüentemente duplicado Todas as atividades relacionadas ao log são gerenciadas transparentemente pelo SGBD Em caso de um problema com o BD, os efeitos das transações parcialmente executadas são desfeitos usando o log, garantindo a integridade do BD 16 Estrutura do sistema indexes data files catalog Query Evaluation Engine File & Access Methods Buffer Manager Disk Space Manager R ec ov er y M an ag er DDLCompilerTransaction & Lock Manager SGBD Forms Application Front ends DML/CLI interface DDL DBAPGMsusers SQL commands 17 Mecanismos de recuperação Backups Logs Recuperação na inicialização do sistema (redo/undo) Recuperação em caso de “crash” do BD Reconstrói o BD vazio Recupera o Backup (recover) – recria o BD até o momento do Backup Aplica todas as Transações registradas como bem sucedidas no Log 18 Tipos de SGBDs Hierárquico Década 1960 (IBM IMS/DB ainda em uso) Representação de dados de forma hierárquica (pai-filho) Apontadores armazenados fisicamente junto com os dados Em Redes Padrão estabelecido por grupo de normatização (CODASYL) 1969 Representação de dados em redes Apontadores armazenados fisicamente junto com os dados Relacional Proposta teórica: 1970 – E.F.Codd Primeiras implementações – década 1980 Dados organizados em tabelas Não agrega apontadores para relacionar dados Banco de Dados 19 Parte 2 - Modelo Entidade-Relacionamento Conceitos 20 O Projeto do BD O projeto de um novo BD dá-se em duas fases: 1. Modelagem Conceitual: o modelo conceitual é construído na forma de um diagrama entidade- relacionamento 2. Projeto Lógico: define como o banco de dados será implementado em um SGBD específico. A forma mais usual é a adoção do modelo relacional, com o refinamento do esquema (normalização) para redundâncias e anomalias de atualização 21 A Abordagem Entidade-Relacionamento A abordagem ER foi criada em 1976 por Peter Chen Nesta abordagem: o modelo de dados é representado através de um modelo entidade-relacionamento (Modelo ER ou MER) o modelo ER é representado graficamente através de um diagrama entidade-relacionamento (DER) 22 Entidade O conceito fundamental da abordagem ER é o conceito de entidade ENTIDADE = conjunto de objetos da realidade modelada sobre os quais deseja-semanter informações no banco de dados 23 Entidade Alguns exemplos de entidades: produtos, tipos de produtos, vendas, compras em um sistema de informações industrial clientes, contas correntes, cheques e agências em um sistema de contas correntes de um banco Uma entidade pode representar tanto objetos concretos da realidade (pessoas, automóveis) quando objetos abstratos (departamentos, contas a pagar) 24 Em um DER, uma entidade é representada através de um retângulo que contém o nome da entidade. Exemplos: Pessoa: designa o conjunto de todas as pessoas sobre as quais se deseja manter informações no banco de dados Departamento: designa o conjunto de todas os departamentos sobre os quais se deseja manter informações no banco de dados Entidade Pessoa Departamento 25 Atributos Entidade: Pessoa Atributos: Nome, Endereço, Data de Nascimento, RG, CPF Entidade: Departamento Atributos: Código do Departamento, Nome, Gerente ATRIBUTOS = Propriedades ou características que definem uma Entidade 26 Ocorrências de uma Entidade Ocorrência de uma Entidade é um objeto particular do tipo da Entidade Cada ocorrência possui valor para cada um dos Atributos da Entidade Objetos diferentes no mundo real são representados por ocorrências diferentes na Entidade No exemplo abaixo, ocorrências da Entidade Empregado Empregado -4.000SoaresE1 C23.000SilvaE2 C55.200SantosE3 C52.300SouzaE5 Categ FuncionalSalárioNomeCódigo 27 Identificador de uma Entidade Cada Entidade possui um Atributo ou um conjunto de Atributos que identifica de forma única cada uma de suas ocorrências Identificador de uma Entidade é um Atributo ou um conjunto de Atributos que identifica de forma única cada ocorrência de uma Entidade e é mínimo com essa característica Identificador da Entidade Empregado: Código (é obrigatoriamente diferente para cada Empregado Empregado -4.000SoaresE1 C23.000SilvaE2 C55.200SantosE3 C52.300SouzaE5 Categ FuncionalSalárioNomeCódigo 28 Atributos São representados conforme diagrama abaixo: Na prática, atributos não são representados graficamente, para não sobrecarregar os diagramas. Pode-se utilizar uma representação textual dos atributos PROJETO nome código tipo 29 Atributos Simples Não dividido em partes Compostos Divididos em partes (outros atributos) CLIENTE nome código endereço Endereço pode ser dividido em: • Rua • Número • Complemento • Cidade • Estado • CEP 30 Atributos Monovalorados Valor único (para a entidade) Multivalorados Conjunto de valores (para a entidade) Cardinalidade CLIENTE nome código telefone (0,n) 31 Atributos Nulos Entidade não possui valor para o atributo “não é aplicável” “desconhecido” Derivados Derivado de outros atributos ou entidades FUNCIONÁRIO nome código data contratação tempo de casa qtd dependentes 32 Relacionamento Associação entre ocorrências de Entidades RELACIONAMENTO = conjunto de associações entre entidades 33 EmpregadoDepartamento Lotação Relacionamento Em um DER, um relacionamento é representado através de um losango ligado, por linhas, aos retângulos que representam as entidades que participam do relacionamento Exemplos: CursoAluno Matrícula 34 Relacionamento Cada ocorrência de um relacionamento associa 1 ocorrência de uma das Entidades relacionadas com 1 ocorrência da outra Entidade Funcionário Código do Funcionário Nome Cargo Data de Nascimento Salário 1001 José Silva Vendedor 15/1/1980 R$ 3.200,00 1002 José Oliveira Operador Maq 20/5/1974 R$ 1.800,00 1003 Maria Silva Telefonista 22/7/1982 R$ 950,00 Projeto Código do Projeto Nome do Projeto P01 Novo Sistema de Compras P02 Correção Sistema Comercial P03 Banco de Dados de Clientes Alocação Código do Funcionário Código do Projeto 1001 P02 1002 P02 1003 P01 ProjetoFuncionário Alocação 35 Cardinalidade de Relacionamentos É a propriedade que indica quantas ocorrências de uma entidade podem estar associadas a uma determinada ocorrência através do relacionamento. Há duas cardinalidades a considerar: cardinalidade máxima e cardinalidade mínima 36 Cardinalidade de Relacionamentos Cardinalidade (mínima, máxima) de entidade em relacionamento = número (mínimo, máximo) de ocorrências de entidade associadas a uma ocorrência da entidade em questão através do relacionamento 37 Cardinalidade de Relacionamentos DEPARTAMENTO EMPREGADOLOTAÇÃO1 n Expressa que a uma ocorrência de EMPREGADO (entidade do lado oposto da anotação) pode estar associada ao máximo uma (“1”) ocorrência de DEPARTAMENTO Expressa que a uma ocorrência de DEPARTAMENTO (entidade do lado oposto da anotação) podem estar associadas ao máximo muitas (“n”) ocorrências de EMPREGADO 38 Classificação de relacionamentos binários A cardinalidade máxima pode ser usada para classificar relacionamentos binários (relacionamentos cujas ocorrências contém duas ocorrências da entidade) Os relacionamentos binários podem ser classificados em: n:n - muitos-para-muitos 1:n - um-para-muitos 1:1 - um-para-um 39 Classificação de relacionamentos binários Exemplos: relacionamentos 1:1 EMPREGADO MESA ALOCAÇÃO 1 1 PESSOA CASAMENTO marido esposa 1 1 (Relacionamento binário que envolve apenas uma entidade) 40 Classificação de relacionamentos binários Exemplos: relacionamentos 1:n CURSOINSCRIÇÃO n 1 ALUNO DEPENDENTE 1 n EMPREGADO EMPREGADO SUPERVISÃO supervisor supervisionado 1 n 41 Classificação de relacionamentos binários Exemplos: relacionamentos n:n PACIENTECONSULTA n n MÉDICO PROJETOALOCAÇÃO n n ENGENHEIRO FORNECEDORCAPACIDADE n n PEÇA PRODUTO COMPOSIÇÃO composto componente n n 42 Cardinalidade Mínima Representa o número mínimo de ocorrências de entidade que são associadas a uma ocorrência de uma entidade através de um relacionamento Para o projeto de BD considera-se apenas as cardinalidades mínimas 0 e 1 43 Cardinalidade Mínima A cardinalidade mínima 1 também é chamada de “associação obrigatória”, pois indica que o relacionamento deve obrigatoriamente associar uma ocorrência de entidade a cada ocorrência da entidade em questão A cardinalidade mínima 0, seguindo o mesmo raciocínio, recebe a denominação de “associação opcional” 44 Cardinalidade Mínima Exemplo: e1 e2 e3 e4 e1,m1 e2,m2 e3,m6 e4,m4 m1 m6 m4m2 m5 m3 ALOCAÇÃO (1,1) EMPREGADO MESA (0,1) Cada empregado dever ter a ele alocada obrigatoriamente uma mesa (cardinalidade mínima 1) e que uma mesa pode existir sem que a ela esteja alocado um funcionário (cardinalidade mínima 0) 45 Ex. de uso de entidades e relacionamentos DER para o controle acadêmico de uma universidade: RESPONSÁVEL (1,1) DEPARTAMENTO DISCIPLINA (0,n) INSCRIÇÃO(0,n)ALUNO CURSO(1,1) DISC-CURSO (0,n) (0,n) PRÉ-REQUIS liberadoraliberada (0,n) (0,n) 46 Atributos Exemplo: atributo de relacionamento n:n Obs: um engenheiro pode atuar em diversos projetos, exercendo diferentes funções PROJETOATUAÇÃO (0,n) (0,n) ENGENHEIRO NomeCódigo Código Título Função 47 Atributos Exemplo: atributo de relacionamento 1:n Obs: vendas a prazo são relacionadas a uma financeira. Os atributos do relacionamento poderiam estar incluídos na entidade VENDA, como atributos opcionais. Na opção acima fica explícito o fato de os atributos pertenceremsomente a vendas a prazo VENDAFINANCIAMENTO (0,1) (0,n) FINANCEIRA taxa de juros núm. de parcelas Banco de Dados 48 Parte 3 - Modelo Entidade-Relacionamento Identificador Generalização / Especialização 49 Identificando entidades No exemplo abaixo, o atributo código é identificador Cada pessoa possui um código diferente O atributo código é um identificador simples PESSOA Código Nome Endereço 50 Identificando entidades Exemplo de identificador composto: considera-se o almoxarifado de uma empresa de ferragens os produtos ficam armazenados em prateleiras estas prateleiras encontram-se em armários organizados em corredores para cada prateleira deseja-se saber sua capacidade em metros cúbicos PRATELEIRA número do corredor número da prateleira capacidade 51 Identificando entidades Caso onde o identificador de uma entidade é composto por atributos da própria entidade e também por relacionamentos dos quais a entidade participa (relacionamento identificador) Exemplo: código DEPENDENTE (1,1) (0,n) EMPREGADO nome número sequência nome 52 Identificando entidades No exemplo anterior: cada dependente está relacionado a exatamente um empregado um dependente é identificado pelo empregado ao qual ele está relacionado e por um número de sequência que distingue os diferentes dependentes de um mesmo empregado No DER, o relacionamento usado como identificador é indicado por uma linha mais densa Nesse caso, alguns autores dizem que a entidade DEPENDENTE é uma entidade fraca fraca significa que a entidade só pode existir quando relacionada a outra entidade e que usa como parte de seu identificador, entidades relacionadas 53 Conceitos de um modelo conceitual são baseados em mecanismos de abstração Os três mais importantes: classificação/instanciação generalização/especialização agregação/desagregação Mecanismos de abstração 54 Classificação Permite que objetos compartilhando propriedades semelhantes sejam considerados como ocorrências de uma classe de objetos Relação inversa: instanciação Classificação no modelo ER: Entidade e ocorrência de entidade Relacionamento e ocorrência de relacionamento Atributo e valor 55 Generalização/Especialização Define uma relação de subconjunto entre elementos de 2 ou mais classes todas as propriedades definidas para a classe generalizada são herdadas pelas classes especializadas todo elemento de um subconjunto especializado é também elemento do seu respectivo conjunto generalizado Relação inversa: especialização 56 Generalizacão/Especialização Com este conceito é possível atribuir propriedades particulares a um subconjunto das ocorrências (especializadas) de uma entidade genérica (por exemplo adicionar atributos descritivos a uma subclasse de entidades) No DER, o símbolo que representa a generalização/especialização é um triângulo isósceles 57 A entidade cliente é dividida em dois subconjuntos, as entidades PESSOA FÍSICA e PESSOA JURÍDICA, cada uma com propriedades próprias Cada ocorrência da entidade especializada possui, além de suas próprias propriedades, a herança das propriedades da ocorrência da entidade genérica correspondente A entidade PESSOA FÍSICA possui, além de seus atributos particulares CIC e sexo, também todas as propriedades da ocorrência da entidade CLIENTE correspondente, ou seja, os atributos nome e código, seu identificador (atributo código) e o relacionamento com a entidade FILIAL Generalizacão/Especialização Exemplo: CLIENTE nome(1,1) código PESSOA FÍSICA PESSOA JURÍDICA CIC sexo CGC tipo de organização FILIAL (0,n) 58 Generalizacão/Especialização Restrições de Integridade - a generalização pode ser: Parcial (p) ou total (t): total: toda ocorrência da entidade generalizada tem de ser ocorrência de pelo menos uma entidade especializada parcial: uma ocorrência da entidade generalizadas não precisa ser ocorrência de uma entidade especializada 59 Generalizacão/Especialização Exclusivo (e) ou interseção (o) exclusivo: toda ocorrência da entidade generalizada pode ser ocorrência de no máximo uma entidade especializada interseção: uma ocorrência da entidade generalizada pode ser ocorrência de várias entidades especializadas 60 PESSOA PROFESSOR ALUNO (t,e) • toda pessoa é um professor ou um aluno (t) • um professor não pode ser aluno e vice- versa (e) Generalizacão/Especialização Exemplo: 61 • uma pessoa pode ser um professor ou um aluno (p) • um professor não pode ser aluno e vice- versa (e) Generalizacão/Especialização Exemplo: PESSOA PROFESSOR ALUNO (p,e) 62 • uma pessoa pode ser um professor ou um aluno (p) • um professor pode ser aluno e vice-versa (o) Generalizacão/Especialização Exemplo: PESSOA PROFESSOR ALUNO (p,o) 63 • Se nada for especificado: • (p) • (o) Generalizacão/Especialização Exemplo: PESSOA PROFESSOR ALUNO (p,o) 64 Exemplo de generalização/especialização TOTAL Indica que todo CLIENTE é: ou PESSOA FÍSICA ou PESSOA JURÍDICA CLIENTE PESSOA JURÍDICA (t,e) PESSOA FÍSICA PESSOAJURÍDICA IS-A CLIENTE PESSOA FÍSICA IS-A CLIENTE Generalizacão/Especialização 65 FUNCIONÁRIO MOTORISTA SECRETÁRIA (p,e)tipo de funcionário Indica que nem todo FUNCIONÁRIO é: MOTORISTA ou SECRETÁRIA Normalmente, quando ocorre uma especializacão parcial, aparece um atributo na entidade genérica (no caso, tipo de funcionário) para identificar o tipo de ocorrência da entidade genérica Este atributo não é necessário no caso de especializações totais, já que a presença da ocorrência em uma de suas especializações é suficiente para identificar o tipo da entidade Generalizacão/Especialização Exemplo de generalização/especialização PARCIAL 66 Generalizacão/Especialização Uma entidade pode ser especializada em qualquer número de entidades (inclusive em uma única) No exemplo anterior, se apenas os motoristas possuíssem propriedades particulares, haveria apenas uma entidade especializada, a de motoristas Não há limite no número de níveis hierárquicos da generalização/especialização, ou seja: uma entidade especializada em uma generalização/especialização pode ser entidade genérica em uma outra generalização/especialização 67 Generalizacão/Especialização Técnica: quando usar? Todas as ocorrências podem ser identificadas da mesma forma Existem atributos/relacionamentos comuns a uma série de ocorrências Existem ocorrências que têm atributos ou relacionamentos adicionais Consegue-se dizer que a entidade especializada É um tipo da entidade generalizada 68 Generalizacão/Especialização Técnica: quando não usar? As entidade especializadas não têm uma forma comum de identificação Não se consegue dizer que a entidade especializada é um tipo da entidade generalizada naturalmente Não adicionar clareza nem riqueza semântica: a diferença é um único atributo? (considerar atributo opcional) a diferença é um relacionamento? (considerar colocar cardinalidade mínima 0) deseja-se diferenciar duas ou mais coleções de ocorrências sem propriedades adicionais? (considerar colocar um atributo para diferenciar, ou um relacionamento) 69 Entidade Associativa ou Agregações Numa Clínica Médica, o relacionamento Consulta associa Médicos e Pacientes Um Médico pode ter Consulta com diversos Pacientes(N) Um Paciente pode ter Consulta com diversos Médicos (N) Um dado Paciente somente pode ter uma Consulta com um dado Médico: o relacionamento Consulta não permite múltiplas consultas do um Paciente com um mesmo Médico PACIENTECONSULTA (0n) (0,n) MÉDICO 70 Entidade Associativa ou Agregações Para o Modelo de Dados permitir que um Paciente possa agendar diversas consultas com o mesmo Médico é necessário transformar Consulta em uma Entidade Consulta: Data, Hora, Local, CRM Médico, Código Paciente Uma entidade associativa é uma redefinição de um relacionamento que passa a ser uma entidade 71 Entidade Associativa ou Agregações Necessário alterar o modelo incluindo os relacionamentos entre Médico e Consulta e entre Consulta e Paciente PACIENTECONSULTA n n MÉDICO 72 Entidade Associativa Sendo CONSULTA uma entidade, é possível associá-la através de relacionamentos a outras entidades (0,N) PRESCRIÇÃO MEDICAMENTO CONSULTA MEDICO PACIENTE (0,N) (0,N)(0,N)(1,1) (1,1) M-C P-C 73 Construir um Modelo de Dados para a seguinte situação: - Cada Empregado está lotado em um Departamento - Cada Empregado tem um Cargo - Cada Cargo tem um valor de salário - Cada Departamento pode ter um Empregado que é o seu Chefe - Um Empregado somente pode ser Chefe de um Departamento - Cada Empregado pode participar de diversos Projetos. Em cada Projeto ele desempenha uma Função específica Os seguintes dados precisam esta no Modelo: - Data de contratação de um Empregado - Data de entrada de um Empregado em um Projeto - Todos os cargos ocupados por um Empregado e respectivos salários - Data de entrada de um Empregado em um Departamento - Data em que um Empregado assumiu a chefia de um Departamento 74 Construir um Modelo de Dados para a seguinte situação: Uma Administradora de Imóveis trabalha com administração de condomínios e com a administração de aluguéis - Os condomínios são formados por unidades condominiais - Cada unidade condominial é de propriedade de uma ou mais pessoas. Uma pessoa pode possuir diversas unidades - Cada unidade pode ser alugada para apenas uma pessoa. Uma pessoa pode alugar diversas unidades Os seguintes dados precisam estar no Modelo: - Dados da unidade: metragem, quartos - Data de inicio do aluguel, valor do aluguel - Valor do condomínio 75 Construir um Modelo de Dados para a seguinte situação: São as seguintes as características de uma Locadora de Vídeo: Possui cerca de 2.000 DVDs de filmes. Cada DVD possui um número. Para cada filme é registrado seu título e sua categoria (comédia, drama, aventura, etc.). Cada filme também recebe um numero identificador unico. Para cada DVD é controlado que filme ele contém. Cada DVD contém somente um filme. Para cada filme registrado há pelo menos um DVD, podendo haver mais de um DVD (copias) para o mesmo filme. Os clientes podem solicitar filmes de seus atores prediletos. Por isso, é necessário manter a informação dos atores que estrelam cada filme. Nem todo filme possui atores principais. Para cada ator os clientes às vezes solicitam outras informações como nome real, nacionalidade, data de nascimento. A locadora possui muitos clientes cadastrados. Somente clientes cadastrados podem alugar filmes. Para cada cliente é registrado seu nome e sobrenome, seu telefone e seu endereço. Além disso, cada cliente recebe um número de associado. As locações são cobradas por dia, sendo necessário controlar as datas de retirada e devolução dos DVDs. Sempre que um cliente solicitar o aluguel de um filme que ele já tenha retirado anteriormente, o sistema deverá conseguir identificar essa situação e notifica-lo disso. Construa o modelo de dados completo, detalhando todas as entidades e/ou tabelas que constituem o modelo de dados, com seus atributos e identificando a chave primaria. Devem ser definidas, no mínimo, tabelas para: Clientes Filmes Fitas Atores Categorias de Filmes Controle dos filmes alugados pelos Clientes Devem ser definidas outras tabelas necessárias para estabelecer os relacionamentos e os controles necessários. O modelo de dados tem que permitir responder as seguintes consultas: Lista de todos os títulos de filmes em ordem alfabética Lista de todos os títulos de filmes, em ordem de categoria e dentro categoria, em ordem alfabética de título Lista de todos os filmes com um ator informado Lista de todos os filmes do tipo comédia que tenha fitas disponíveis Lista de todos os filmes com fitas disponíveis com um ator informado Número das fitas disponíveis de um filme solicitado Lista dos filmes atualmente alugados por um Cliente Lista dos filmes já alugados em qualquer tempo por um Cliente Lista de todos os filmes que estão alugados no momento Banco de Dados 76 Banco de Dados – Parte 4 Modelo Lógico de Dados Modelo Relacional 77 Composição de um Banco de Dados Relacional É composto de tabelas ou relações O termo tabela é mais comum nos produtos comerciais e na prática O termo relação foi utilizada na literatura original sobre a abordagem relacional (daí a denominação “relacional”) e é mais comum na área acadêmica 78 Tabelas Tabela é um conjunto não ordenado de linhas (tuplas, na terminologia acadêmica) Cada linha é composta por uma série de campos (valor de atributo na terminologia acadêmica) Cada campo é identificado por um nome de campo (nome de atributo, na terminologia acadêmica) 79 Tabelas O conjunto de campos homônimos de todas as linhas de uma tabela formam uma coluna Emp -D1SoaresE1 C2D1SilvaE2 C5D2SantosE3 C5D1SouzaE5 Categ FuncionalCódigoDeptoNomeCódigoEmp 80 Tabelas Observações: Cada linha representa uma tupla As linhas de uma tabela não têm ordenação - a ordem de recuperação é arbitrária, a menos que uma ordenação seja especificada na instrução de consulta Não existem linhas duplicadas Não é possível referenciar linhas de uma tabela por posição Os valores de campo de uma tabela são atômicos e monovalorados As consultas podem ser feitas por qualquer critério envolvendo os campos de uma ou mais linhas 81 Chaves Candidatas Coluna ou conjunto de colunas de uma Tabela que identifica de forma única cada linha da tabela e é mínimo (no caso de conjunto) nessa condição O fato de todas as linhas de uma tabela serem distintas entre si garante a existência de ao menos uma chave candidata na tabela Aluno ( RA, Nome, CPF, Data_Nascimento, RG, Emissor_RG) Chaves candidatas: RA CFP (RG, Emissor_RG) (mínimo, precisa do par de valores) 82 Chave Candidata Observações: Exige-se que seja mínima (quando todas as suas colunas forem efetivamente necessárias para garantir o requisito de unicidade de valores da chave) Uma tabela sempre tem ao menos uma chave candidata e pode ter mais do que uma Não existe uma classificação para as chaves candidatas. Todas a mesma relevância na tabela 83 Chave Primária Uma das chaves candidatas da Tabela deve ser escolhida com sua Chave Primária Não existe regra para decidir qual das chaves candidatas deve ser a escolhida Na escolha deve ser considerada a existência de referências a esta chave primária em outras tabelas (chave estrangeira) Ao definir uma chave primária está se definindo uma restrição de integridade e não um caminho de acesso (índice) 84 Chave Estrangeira É uma coluna ou uma combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma tabela Usada para implementar relacionamento em um banco de dados relacional 85 Chave Estrangeira Exemplo: VendasD3 EngenhariaD2 ComprasD1 NomeDeptoCódigoDepto 543523345D1SoaresE5 125323422D2SilvaE3 123124112D2SantosE2 132123123D1SouzaE1CICCódigoDeptoNomeCódigoEmp Depto Emp 86 Chave Estrangeira Observações: No exemplo anterior, a coluna CodigoDepto da tabela Emp é uma chave estrangeira em relação à chave primária da tabela Dept Na tabela Emp, os valores do campo CodigoDepto de todas as linhas devem aparecer na coluna CodigoDepto da tabela Dept A existência de uma chave estrangeira impõe restrições que devem ser garantidas ao executar as diversas operações e alteração do banco de dados 87 Mapeamento do Modelo Conceitual para o Modelo Relacional Um modelo conceitual construído utilizando o Modelo Entidade-Relacionamento pode ser mapeado para um modelo lógico Relacional A equivalência mais direta é cada Entidade = uma Tabela cada Atributo = uma Coluna cada Ocorrência = uma Linha 88 Mapeamento de Entidades Para cada Entidade deve ser criada uma relação (tabela) Para cada atributo simples incluir uma coluna na tabela No caso de atributo composto, incluir somente os atributos simples que o compõe (Endereço) EMPREGADO nome código Endereço DataNasc Empregado(Codigo, Nome, Logradouro, Numero, Bairro, Cidade, Estado, DataNasc) 89 Nome das colunas O nome do atributo(modelo conceitual) pode ser diferente do nome do campo da tabela (coluna) Objetivo Facilidade de programação como o uso de nomes curtos Evitar nomes iguais. Ex.: Todas entidades com o atributo nome Evitar espaços no nome da coluna, pois são proibidos nos BD relacionais Dica Defina um padrão para converter o nome dos atributos, principalmente dos nomes compostos que necessitam abreviação. Ex.: Nome do Responsável NomeRes 90 Nome para a chave primária É boa prática compor o nome da chave primária com uma identificação da tabela a qual ela pertence Como geralmente, elas se tornam chaves estrangeiras de outras tabelas, esta prática facilita a programação e compreensão dos campos EMPREGADO nome código Endereço Data de Nascimento Empregado(CodEmp, Nome, Endereco, DataNasc) 91 Mapeamento de Atributos Multivalorados Para cada atributo multivalorado deve ser criada uma tabela formada pela chave primária da Tabela/Entidade e pelo atributo multivalorado A chave primária da nova tabela será o par de atributos Se o atributo multivalorado for composto. Por ex.: Ingrediente formado por Nome do ingrediente e quantidade, todo o grupo vai para a nova tabela RECEITA nome código Modo de Preparo Ingrediente (n) Receita(Codigo, Nome, Modo_Preparo) Ingrediente_Receita (CodReceita, Ingrediente) 92 Mapeamento de Relacionamentos Um relacionamento pode ser transformado em: Uma tabela Uma coluna de uma das tabelas envolvidas Fusão de duas tabelas Esta decisão depende da cardinalidade mínima e máxima dos relacionamentos No caso da fusão devemos considerar também outros relacionamentos da entidade 93 Entidades Fracas Criar uma tabela para cada entidade fraca Nessa tabela incluir como chave estrangeira a chave primária da tabela que representa a entidade possuidora/identificadora As entidades fracas têm chave primária composta de duas partes: A chave primária da tabela (entidade) possuidora A chave parcial da tabela(entidade) fraca código DEPENDENTES (1,1) (0,n) EMPREGADOS nome Codigo nome Empregados(CodEmp, Nome) Dependentes(CodEmp, CodDep, Nome, DataNasc) Data de Nascimento Dependencia 94 Implementação de Relacionamentos 1:1 95 Relacionamentos Binários - Um para Um Ambas entidades têm participação opcional adição de colunas 96 Relacionamentos Binários - Um para Um Ambas entidades têm participação opcional tabela própria 97 Relacionamentos Binários - Um para Um Ambas entidades têm participação opcional fusão de tabelas 98 Relacionamentos Binários - Um para Um Ambas entidades têm participação opcional Solução por fusão de tabelas é inviável Chave primária artificial (já que pode não estar completa) Solução por adição de colunas melhor Menor número de junções Menor número de chaves Solução por tabela própria aceitável 99 Implementação de Relacionamentos 1:1 100 Relacionamentos Binários - Um para Um Participação opcional/obrigatória Fusão de tabelas 101 Relacionamentos Binários - Um para Um Participação opcional/obrigatória Adição de colunas 102 Relacionamentos Binários - Um para Um Adição de colunas versus fusão de tabelas Fusão de tabelas é melhor em termos de númerode junções e número de chaves Adicão de colunas é melhor em termos de campos opcionais Fusão de tabelas é considerada a melhor e adição de colunas é aceitável 103 Relacionamentos Binários - Um para Muitos 104 Relacionamentos Binários - Um para Muitos Já temos duas tabelas, uma para cada conjunto de entidades que participam do relacionamento Incluir como chave estrangeira, na tabela do “lado muitos” (o “lado N”), a chave primária da tabela do “lado um” Incluir também colunas com os atributos do relacionamento 105 Relacionamentos Binários - Um para Muitos 106 Relacionamentos Binários – Muitos para Muitos 107 Relacionamentos Binários – Muitos para Muitos Já temos duas tabelas, uma para cada conjunto de entidades que participa do relacionamento Criar uma nova tabela contendo, como chaves estrangeiras, as chaves primárias dessas duas tabelas A combinação dessas chaves estrangeiras forma a chave primária da nova tabela Incluir também colunas com os atributos do relacionamento 108 Relacionamentos Binários – Muitos para Muitos Banco de Dados 109 Banco de Dados – Parte 5 Modelo Lógico de Dados Modelo Relacional Restrições de Integridade Generalizações / Especializações 110 Tabela: representada por um retângulo Relacionamentos somente binários (entre 2 tabelas) – tipo 1:N Se for obrigatório, corte transversal: Diagrama para Modelo Lógico Relacional 111 Exemplos Departamento Empregado Engenheiro Participa_Proj Projeto Departamento (Codigo, Nome) Empregado (Matricula, Nome, CodDepto) 112 Chave Estrangeira - restrições impostas Quando da inclusão de uma linha na tabela que contém a chave estrangeira: deve ser garantido que o valor da chave estrangeira, se informado, exista na coluna da chave primária referenciada Se o relacionamento não for do tipo obrigatório, a chave estrangeira pode não ser informada Exemplo: um novo empregado deve atuar em um departamento já existente no banco de dados (na tabela Departamento) 113 Chave Estrangeira - restrições impostas Quando da alteração do valor da chave estrangeira: deve ser garantido que o novo valor de uma chave estrangeira, se informado, exista na coluna da chave primária referenciada Exemplo: se um empregado muda de departamento, deve-se garantir que o novo departamento já exista no banco de dados (na tabela Departamento) 114 Chave Estrangeira - restrições impostas Quando da 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 Exemplo: um departamento não pode ser excluído, caso exista algum empregado que o referencie 115 Chave Estrangeira - restrições impostas Quando da alteração do valor da chave primária referenciada pela chave estrangeira: deve ser garantido que na coluna chave estrangeira não apareça o antigo valor da chave primária que está sendo alterada Exemplo: um departamento somentepode ter o seu código alterado se não for referenciado por nenhum empregado 116 Chave Estrangeira Pode acontecer de uma chave estrangeira referenciar a chave primária da própria tabela (e não de uma tabela diferente, como no exemplo anterior). Exemplo: Emp E1D1SoaresE5 E5D2SilvaE3 E5D2SantosE2 -D1SouzaE1 Código Emp GerenteCódigoDeptoNomeCódigoEmp Código Emp Gerente é uma chave estrangeira que Referencia a chave da própria tabela (auto-relacionamento) 117 Valores Vazios Normalmente, os SGBDs relacionais exigem que todas as colunas que compõem a chave primária sejam obrigatórias A mesma exigência não é feita para as demais chaves Atenção: Vazio é diferente de zeros ou brancos 118 Restrições de Integridade Banco de dados íntegro: reflete corretamente a realidade representada pelo banco de dados e os dados são consistentes entre si Um SGBD deve garantir a integridade dos dados através do mecanismo de restrição de integridade 119 Restrições de Integridade Restrição de integridade: regra de consistência de dados que é garantida pelo próprio SGBD Na abordagem relacional as restrições de integridade estão classificadas em: Integridade de domínio Integridade de vazio Integridade de chave Integridade referencial 120 Restrições de Integridade Domínio: É um conjunto de valores (alfanumérico, numérico, ...) que um campo de uma tabela pode assumir É chamado de domínio da coluna ou domínio do campo 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) Nos SGBDs relacionais é possível usar domínios pré-definidos (número inteiro, número real, alfanumérico de tamanho definido, data, ...) É possível usar um conjunto finito de valores: (Masc , Fem), (Sim , Não), (1, 2, , 5, 7, 11, 13) É possível usar uma fórmula: > 0 e < 1000 121 Restrições de Integridade Valores vazios: Deve-se especificar se o conteúdo de uma coluna pode estar vazio (em inglês “null”) Estar vazio significa que o campo não recebeu nenhum valor de seu domínio As colunas que podem conter valores vazios são as colunas opcionais As colunas que não podem conter valores vazios são as colunas obrigatórias 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 não podem ser vazios 122 Restrições de Integridade Integridade de chave: Trata-se da restrição que define que os valores da chave primária 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 123 Restrições de Integridade Declarativas As restrições citadas devem ser garantidas automaticamente por um SGBD relacional a partir da sua declaração na definição das tabelas, não sendo necessário nenhuma programação para garanti-las explicitamente São restrições de Integridade Declarativa: Chave Primária Unicidade (chaves candidatas) Integridade Referencial (Chave Estrangeira) Integridade de Domínio Integridade de Vazio 124 Restrições Semânticas de Integridade Existem restrições de integridade que não podem ser definidas de forma declarativa para um SGBD relacional São chamadas restrições semânticas Necessário que seja feita programação “procedural” na aplicação ou no SGBD Exemplos: um empregado do departamento “Finanças” não pode ter a categoria funcional “Engenheiro” um empregado não pode ter um salário maior que seu superior imediato 125 Generalização/Especialização (1 Tabela) Prestadores De Serviços nome CPF Horistas Mensalistas custoHora HorasTrabalho Salario Endereco Observações •Minimizando a junções •Menor número de chaves •Muitos atributos opcionais Alternativa (1 tabela): PrestadoresServicos(CPF, Nome, Endereco, CustoHora, HorasTrabalhadas, Salario, Tipo) Regras •Chave primária referente a entidade genérica •Adicionar uma coluna Tipo •Uma coluna para cada atributo da entidade genérica e das especializadas •Possíveis colunas referentes aos relacionamentos envolvendo as entidades 126 Generalização/Especialização (2 Tabelas) Prestadores De Serviços nome CPF Horistas Mensalistas custoHora HorasTrabalho Salario Endereco Alternativa (2 tabelas): Horistas, Mensalistas Horistas(CPF,Nome,Endereco,CustoHora,HorasTrabalho) Mensalistas(CPF, Nome, Endereco Salario) Observações • Unicidade da chave primária não pode ser garantida de forma declarativa pelo SGBD, por serem 2 tabelas independentes • Necessário programação procedural 127 Generalização/Especialização (3 Tabelas) Abordagem geral (3 tabelas): Prestadores_de_Servicos, Horistas, Mensalistas Prestadores_de_Servicos(CPF, Nome, Endereco, Tipo) Horistas(CPF,CustoHora,HorasTrabalhadas) Mensalistas(CPF,Salario) Regras • Incluir a chave primária da tabela genérica em cada tabela especializada como chave estrangeira •Adicionar o atributo Tipo Observações • Redução de atributos opcionais • Ocorrência de uma das 2 tabelas especializadas conforme o valor do atributo Tipo somente pode ser garantida através de programação procedural Prestadores De Serviços nome CPF Horistas Mensalistas custoHora HorasTrabalho Salario Endereco Banco de Dados 128 Banco de Dados – Parte 6 Modelo Lógico de Dados Modelo Relacional Normalização 129 Objetivos da Normalização Reagrupar informações para eliminar redundâncias de dados eliminar estruturas inexistentes no modelo ER (atributos multivalorados) Processo de normalização – baseado nas Formas Normais 130 Forma Normal Regra que deve ser obedecida por uma tabela para ser considerada “bem projetada” Diversas formas normais: Regras rígidas para verificar tabelas relacionais Serão abordadas: Primeira Forma Normal (1FN), Segunda Forma Normal (2FN), Terceira Forma Normal (3FN) Forma Normal de Boyce-Codd (FNBC) 131 Processo de Normalização Esquema não normalizado Esquema na 1FN Esquema na 2FN Esquema na 3FN/FNBC normalizado 1 FN 2 FN 3FN/FNBC 132 Passagem para a primeira forma normal Primeira forma normal (1FN) = Diz-se que uma tabela está na Primeira Forma Normal(1FN), quando todas as suas linhas são distintas e ela não contém tabelas aninhadas, ou seja, todos as suas colunas são monovaloradas Primeira forma normal (1FN) = Diz-se que uma tabela está na Primeira Forma Normal(1FN), quando todas as suas linhas são distintas e ela não contém tabelas aninhadas, ou seja, todos as suas colunas são monovaloradas 133 Passagem para a primeira forma normal Para transformar um esquema de tabela não- normalizada em um esquema na 1FN há duas alternativas: Construir uma única tabela com redundância de dados Construir uma tabela para cada tabela aninhada 134 Dependência Funcional Para entender a segunda e terceira formas normais, é necessário conhecer o conceito de Dependência Funcional Em uma tabela relacional, diz- se que: uma coluna B depende funcionalmente de uma coluna A (ou que a coluna A determina a coluna B) quando, se sempre que duas linhas tiverem o mesmo valor na coluna A, terão o mesmo valor na coluna B. Indica-se: A -> B 135 Dependência Funcional No exemplo abaixo, podemos dizer que: Código → Salário Cada valor de Código está associado sempre ao mesmo valor de Salário Salário depende funcionalmente deCódigo 10 10 10 5 10 5 10 E1 E3 E1 E2 E3 E2 E1 ...Salário...Código... 136 Dependência Funcional Exemplos: 137 Dependência Funcional Exemplos: 138 Dependência Funcional Exemplos: 139 Passagem para a segunda forma normal Objetiva eliminar certos tipos de redundância de dados Exemplo: (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Os dados referentes a empregados (Nome, Cat e Sal) estão redundantes, para os empregados que trabalham em mais de um projeto 140 Passagem para a segunda forma normal Uma tabela encontra-se na segunda forma normal (2FN) se, além de encontrar-se na 1FN, cada coluna não chave depende da chave primária completa Uma tabela que não se encontra na 2FN contém dependências funcionais parciais, ou seja, contém colunas não chave que dependem apenas de uma parte da chave primária 141 Passagem para a segunda forma normal Exemplo: 142 Passagem para a segunda forma normal Segunda forma normal (2FN) = Uma tabela encontra-se na segunda forma normal quando, além de estar na 1FN, não contém dependências parciais Segunda forma normal (2FN) = Uma tabela encontra-se na segunda forma normal quando, além de estar na 1FN, não contém dependências parciais dependência parcial = Uma dependência (funcional) parcial ocorre quando uma coluna não chave depende apenas de parte de uma chave primária composta dependência parcial = Uma dependência (funcional) parcial ocorre quando uma coluna não chave depende apenas de parte de uma chave primária composta 143 Passagem para a segunda forma normal Dependências parciais: 144 Passagem para a segunda forma normal Dependências não parciais: 145 Passagem para a segunda forma normal Observações: Uma tabela que está na 1FN e que possui uma chave primária simples não contém dependências parciais e, portanto, já está na 2FN (CodProj, Tipo, Descr) (CodProj, Tipo, Descr) 1FN (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) 2FN 146 Passagem para a segunda forma normal Observações (cont.): Uma tabela que contém apenas colunas chave ou parte de chaves, já está na 2FN, já que não existem atributos não chave para depender de alguma parte da chave 147 Passagem para a segunda forma normal Observações (cont.): Se uma tabela possui chave primária com várias colunas e possui colunas não chave, então deve ser examinada Pode-se perguntar para cada coluna não chave: “a coluna depende de toda a chave ou só de parte?” “para identificar um valor da coluna é necessária toda a chave ou só parte dela?” 148 Passagem para a segunda forma normal Exemplo: 149 Passagem para a terceira forma normal Eliminação de outro tipo de redundância Exemplo Emp (CodEmp, Nome, Cat, Sal) Vamos considerar que o salário (coluna Sal) é determinado pela categoria funcional (coluna Cat) O valor do salário que é pago a uma categoria funcional é armazenado tantas vezes quantos sejam os empregados possuem a categoria funcional 150 Passagem para a terceira forma normal 151 Passagem para a terceira forma normal Uma tabela encontra-se na 3FN quando, além de estar na 2FN, toda coluna não chave depende diretamente da chave primária, isto é, quando não há dependências funcionais transitivas ou indiretas Uma dependência funcional transitiva ou indireta acontece quando uma coluna não chave depende funcionalmente de outra coluna ou combinação de colunas não chave 152 Passagem para a terceira forma normal Exemplo de dependência transitiva: 153 Passagem para a terceira forma normal Terceira forma normal (3FN) = Uma tabela encontra-se na terceira forma normal quando, além de estar na 2FN, não contém dependências transitivas Terceira forma normal (3FN) = Uma tabela encontra-se na terceira forma normal quando, além de estar na 2FN, não contém dependências transitivas dependência transitiva = Uma dependência (funcional) transitiva ocorre quando uma coluna não chave, além de depender da chave primária da tabela, depende de outra coluna ou conjunto de colunas não chave da tabela dependência transitiva = Uma dependência (funcional) transitiva ocorre quando uma coluna não chave, além de depender da chave primária da tabela, depende de outra coluna ou conjunto de colunas não chave da tabela 154 Passagem para a terceira forma normal Na passagem para a 3FN divide-se as tabelas de forma a eliminar as dependências transitivas 155 Redundâncias não eliminadas pela Terceira Forma Normal Tabelas em 3FN não possuem colunas não chave que dependam de parte da chave primária ou de coluna não chave Dependência não eliminada pela 3FN: coluna parte de uma chave depende de outra coluna também parte de chave 156 Redundâncias não eliminadas pela Terceira Forma Normal Exemplo Tabela com dias em que empregados que utilizam veículos, sendo que um empregado sempre usa o mesmo veículo e um veículo pode ser utilizado por mais de um empregado. Em cada dia somente um empregado utiliza o veiculo UsoVeiculo (CodEmp, CodVeiculo, Dia) Chaves candidatas: (CodEmp, Dia) (CodVeiculo, Dia) Dependência entre colunas: CodEmp → CodVeiculo 157 Tabela em 3FN que ainda possui redundâncias CodEmp CodVeiculo Dia E1 V1 1 E2 V2 1 E3 V3 1 E1 V1 2 E3 V3 2 E4 V2 2 E5 V1 3 E2 V2 3 E3 V3 3 E5 V1 4 E2 V2 4 E3 V3 4 Chaves candidatas: (CodEmp, Dia) (CodVeiculo, Dia) Dependência entre colunas: CodEmp → CodVeiculo 158 Forma Normal de Boyce-Codd Uma tabela encontra-se na FNBC se, e somente se, além de estar na 1FN, todas as dependências funcionais são dependências de chave, isto é, quando não há nenhuma dependência funcional que não seja de chave A FNBC, também conhecida como 3,5FN, é um pouco mais forte que a 3FN, porque poucas são as tabelas que estão em 3FN e não estão em FNBC As únicas tabelas que podem estar em 3FN e não em FNBC são tabelas como do exemplo anterior, UsoVeiculo, onde uma coluna parte de uma chave depende de outra coluna também parte de chave 159 Forma Normal de Boyce-codd Forma normal de Boyce-Codd (FNBC) = Uma tabela encontra-se na FNBC normal quando, além de estar na 1FN, não contém dependências que não sejam de uma chave Forma normal de Boyce-Codd (FNBC) = Uma tabela encontra-se na FNBC normal quando, além de estar na 1FN, não contém dependências que não sejam de uma chave 160 Passagem para a FNBC Eliminar todas as dependências de coluna não chave Criar nova tabela com a dependência eliminada Tabelas em FNBC: UsoVeiculo (CodEmp, Dia) RespVeiculo (CodEmp, CodVeiculo) CodEmp CodVeiculo E1 V1 E2 V2 E3 V3 E4 V2 E5 V1 CodEmp Dia E1 1 E2 1 E3 1 E1 2 E3 2 E4 2 E5 3 E2 3 E3 3 E5 4 E2 4 E3 4 161 Tabela com informações de participação de empregados em projetos ParticipaProjeto (Cod_projeto, Nome_projeto, Cod_empregado, Nome_empregado, Cod_cargo, Nome_Cargo, Valor_salario_cargo, Data_entrada_Projeto, Funcao_no_Projeto) Exercício: Identificar as chaves candidatas e definir a chave primária Identificar dependências funcionais de coluna ou conjunto de colunas não chave Construir modelo equivalente com tabelas em 3FN 162 Tabela com dados de trechos de Voos Voo (Nro_Voo, Nro_Trecho, Cod_Cia_Aerea, Nome_Cia_Aerea, Cod_Aerop_Saida, Nome_Aerop_Saida, Nome_Cidade_Saida, Hora_Saida, Duracao, Cod_Aerop_Chegada, Nome_Aerop_Chegada, Nome_Cidade_Chegada, Hora_Chegada, Tipo_Aeronave,Nro_Lugares, Fabricante_Aeronave) Exercício: Identificar as chaves candidatas e definir a chave primária Identificar dependências funcionais de coluna ou conjunto de colunas não chave Construir modelo equivalente com tabelas em 3FN 163 Modelagem de Dados - Estudos de Caso Elaborar o modelo de dados para um sistema de controle de uma Locadora de Veículos que atenda as condições descritas abaixo. Construir o modelo de dados relacional, em 3ª Forma Normal, detalhando os atributos de cada Tabela, indicando sua chave primária (PK) e construindo o diagrama representando as tabelas e os relacionamentos entre elas. São as seguintes as características da Locadora de Veículos: Possui 30 lojas. Cada loja está em um local diferente e tem um código, um nome e vários telefones de atendimento. Há um telefone central 0800 de atendimento que no momento está sendo atendido pela loja 4. Possui 500 veículos, sendo 450 automóveis e 50 ônibus. Além das informações básicas de cada veículo como marca, modelo, ano, placa, chassi, etc, para os automóveis tem informações do número de portas, ar condicionado, direção hidráulica e para os ônibus, número de lugares e DVD. Para cada veículo são registradas a quilometragem atual e a data e quilometragem da última revisão. Os veículos são agrupados por tipo, que são os veículos que tem mesmo preço de aluguel. Os clientes podem ser pessoas ou empresas. Para cada cliente são registradas as suas informações de identificação. A locação é de um veículo é para um cliente. No caso de empresa, tem que ser identificado o motorista responsável. O contrato se liquida na devolução do veículo, quando se apura a quilometragem rodada para fazer a cobrança. Os contratos liquidados são mantidos por 5 anos, para efeitos legais. Os veículos não alugados e que estão disponíveis, ou seja, que não estão na oficina para reparos ou revisão ficam sempre em alguma loja. Quando um cliente solicita em uma loja o aluguel de um veículo de um tipo não disponível naquela loja, o gerente da loja verifica as lojas próximas e se for o caso, solicita um veículo de uma dessas lojas. O gerente não pode solicitar veículo de qualquer loja, mas somente dessas que são consideradas próximas. Banco de Dados 164 Banco de Dados – Parte 7 Modelo Lógico de Dados Análise de Dados baseada em Visões de Dados 165 Análise de Dados baseada em Visões de Dados Visões de Dados Documentos, relatórios, formulários, telas de sistema, layout de arquivos Qualquer documento que onde apareçam dados que interessem ao modelo em construção Análise Todas as visões devem ser analisadas individualmente Os dados obtidos são incorporados ao Modelo Lógico sendo construído, respeitando a 3ª Forma Normal 166 Análise de Dados baseada em Visões de Dados - Técnica Análise individual da Visão Passo 1 – Análise dos dados não repetitivos da visão O conjunto de dados não repetitivos da visão devem ser tratados como uma Tabela Relacional em 1ª Forma Normal Fazer a Normalização dessa Tabela, determinando a sua chave primária e mantendo somente os dados que dependam unicamente da chave primária (3FN) Dependências Funcionais não da chave devem originar novas tabelas Análise Todas as visões devem ser analisadas individualmente Os dados obtidos são incorporados ao Modelo Lógico sendo construído, respeitando a 3ª Forma Normal Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Slide 72 Slide 73 Slide 74 Slide 75 Slide 76 Slide 77 Slide 78 Slide 79 Slide 80 Slide 81 Slide 82 Slide 83 Slide 84 Slide 85 Slide 86 Slide 87 Slide 88 Slide 89 Slide 90 Slide 91 Slide 92 Slide 93 Slide 94 Slide 95 Slide 96 Slide 97 Slide 98 Slide 99 Slide 100 Slide 101 Slide 102 Slide 103 Slide 104 Slide 105 Slide 106 Slide 107 Slide 108 Slide 109 Slide 110 Slide 111 Slide 112 Slide 113 Slide 114 Slide 115 Slide 116 Slide 117 Slide 118 Slide 119 Slide 120 Slide 121 Slide 122 Slide 123 Slide 124 Slide 125 Slide 126 Slide 127 Slide 128 Slide 129 Slide 130 Slide 131 Slide 132 Slide 133 Slide 134 Slide 135 Slide 136 Slide 137 Slide 138 Slide 139 Slide 140 Slide 141 Slide 142 Slide 143 Slide 144 Slide 145 Slide 146 Slide 147 Slide 148 Slide 149 Slide 150 Slide 151 Slide 152 Slide 153 Slide 154 Slide 155 Slide 156 Slide 157 Slide 158 Slide 159 Slide 160 Slide 161 Slide 162 Slide 163 Slide 164 Slide 165 Slide 166
Compartilhar