Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados Abstração de dados Abstrair dados significa omitir a complexidade do sistema de modo a facilitar a interação dos usuários com ele. Existem três tipos de abstração: • Nível Físico: descreve como os dados estão de fato armazenados. • Nível lógico: descreve quais dados estão armazenados no banco de dados e quais são os inter‐relacionamentos entre eles. • Nível de visão: descreve apenas parte do BD, pois os usuários normalmente não precisam conhecer todo o banco, eles acabam utilizando apenas parte dele. Instância do BD = conjunto de informações contidas em um BD num dado momento. “Fotografia” do banco. Esquema do BD = projeto geral do BD • Esquema físico • Esquema lógico • Subesquemas Independência de Dados É a capacidade de modificar a definição dos esquemas em determinado nível, sem afetar o esquema dos outros níveis. Existem dois tipos de independência de dados: • Independência de dados física: capacidade de alterar o esquema físico sem que seja necessário alterar qualquer aplicação. • Independência de dados lógica: capacidade de modificar o esquema lógico sem que, com isso, qualquer programa precise ser reescrito. Modelos de Dados Modelo de dados é um conjunto de ferramentas conceituais usadas para a descrição de dados, relacionamentos entre dados, semântica de dados e regras de consistência. 1. Modelos Lógicos com Base em Objetos São usados na descrição de dados no nível lógico e de visões. São caracterizados por dispor de recursos de estruturação bem mais flexíveis e por viabilizar a especificação explícita das restrições dos dados. Um para cada tipo de abstração Nível de Visão Visão 1 Visão 2 Visão n Nível Lógico Nível Físico 1 1.1. Modelo Entidade Relacionamento Percepção do mundo real como um conjunto de entidades e do relacionamento entre elas. O modelo E‐R representa certas regras que o conteúdo do BD deve respeitar; por exemplo o mapeamento das cardinalidades. Toda a estrutura lógica do BD pode ser expressa graficamente por meio do diagrama de E‐R. 1.2. Modelo Orientado a Objetos = Programação OO Tem por base um conjunto de objetos. Um objeto possui métodos que são conjuntos de códigos que operam os objetos. Os objetos são agrupados em classes. Um objeto só pode acessar outro objeto por meio de seus métodos (envio de msgs). 2. Modelos Lógicos com Base em Registros São usados para descrever os dados no nível lógico e de visões. É usado tanto para especificar a estrutura lógica do BD como para implementar uma descrição de alto nível. Têm esse nome porque o banco de dados é estruturado por meio de registros de formato fixo de todos os tipos. Cada registro define um número fixo de campos ou atributos e cada campo possui tamanho fixo (como se fosse um array). 2.1. Modelo Relacional = em tabelas Utiliza um conjunto de tabelas para representar tanto os dados como a relação entre eles. Cada tabela possui múltiplas colunas e cada uma deve possuir um único nome. 2.2. Modelo de Rede Os dados são representados por um conjunto de registros e as relações entre os registros são representadas por links. Os registros são organizados no banco de dados por um conjunto arbitrário de gráficos (grafos?): 2.3. Modelo Hierárquico Similar ao modelo em rede, pois os dados e suas relações são representados, respectivamente, por registros e links. A diferença é que no modelo hierárquico os registros estão organizados em árvores ao invés de gráficos arbitrários: Funções do Administrador do Banco de Dados (DBA) • Instalar o SGBD • Criar os BDs • Fornecer autorização de acesso • Especificar regras de integridade e de segurança • Fazer backup e recovery, carga e descarga • Otimizar o desempenho • Criar o esquema interno e conceitual • Definir estrutura de dados e métodos de acesso • Esquema e modificações na organização física • Criar índices e o dicionário de dados nome CPF rua cidade conta saldo conta saldo 2 Funções do Administrador de Dados (AD) • Definir o projeto lógico • Modela e observa os dados do ponto de vista semântico, de integração e de negócio da empresa • Responsabiliza‐se pela qualidade e compatibilidade dos modelos de dados da empresa • Administra a descrição dos dados corporativos Gerenciamento de Transações (Propriedades ACID) Transação é uma coleção de operações que desempenha uma função lógica única dentro de uma aplicação do sistema de banco de dados. • Atomicidade: a execução de uma transação deve ser integral, ou seja, ou todas as operações são executadas ou nenhuma deve ser feita. • Consistência: a execução de uma transação deve levar um banco em estado consistente a outro estado também consistente. • Isolamento: uma transação não deve tornar suas alterações visíveis a outras transações antes de sua completa execução. o Usuário solicita saldo e conta está sofrendo uma transação de débito, o banco só retornará o saldo depois que o débito tiver sido realmente efetivado (transação tiver terminado). • Durabilidade: após o término de uma transação, suas atualizações não podem ser perdidas por causa de falhas futuras. Antes que uma transação seja completada, ela deve verificar se as alterações foram gravadas com sucesso. Integridade e Regras/Restrições de Integridade A integridade de um banco de dados refere‐se à precisão ou correção dos dados nele armazenados. Garantimos essa integridade por meio de Restrições de Integridade que são armazenadas no dicionário de dados. O SGBD encarrega‐se então de, a cada operação que acarrete alteração nos dados, verificar se a alteração solicitada viola as restrições de integridade. Em caso afirmativo, a operação é interrompida. As restrições de integridade características da empresa proprietária do banco de dados são normalmente chamadas de Regras de Negócio, pois descrevem o funcionamento do negócio da empresa. São definidas pelo Administrador de Banco de Dados (DBA) e evitam o armazenamento de dados em desacordo com a política da empresa. Por exemplo, se uma política da empresa determina que o desconto comercial máximo concedido a um cliente é de dez por cento, uma operação de atualização no banco de dados que informe um desconto de vinte por cento será interrompida. Além das regras de negócio, existem restrições que visam a manter a integridade dos dados do banco de dados, independente da política da empresa. Podemos classificar essas restrições de integridade em restrições de: tipos de dados (domínio), integridade de entidade (de tabela) e integridade referencial (chave estrangeira). 1. Restrições de Domínio (Tipos de dados) Evitam que dados incompatíveis com os tipos de dados selecionados para seus atributos sejam aceitos pelo banco de dados. Permitem criarmos restrições que o banco sempre deve verificar antes de inserir dados. Utilizamos a cláusula check em SQL para criarmos restrições de domínios: create domain salário‐do‐João numeric(5,2) constraint valor‐mínimo check(salário >=50000.00) 3 2. Restrições de Tabela (Entidade) Certificam que as chaves primárias sempre não serão nulas. 3. Restrições de Integridade Referencial (chave estrangeira) Assegura que um valor que aparece em uma relação (tabela) para um determinado conjunto de atributos apareça em outro conjunto de atributos em outra relação (tabela). Em outras palavras, a restrição de integridade referencial diz que uma tupla da relação R1, que se refere a outra relação R2, deve referir‐se a uma tupla existente em R2 . Modelo Entidade Relacionamento 1. Conjunto de Entidades Uma entidade é uma “coisa” ou um objeto no mundo real que podeser identificada de forma unívoca em relação a todos os outros objetos ou coisas. Uma entidade possui um conjunto de propriedades (atributos). Um conjunto de entidades é um conjunto que abrange entidades de mesmo tipo que compartilham os atributos. Uma entidade é representada por seu conjunto de atributos. Atributos são propriedades descritivas de cada membro de um conjunto de entidades. Cada atributo possui um conjunto de valores possíveis denominado domínio. TIPOS DE ATRIBUTOS: • Atributo simples Não são divididos em partes. • Atributo composto Podem ser divididos em outros atributos. Um atributo endereço pode ser dividido nos atributos rua, bairro, CEP, etc. • Atributo monovalorado Possui apenas um valor por entidade. • Atributo multivalorado Pode possuir mais de um valor. É um atributo que possui um grupo de valores para uma única entidade. A entidade Pessoa que tem o atributo dependentes pode possuir os valores João, José, Lya, Luana que são os dependentes de alguma pessoa. • Atributo nulo É usado quando uma entidade não possui valor para determinado atributo. Pode indicar que o valor do atributo é desconhecido ou que este foi omitido. • Atributo derivado/descritivo O valor do atributo pode ser derivado de outros atributos ou entidades a ele relacionados. Entidade chave_primária atributo derivado atributo simples atributo multivalorado atributo composto parte1 Parte2 4 Conceitos de Chaves: • Superchave: é um conjunto de um ou mais atributos que permite identificar univocamente uma entidade em um conjunto de entidades. • Chave candidata: são superchaves para as quais nenhum subconjunto possa ser uma superchave. Em outras palavras nerds, chave candidata é um conjunto de atributos que possui ao mesmo tempo as propriedades de unicidade (não existem tuplas com mesmo valor) e irredutibilidade (nenhum subconjunto terá a propriedade da unicidade). • Chave primária: é a chave candidata escolhida para identificar o conjunto de entidades. • Chave estrangeira: O modelo relacional não utiliza ponteiros para conectar duas relações entre si. Essa ligação é realizada pelo aparecimento, nos atributos de uma relação, de um elemento de ligação comum a ambas. Sejam duas variáveis de relações R1 e R2. Para que a variável de relação R1 seja conectada à variável de relação R2, é necessário que um dos atributos de R2 referencie um atributo de R1, e que esse atributo seja uma Chave Candidata de R1. Dessa forma, uma Chave Estrangeira é um conjunto de atributos de uma variável de relação, cujos valores correspondem obrigatoriamente aos valores de uma chave candidata de outra variável de relação conectada a ela. Pode ser nula! 2. Conjunto de Relacionamentos Um relacionamento é uma associação entre uma ou várias entidades. Um conjunto de relacionamentos é um conjunto de relacionamentos de mesmo tipo. A função que uma entidade desempenha num relacionamento é chamada de papel. É possível termos atributos descritivos nos relacionamentos. Cardinalidade Completa (mínima,máxima) (0,n) (1,n) (1,1) Cardinalidades 1..1 1..n n..1 n..n (1,1) (1,n) Proprietário atributo Pessoa Carro 5 3. Conjunto de Entidades Fracas É um conjunto de entidades que não possui atributos suficientes para formar uma chave primária. A chave primária do conjunto de entidades fracas é formada pela chave primária do conjunto de entidades fortes da relação mais o identificador do conjunto de entidades fracas. Existem duas notações: 4. Especialização e Generalização Na especialização um subconjunto de entidades dentro de um conjunto pode possuir atributos que não são compartilhados pelas demais entidades do conjunto. A especialização é a herança na POO. A generalização é o inverso da especialização: 5. Agregação/Entidade Associativa É um relacionamento entre relacionamentos. Possui duas notações: (1,n) empréstimo Pagar pagamento (1,n) empréstimo Pagar pagamento conta ISA poupança investimento E1 E2 E3 R1 R2 E1 E2 E3 R1 R2 6 Modelo Relacional Um banco de dados relacional consiste de uma coleção de tabelas, cada uma das quais com um nome único. Uma linha da tabela representa um relacionamento de valores e uma coluna representa um atributo da entidade. Utilizamos os nomes relação e tupla ao invés de tabela e linha. Esquema de uma relação corresponde ao conceito de definição de tipos em linguagem de programação. O esquema acima é denotado pela relação (tabela) conta a seguir: Mapeamento do Modelo ER para Modelo Relacional 1. Mapeamento de Entidades Fortes Cada conjunto de entidades fortes é mapeado como uma relação que envolve todos os atributos do conjunto de entidades: 2. Mapeamento de Entidades Fracas São mapeadas numa relação formada por todos os atributos do conjunto de entidades fracas mais os atributos que formam a chave primária das relações que o conjunto de entidades fracas depende. O relacionamento não é mapeado. 3. Mapeamento de Relacionamentos Binários 1:1 Não são mapeados em novas relações. Seus atributos são colocados em qualquer uma das relações que mapeiem as entidades envolvidas. A entidade escolhida para receber os atributos do relacionamento receberá também a chave primária da outra entidade envolvida. Esquema_conta = (nome_agência, número_conta, saldo) conta(Esquema_conta) nome_agência número_conta saldo Aluno nome CPF Esquema_aluno={nome,CPF} 1 (0,n) funcionário tem dependente COD nome RG nome Funcionário= {nome,COD} Dependente= {nome,RG,COD} 1 1 aluno estu da escola RG nome coda Aluno= {nome,RG,COD,a} Escola= {COD} 7 4. Mapeamento de Relacionamentos Binários 1:N Não são mapeados em novas relações. Seus atributos são colocados na relação que mapeia o conjunto de entidades com cardinalidade N. Os atributos chave do conjunto de entidades com cardinalidade 1 são mapeados no conjunto de entidades com cardinalidade N. 5. Mapeamento de Relacionamentos Binários N:N O relacionamento é mapeado em uma nova relação que recebe os atributos do relacionamento mais os atributos chave das entidades envolvidas. A chave da relação será a concatenação das chaves das entidades. 6. Mapeamento de Relacionamentos Ternários, Quaternários, etc Usualmente mapeamos tais relacionamentos como se todos fossem de cardinalidade M:N. A relação será formada pelos atributos do relacionamento e as chaves primárias das entidades envolvidas. 7. Atributos Compostos e Multivalorados Os atributos compostos são apenas decompostos na relação. Já os multivalorados vão se tornar relações cujas chaves primárias serão compostas pela chave da entidade possuidora do atributo mais o atributo multivalorado. 1 N aluno cursa cursos RG nome coda Aluno= {nome,RG} Cursos= {COD,RG,a} N N aluno matric ulado matérias RG nome coda Aluno= {nome,RG} Matérias= {COD,nomeD} Matriculado= {RG,COD,a,b} b nomeD P N M aluno monito ra disciplina RG nome siglaa Aluno= {nome,RG} Disciplina= {sigla,nomeD} Professor= {COD,nomeP} Monitora= {RG,COD,sigla,a,b} b nomeD professor COD nomeP Secretaria COD endereço rua número telefone Secretaria= {COD,rua,número } Secretaria_telefone= {COD,telefone } 8 8. Especialização e Generalização A especialização é top‐down e a generalização é bottom‐up. • Se a especialização for mutuamente exclusiva e total, ou seja, nenhuma entidade é membro de mais de um conjunto de entidades e setodas as entidades do nível superior forem membros dos níveis inferiores (todas as contas ou serão poupança ou investimento, nunca será apenas conta), neste caso são criadas relações apenas para as especializações com a chave da entidade principal: • Se a especialização não for mutuamente exclusiva, ou seja, a conta pode ser uma conta normal, ou ser conta poupança ou ser conta investimento, criamos uma tabela para cada entidade com a chave da entidade principal: 9. Agregação/Entidade Associativa É um relacionamento entre relacionamentos. Primeiro criamos relações para todas as entidades envolvidas. Segundo criamos uma relação para o primeiro relacionamento com as chaves primárias das entidades diretamente envolvidas. Terceiro criamos uma relação para o relacionamento externo contendo as chaves primárias de todas as entidades: Q P NMprojeto funcionário máquina parti cipa usa codP codM RG Projeto= {codP} Funcionário= {RG} Máquina= {codM} Participa= {codP,RG} Usa= {codP,RG,codM} conta ISA poupança investimento Conta_poupança= {COD,saldo,taxa} Conta_investimento= {COD,saldo,ações} COD saldo taxa ações conta ISA poupança investimento Conta= {COD,saldo} Conta_poupança= {COD,taxa} Conta_investimento= {COD,ações} COD saldo taxa ações 9 10. Autorelacionamento Existem duas maneiras de transformar um auto‐relacionamento em relações: • Apenas uma relação com duas ocorrências da chave primária: • Duas relações, uma para a entidade e outra para o relacionamento: Normalização Conceito “A normalização é uma técnica para projetar tabelas em bancos de dados relacionais de maneira a diminuir a duplicação de informações e, ao fazer isso, proteger o banco contra alguns tipos de problemas lógicos ou estruturais, as chamadas anomalias de dados” – Wiki Quanto mais normalizado estiver o banco, mais tabelas ele possuirá e, conseqüentemente, terá sua performance diminuída. As formas normais são sucessivas. Primeira Forma Normal (1FN) Para que uma tabela esteja na 1FN todos os seus atributos devem ser atômicos e monovalorados e não possua grupos de repetição, ou seja, seus atributos não podem ser tratados em partes separadas e possuem apenas um valor. Segunda Forma Normal (2FN) Uma tabela está na 2FN se, além de estar na 1FN, não possuir dependências funcionais parciais, ou seja, todos os atributos não‐chave devem depender funcionalmente da chave primária inteira. Só ocorre com chaves primárias compostas. Usando uma linguagem menos nerd, os atributos que não fazem parte da chave primária composta devem depender integralmente dela, eles não podem ser identificáveis por somente parte da chave, devem ser identificáveis pela chave inteira. • Dependência funcional É um relacionamento entre pelo menos dois atributos. Se o valor de um conjunto de atributos A permite descobrir o valor de outro conjunto de atributos B, dizemos que A determina funcionalmente B ou que B depende de A. Utilizando uma linguagem menos nerd, dizemos que os atributos de A identificam os atributos de B. Denotamos tal relacionamento da seguinte forma: (0,N) (0,1) empregados RG nome gerência Empregados = {RG1,RG2,nome} Empregados = {RG,nome} Gerência = {RG1,RG2} A B CPF nome, endereço, telefone CPF, nome endereço, telefone 10 Analisando os exemplos acima, notamos que com os o número de CPF podemos identificar o nome, endereço e telefone de uma pessoa, isto é dependência funcional. Terceira Forma Normal (3FN) Uma tabela está na 3FN se, além de estar na 2FN, não possuir dependências transitivas entre os atributos. • Dependência Transitiva: Quando um atributo não‐chave depende de outro que não é chave da relação. OBSERVAÇÕES QUE SEMPRE CAEM NA FCC Funções Agregadas Básicas Uma função agregada trabalha com uma coluna inteira e retorna apenas um valor As funções agregadas segundo o SQL‐99 são: • AVG = calcula a média dos valores NUMÉRICOS de uma coluna • COUNT = conta quantos itens existem na coluna • MAX • MIN • SUM = soma os valores NUMÉRICOS de uma coluna • Existem várias outras funções agregadas que são específicas de SGBDs, mas a FCC já cobrou em alguns concursos. 11 Para quem quiser imprimir a tabela com uma melhor qualidade: http://www.oreilly.com/catalog/sqlnut2/chapter/ch04.pdf Funções Escalares As funções escalares trabalham com apenas uma entrada (um valor) ou até sem nenhuma. Dependem totalmente da implementação utilizada • CURRENT_TIME • LEFT • MID Relação entre SQL e Álgebra Relacional • SELECT = PROJEÇÃO ∏ • FROM = PRODUTO CARTESIANO x • WHERE = SELEÇÃO ρ DML • Select, Insert, Delete, Update, Visões DDL • Create, Drop, Alter, Truncate 12
Compartilhar