Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 1- Banco de dados É um conjunto de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados é usualmente mantido e acessado por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD). Um SGBD corresponde a um conjunto de programas que permitem armazenar, modificar e extrair informação de um banco de dados. Ele age como interface entre os programas de aplicação e os dados físicos. Normalmente um SGBD adota um modelo de dados. O mais adotado hoje em dia é o modelo relacional, onde as estruturas têm a forma de tabelas, compostas por tuplas (linhas) e colunas. Já a linguagem padrão para os bancos de dados relacionais é a Linguagem de Consulta Estruturada (SQL). 1.1 Características da Abordagem Relacional • O relacionamento entre conjunto de dados (tabelas) não existe fisicamente (apenas lógico); Definições • Relação � tabela bi-dimensional, composta de linhas e colunas de dados. • Atributo = Coluna • Grau de uma relação: Número de atributos. • Tupla (ou n-uplet): Uma linha da relação = um registro • Chave Primária um ou mais atributos de uma tabela, cujos valores, nunca se repetem na tabela. Em chaves primárias, não pode haver valores nulos. • Chave Estrangeira: um atributo em uma tabela que faz referência a chave primária de outra tabela. Ou seja, passa a existir uma relação entre essas duas tabelas. A finalidade da chave estrangeira é garantir a integridade dos dados referenciais. • Integridade referencial: Se uma determinada tabela A possui um atributo que é chave estrangeira em uma tabela B, então em cada tupla da tabela A ele deve: � Ser igual a uma chave primária existente em B ou ter o valor nulo. � Ou seja, não pode existir na chave estrangeira um valor que não exista na tabela na qual ela é chave primária. • Esquema de Banco de Dados Relacional: nomes das relações seguidos pelos nomes dos atributos, com os atributos chaves sublinhados e com as chaves estrangeiras identificadas. 2 Exemplo de esquema: Aluno (Aluno_Matricula, Aluno_Nome) Curso (Curso_ID, Curso_Nome) Matriculado (Curso_ID, Aluno_Matricula, Nota) Chave estrangeira: Curso_Id referencia Curso_Id em Curso Aluno_Matricula referencia Aluno_Matricula em Aluno. 1.2 - Derivação do diagrama de classe para o modelo relacional Regras básicas: 1) Toda Classe vira uma Tabela (Relação) no Modelo Relacional 2) Todo Atributo da Classe vira um Atributo (Coluna) no Modelo Relacional 3) Na derivação do Diagrama de Classe para o Modelo Relacional só interessa analisar o Grau (restrição de mapeamento ou cardinalidade) máximo do relacionamento. A seguir analisaremos como transformar os relacionamentos do Diagrama de Classe para o Modelo Relacional. 1.2.1 – Relacionamentos 1:N (várias classes) • A Tabela cuja a classe possui multiplicidade máxima N carrega o identificador da tabela cuja a classe possui multiplicidade máxima 1. Esquema Relacional: Empregado (matricula,nome) 3 Projeto (código,nome,descricao,valor,dtInicio,duração,matricula) Chave Estrangeira: matricula referencia matricula em Empregado 1.2.2 – Relacionamentos 1:N (mesma classe) • Incluir uma nova chave na mesma tabela, passando a ter o papel de chave estrangeira. Esquema Relacional: Empregado (matricula, nome, matricula_chefe) Chave Estrangeira: matricula_chefe referencia matricula em funcionario 4 1.2.3 – Relacionamentos 1:1 (várias classes) • Incluir a chave primária na tabela cuja multiplicidade mínima da classe é 0. Esquema Relacional Aluno (matricula,nome,dtNascimento,numero) Chave Estrangeira numero referencia numero em Armario Armario (numero, localizacao) 1.2.4– Relacionamentos 1:1 (mesma classe) • Incluir uma nova chave na própria entidade. Esquema Relacional: Pessoa (cpf, nome, cpf_conjuge) Chave Estrangeira cpf_conjuge referencia cpf em Pessoa 5 1.2.5 – Relacionamentos M:N (várias classes) • O relacionamento torna-se uma tabela, carregando seus atributos e os identificadores das tabelas que ele se relaciona. Esquema Relacional: Aluno (matricula,nome,dtNascimento) Turma (codigo,anosemestre) Cursa (matricula, codigo, G1,G2,G3,faltas) Chaves Estrangeiras matricula referencia matricula em Aluno codigo referencia codigo em Turma 6 1.2.6 – Relacionamentos M:N (mesma classe) • Criar nova tabela, com os identificadores da classe Esquema Relacional: Disciplina (codigo,nome,conteudo) Pre-Requisito (codigo_exige, codigo_satisfaz). Chaves Estrangeiras: Codigo_exige referencia codigo em disciplina Codigo_satisfaz referencia codigo em disciplina 7 1.2.7 – Relacionamentos de generalização Todas as classes viram tabelas. As tabelas referentes as subclasses carregam a chave primária da super-classe. CargaTransportada (codigo, descrição, peso, volume) Frigorificada (codigo, tempMin, tempMax) Chave Estrangeira: codigo referencia codigo em CargaTransportada Perecivel (codigo, dtVencimento) Chave Estrangeira: codigo referencia codigo em CargaTransportada 8 1.1. Exemplo Transforme o diagrama de classe em um esquema relacional. 9 1.3 – Formas Normais Formas normais são regras para estruturar relações eliminando anomalias. Primeira Forma Normal (1NF): Todos os atributos devem ser atômicos (ou seja, contêm um só valor). Dependência Funcional (DF): Um valor de um (ou mais) atributo(s) em uma tupla (linha, registro) determina o valor de outro(s) atributo(s) na tupla. Representação DF: A � B Significado: se qualquer par de tuplas (linhas, registros) possuem o mesmo valor para o atributo A, então elas têm que ter o mesmo valor do atributo B. Esta definição também vale se A e B forem conjuntos de atributos ao invés de um só atributo. O(s) atributo(s) do lado esquerdo de uma DF é(são) chamados de determinante(s), porque ele(s) determina(m) o valor do(s) atributo(s) do lado direito. Uma chave primária de uma relação é um determinante, pois seu valor determina unicamente o valor de todos os outros atributos de uma tupla. Exemplo de uma relação que não é 1NF (valores múltiplos em Prédio_ID). Func_Matricula Func_Função Predio_ID 10 Eletricista 120, 135 11 Eletricista 120 12 Eletricista 120, 135, 140 14 Mecânico 120 10 Segunda Forma Normal (2NF): Nenhum atributo não-chave depende funcionalmente de somente uma parte de chave. Ela somente pode ser violada no caso de chaves compostas. A 2NF também pode ser expressa por: Todo atributo não-chave depende funcionalmente de TODA a chave. Exemplo de uma relação que não é 2NF: Chave primária: Func_Matrícula e Prédio ID; Func_Nome depende somente de Func_Matricula Func_Matricula Predio_ID Data Alocação à Obra Func_Nome 10 312 1/1/2001 José 20 312 5/2/2002 João 20 522 3/3/2002 João 22 433 18/8/2001 Marcos Como passar da 2a. para a 3a. forma normal: Decomposição da relação, ou seja, criar nova relação, com os atributos que transgridem a DF. Resultado: (3FN) Alocado (Func-MAt, Predio_ID, Data) Funcionário (Func_Mat, Nome) Terceira Forma Normal (3NF): Todo determinante é uma chave. 11 1.1.1. Exemplo Seja a seguinte tabela de Faturas de produtos da queijaria Nova Estrela: CódigoDoCliente CódigoDoProduto Quantidade NºDoTelefone PreçoUnitário ALFKI 1 100,00 030-0074321 R$18,00 ALFKI 2 110,00 030-0074321 R$19,00 ALFKI 3 120,00 030-0074321 R$10,00 ANATR 1 130,00 (5) 555-4729 R$18,00 ANATR 2 140,00 (5) 555-4729 R$19,00 ANATR 3 150,00 (5) 555-4729 R$10,00 ANTON 1 160,00 (5) 555-3932 R$18,00 ANTON 2 170,00 (5) 555-3932 R$19,00 ANTON 3 170,00 (5) 555-3932 R$10,00 Dica: Pense na seqüência das questões! A) Quais são as dependências funcionais desta tabela? B) Qual a melhor chave primária para esta tabela? (a chave primáriapode ser eventualmente uma chave composta) C) Identifique a Forma Normal mais elevada desta tabela. D) Se for o caso, transforme a tabela para a Terceira Forma Normal. Resposta: A) Quais são as dependências funcionais desta tabela? CódigoDoCliente ���� NºDoTelefone CódigoDoProduto ���� PreçoUnitário CódigoDoCliente, CódigoDoProduto ���� Quantidade B) Qual a melhor chave primária para esta tabela? (a chave primária pode ser eventualmente uma chave composta) CódigoDoCliente, CódigoDoProduto C) Identifique a Forma Normal mais elevada desta tabela. 1a. Forma Normal (todos os atributos possuem um único valor). Não é segunda forma normal pois os atributos não-chave NºDoTelefone e PreçoUnitário dependem funcionalmente de somente uma parte de chave. D) Se for o caso, transforme a tabela para a Terceira Forma Normal. Cliente (CódigoDoCliente, NºDoTelefone) Produto (CódigoDoProduto, PreçoUnitário) 12 Venda (CódigoDoCliente, CódigoDoProduto, Quantidade) Chaves Estrangeiras: CódigoDoCliente referencia CódigoDoCliente em Cliente CódigoDoProduto referencia CódigoDoProduto em Produto
Compartilhar