ESAB – Pós-graduação em Engenharia de Sistemas Módulo: Banco de Dados
RESUMO UNIDADE 1: Conceitos básicos
Banco de Dados → conjunto de registros manipuláveis de mesma natureza, inseridas num mesmo local obedecendo a um padrão de armazenamento.
Um sistema de banco de dados é um sistema de manutenção de registros com a finalidade de armazenar informações e permitir que os usuários busquem e atualizem essas informações. Podem ser mono ou multiusuários.
Elementos básicos:
• Dados: podem ser integrados (unificação de vários arquivos para eliminar redundância) ou compartilhados (diferentes usuários acessam os mesmos dados, ao mesmo tempo ou não); • Hardware: discos e processador;
• Software: SGBD, responsável pelo gerenciamento da base de dados (utilitários, ferramentas de desenvolvimento, geradores de relatórios, gerenciador de transações, etc);
• Usuários: DBA, DA (administram a base para performance), programadores de aplicação e usuários finais.
UNIDADE 2: Vantagens de um SGBD
Sistema de Banco de Dados = Ferramentas/Aplicações + SGBD + Banco de Dados Propriedades básicas de um SGBD:
• Consistência ou Compartilhamento de Dados: dados armazenados num único local e compartilhados entre sistemas são mais confiáveis;
• Integridade: assegurar que os dados estão sempre corretos, com as correspondências adequadas entre as tabelas e chaves;
• Segurança ou Restrição de Acesso: níveis de acesso aos usuários para campos/tabelas (somente leitura, leitura e gravação ou sem acesso);
• Restauração ou Tolerância a Falhas: backups e recursos para recuperação de dados em caso de falhas;
• Não Redundância ou Controle de Redundância: as atualizações são sincronizadas; • Padronização dos Dados: permite maior controle e robustez do banco.
Desvantagens:
• maior investimento inicial (hardware e software);
• generalidade que um SGBD fornece na definição e processamento de dados;
• mais exigências quanto a controle de segurança, de concorrência, recuperação e integração de funções.
UNIDADE 3: Aspectos de um SGBD quanto à arquitetura Aspectos relevantes num projeto de sistema de banco de dados:
• Projetos Lógico e físico devem prever a escalabilidade;
• generalidade e alto grau de abstração dos dados (permite a utilização de diferentes SGBDs através de linguagens de consulta padronizadas);
• interface compatível com múltiplas plataformas (Unix, Windows, etc);
• independência de interface em relação aos SGBDs (Oracle, SYSBASE, XBASE, etc). Arquitetura:
• Centralizada: processamento no servidor, dados enviados ao terminal (thin client); • Cliente-Servidor: divide o ambiente de computação, possui servidores especializados
(dados, impressão), as máquinas clientes possuem interfaces e algum processamento. UNIDADE 4: Arquiteturas de um SGBD - detalhamento
• Centralizada: mainframes, alto poder de processamento no servidor, com alto custo;
• Cliente-Servidor: cliente (front-end) executa as tarefas do aplicativo, o servidor (back-end) executa as consultas no SGBD e retorna os resultados ao cliente;
• Sistemas em Computadores Pessoais: standalone, simplicidade, aplicações de baixa e média complexidade;
• Distribuída (N camadas): diversos servidores (hosts), as consultas são feitas a qualquer servidor indistintamente, o sistema obtém a informação de maneira transparente, usado comumente em bases de dados corporativas, complexidade de gerenciamento;
• Paralela: técnicas de gerência de dados + processamento paralelo = maior desempenho e confiabilidade, com computadores multiprocessados, paralelismo de consultas e transações com menor tempo de resposta, porém com alto custo e complexidade de gerenciamento. UNIDADE 5: Níveis de abstração dos dados na arquitetura do SGBD
• Nível Físico: é o nível mais baixo, o de armazenamento físico dos dados no banco;
• Nível Lógico (conceitual): descreve os dados armazenados e as relações entre eles, sem a preocupação de mostrar as complexidades da estrutura física do banco;
• Nível de Visões (externo): descreve uma 'visão' limitada do banco de dados, apenas uma parte do banco, para simplificar as interações com ele.
O primeiro nível é de implementação(voltado à máquina), os outros 2 são de modelos (voltados ao usuário).
UNIDADE 6: Características dos usuários que trabalham com SGBD
• Administrador de Dados (DA): se preocupa com a organização dos dados, não com seu armazenamento. Ele deve:
• Gerenciar o dado com recurso da organização;
• Planejar, desenvolver e divulgar as bases de dados da empresa;
• permitir a descentralização dos processos (mantendo os dados centralizados); • permitir acesso rápido e fácil às informações a partir dos dados.
• Administrador de Banco de Dados (DBA): gerencia os recursos (Banco de Dados e SGBD), fornecendo autorização de acesso, coordenação e monitoração do seu uso. Atribuições:
• Definição do esquema do banco de dados;
• Definição da estrutura de dados e métodos de acesso; • Modificações no esquema ou na organização física; • controle das autorizações de acesso ao sistema; • especificação das regras de integridade.
• Projetista de Banco de Dados (DB Designer): identifica os dados que devem ser
armazenados no Banco de Dados, montando a estrutura e representação e armazenamento dos dados;
• Usuários finais: 4 categorias básicas:
cada acesso, usando linguagens de consulta;
• Novatos ou Paramétricos: utilizam visões do Banco de Dados, com consultas preestabelecidas;
• Sofisticados: consultas complexas;
• Especialistas: escrevem aplicações especializadas;
• Analistas de sistemas e programadores de aplicações: determinam os requisitos de usuário e desenvolvem aplicações que atendam a estes requisitos;
• Profissionais de apoio: projetistas, operadores de manutenção. UNIDADE 7: Modelos Físico e Lógico de um Banco de Dados
• Físico: descrevem os dados no nível mais baixo, os mais conhecidos são Modelo Unificador (Unifying model) e Estrutura de Memória (frame memory). São pouco usados;
• Lógicos baseados em Registros: descrevem os dados no nível conceitual e de visões. O banco é estruturado em registros de tamanho fixo (com número fixo de campos, que possuem tamanho fixo). Com este conceito, existem 3 modelos de banco de dados:
• Hierárquico: estrutura de árvore invertida com acesso unidirecional, de pai para filho a partir da raiz (p. ex. IMS – Information Management System da IBM, Adabas e System2000). Para associar um registro a vários outros, recorre-se à replicação; • Rede: várias listas, similar a um grafo direcionado (p. ex. IDMS e Total). Não existe
restrição hierárquica;
• Relacional: elemento básico é a entidade (conjunto), visa manter os dados de forma não redundante, executar processamento integrado, lidar com relações múltiplas e fornecer certa independência entre dados.
UNIDADE 8: Modelos Lógicos de Banco de Dados Baseados em objetos
• Entidade-Relacionamento: percepção do mundo real em coleção de entidades e seus relacionamentos. A estrutura lógica de um banco é expressa por um Diagrama Entidade-Relacionamento:
• Retângulos → Entidades; • Elipse → atributos;
• Losangos → relacionamentos entre conjuntos de entidades;
O MER é conceitual, dá a ideia geral de como será o banco (e pode, por exemplo, ter um relacionamento N para N).
O DER representa graficamente o banco e as tabelas (e não poderia ter o relacionamento N para N acima, porque a normalização imporia a criação de uma terceira tabela). • Orientado a Objeto: é baseado num conjunto de objetos, possuindo trechos de código que
operam nele mesmo (métodos). Seu esquema é representado com UML; • Binário;
• Semântico de Dados: • Infológico;
• Funcional de dados;
UNIDADE 9: Entidade, atributo e tupla
• Entidade: base do banco de dados, tabela, é a estrutura na qual se elabora o 'banco' (quais informações devem ser guardadas, forma, etc);
• atributo: conjunto de características de uma entidade, um campo de um registro (registro é a linha e campo é a coluna). Em geral, campos não devem usar caracteres especiais, acentos, cedilhas, deve começar com letra maiúscula e não com número e evitar palavras compostas separadas por espaços;
entidade. Tipos de dados: • Alfanuméricos; • Numéricos; • Booleanos ou binários; • Datas;
• Memos (alfanuméricos sem limite);
• Autoincrementáveis (numéricos incrementados automaticamente). UNIDADE 10: Conceito de chave e tipos de chaves
• chave primária: conjunto de um ou mais atributos que identifica de forma única um registro. Tipos de chave primária:
• Simples: apenas um atributo; • Composta: mais de um atributo.
Chave única: quando um campo não deve ser repetido e não é chave primária.
Chave estrangeira: quando o valor de um atributo é validado a partir do valor de um atributo de outra tabela (relação de dependência entre as tabelas). Em uma tabela o atributo é a chave primária, na outra ele é a 'chave estrangeira'.
UNIDADE 11: Conceito básicos de relacionamento e seus tipos
Relacionamento: associação entre campos comuns em 2 tabelas, fazendo a correspondência entre registros de diferentes tabelas. Na maior parte dos casos, esses campos serão a chave primária em uma tabela e estrangeira na outra.
Grau de Relacionamento ou Cardinalidade: número de ocorrências de uma entidade com a outra, podendo ser:
• Um-para-um → cada registro na tabela X pode ter somente um registro na tabela Y e vice-versa (os campos relacionados são chaves primárias nas duas tabelas);
• Um-para-muitos → um registro de uma tabela X (chave primária) pode ter vários registros na tabela Y (chave estrangeira). Como exemplo, X = Cliente e Y = Pedido;
• Muitos-para-muitos → um registro numa tabela X pode ter vários registros na tabela Y e vice-versa, mas isso exige uma terceira tabela (tabela de associação) cuja chave primária é composta por 2 campos (chaves estrangeiras de X e Y).
UNIDADE 12: Relacionamentos especiais com Múltiplas Entidades
Relacionamentos podem envolver mais de 2 entidades, embora seja incomum relacionamento múltiplo com mais de quatro entidades (muitas vezes pode ser desdobrado em mais de um relacionamento, reduzindo a complexidade).
UNIDADE 13: Integridade
Integridade é garantir a consistência de determinados dados internos do banco de dados, que podem gerar problemas para a organização. As formas mais comuns são:
• Integridade de Domínio: valores ideais e necessários a um atributo (não pode ser negativo, não pode ser zero, etc);
• Integridade de Entidade: valida os valores permitidos a partir de valores já inseridos previamente (não permitir duas pessoas com o mesmo RG);
provenientes de outra entidade (por exemplo, inserir um registro numa tabela-filho só é possível se existir um registro coincidente na tabela-pai; e um registro pai só poderá ser excluído se não possuir nenhum registro filho).
UNIDADE 14: Normalização e suas técnicas
Processo matemático formal, fundamentado na teoria dos conjuntos, que substitui um conjunto de entidades e relacionamentos por outro, eliminando a redundância de dados e objetivando a
independência dos dados e facilitando a manipulação e manutenção do banco de dados.
Pode ser Top-Down (cria-se o modelo de dados e aplica-se a normalização) ou Bottom-Up (aplica-se a normalização como ferramenta de projeto do modelo de dados).
Dependências:
• Dependência Funcional Total → um atributo ou conjunto de atributos depende de forma total da chave primária concatenada se, a cada valor da chave está associado um valor para este atributo;
• Dependência Funcional Parcial → o atributo só depende de parte da chave primária;
• Dependência Funcional Transitiva → quando um atributo ou conjunto de atributos depende de OUTRO atributo que não pertence à chave primária, mas possui uma dependência funcional desta.
Normalização:
• Primeira Forma Normal (1FN): cada ocorrência da chave primária deve corresponder a uma informação de cada atributo (não deve conter grupos repetitivos). Cada relação não
normalizada deve ser decomposta em tantas entidades quantos forem os grupos repetitivos; • Segunda Forma Normal (2FN): uma relação se encontra em 2FN quando esta em 1FN e
todos os atributos não-chave são dependentes funcionais desta;
• Terceira Forma Normal (3FN): uma relação está em 3FN se estiver em 2FN e nenhum de seus atributos tiver dependência transitiva em relação a outro atributo (que não pertence à chave primária).
UNIDADE 15: Princípios básicos do armazenamento e manipulação de dados
• Linguagem de Definição de Dados (DDL): especifica um esquema de Banco de Dados, cujo resultado é um conjunto de tabelas armazenadas no dicionário de dados (que é um arquivo com metadados);
• Linguagem de Manipulação de Dados (DML): permite aos usuários fazer acesso aos dados ou manipulá-los conforme o modelo dedados. Podem ser procedurais (especificação do dado necessário e como obtê-lo) ou não-procedurais (especifica o dado necessário mas sem especificar como obtê-lo). O conjunto da DML que envolve busca de dados é a linguagem de consulta;
Componentes funcionais de um Banco de Dados:
• Gerenciador de arquivos: alocação de espaço e as estruturas de dados para representar as informações;
• Gerenciador do Banco de Dados: interface entre os dados de baixo nível e os programas aplicativos e de consulta submetidos ao sistema;
• Processador de consultas: traduz os comandos numa linguagem de consulta para instruções de baixo nível que o gerenciador do banco de dados pode utilizar;
• Pré-compilador da DML: converte comandos DML em chamadas de procedimento normal na linguagem hospedeira interagindo com o processador de consultas;
UNIDADE 16: Linguagem SQL
Histórico da SQL (inicialmente SEQUEL) desde a década de 70 até hoje, mostrando sua adoção sistemática para uso em SGBD.
Ela serve como:
• Linguagem interativa de consulta;
• Linguagem de programação para acesso a Banco de Dados; • Linguagem de Administração de Banco de Dados;
• Linguagem Cliente/Servidor;
• Linguagem para Banco de Dados Distribuído; Estrutura básica da SQL:
• DML → Select, Insert, Update e Delete;
• DCL (Data Control Language) → Grant e Revoke; • DDL → Create, Alter, Drop;
• Construção de Visões e operações de controle: Commit, Rollback, Show, List. UNIDADE 17: Sintaxe de comando SQL
CREATE DATABASE <nome_db>; OPEN DATABASE <nome_db>; CREATE TABLE <nome_tabela> ( nome_atributo1 <tipo> [NOT NULL], …
nome_atributoN <tipo> [NOT NULL], primary key (nome_atributo_chave) ); DROP TABLE <nome_tabela>; Exemplos, página 82-83.
UNIDADE 18: Sintaxe de comando SQL (continuação) SELECT * FROM table;
SELECT col1, col2 FROM table WHERE fieldX > 10; SELECT col1, col2 FROM table WHERE fieldX = 'value';
Fazendo operação aritmética sobre o resultados de uma coluna e colocando nomes bonitos no lugar dos nomes das colunas:
SELECT col1 “Nome Bonito Coluna 1”, col2 * 12 “Nome Bonito Coluna 2” FROM table WHERE fieldX > NNNN;
* DISTINCT → omite duplicidades
* NVL( col1, 0 ) → converte NULL em zero para a coluna col1. UNIDADE 19: Sintaxe de comando SQL (continuação)
continua com o SELECT:
Exemplos e demais cláusulas do comando SELECT nas páginas 91-95 UNIDADE 20: Sintaxe de comando SQL (continuação)
Funções agregadas e cláusula HAVING. Agrupamento com GROUP BY. Exemplos nas páginas 91-100.
* SQL avalia na ordem: WHERE (para estabelecer tuplas – não pode ter funções de grupo), GROUP BY (para fixar grupos) e HAVING (para selecionar grupos para exibição).
UNIDADE 21: Comandos SQL (continuação)
Equi-junção → relacionamento existente entre tabelas (é possível quando a definição da chave estrangeira é feita de forma adequada – referência à chave primária da tabela precedente). Subconsulta → um SELECT dentro de outro.
UNION → junta 2 linhas de consultas. Exemplos nas pp. 101-103
UNIDADE 22: Comandos SQL de manipulação de tabelas
INSERT INTO table ( COL1, COL2, COL3) VALUES ( “val1”, “val2”, “val3”); UPDATE table SET COL1 = COL1*10 WHERE COL1 < 10;
DELETE FROM table WHERE COL1 < 10; Transações (para permitir rollback):
begin transaction … ROLLBACK TRANSACTION … COMMIT end transaction; Exemplos de VIEW p. 109.
UNIDADE 23: Comandos SQL para relatórios pp.110-113
UNIDADE 24: Definição de privilégios
GRANT → permite adicionar privilégios (Select, Insert, Delete Update) a uma lista de usuários. A opção WITH GRANT OPTION passa adiante o privilégio (ou seja, os usuários que o recebem podem usar, por sua vez, o comando GRANT e passar privilégios a outros usuários).
REVOKE → revoga os privilégios Exemplos pp.115-117
UNIDADE 25: Definição de índices
CREATE INDEX → comando para criar índices
Índices são sub-tabelas dentro do SGBD e são gerenciadas por eles, logo não podem ser criados o tempo todo senão comprometem o desempenho do banco.
UNIDADE 26: Resumo dos comandos SQL e comandos específicos de outros SGBDs Tabela de comandos (pp.123-126)
UNIDADE 27: Técnicas de otimização de consultas SQL Boas práticas:
• Normalize as tabelas;
• Os primeiros campos das tabelas devem ser os requeridos;
• Primeiro defina os campos de tamanho fixo e depois os de tamanho variável;
• Se um campo de texto ('Descrição', por exemplo) for grande e pouco utilizado, é melhor criar uma tabela que contenha só este campo e a chave primária da tabela original;
• índices são úteis quando se realizam consultas simultâneas sobre várias tabelas (o processo fica otimizado se forem criados índices para os campos que ligam as tabelas);
• ao utilizar SELECT para mais de 1 tabela, deixar explícito o nome da tabela e do campo economiza tempo do gerenciador para traduzir a expressão;
• a ordem das tabelas na cláusula FROM é importante. UNIDADE 28: Gatilhos (Triggers)
O trigger define um conjunto de ações a serem executadas quando ocorre um evento no Banco de Dados em uma determinada tabela. O evento pode ser uma operação de exclusão, inserção ou atualização.
O comando é o CREATE TRIGGER. Ele pode ser chamado antes ou depois (BEFORE/AFTER) o evento, pode ser aplicado a cada linha alterada por uma operação (FOR EACH ROW) ou para uma operação inteira (FOR EACH STATEMENT).
Se vários gatilhos do mesmo tipo estão definidos para o mesmo evento, eles são disparados em ordem alfabética de seus nomes.
UNIDADE 29: Segurança
Fala da importância de proteger os dados e depois mostra algumas formas que são usadas pra tentar invadir banco de dados (quebra de senhas, falta de atualização, etc).
Depois cita boas práticas (restringir o acesso a certas áreas, uso de certos protocolos, permissões de arquivos e diretórios, etc).
UNIDADE 30: SGBDs usados no mundo corporativo Basicamente enumera alguns e conta seu histórico.
MySQL → interface SQL, fácil integração com PHP, software livre;
PostgreSQL → Sistema Gerenciador de Banco de Dados Objeto Relacional de código aberto; SQL Server;
Oracle;
DB2 → produzido pela IBM, inicialmente para mainframes, posteriormente a IBM trouxe para outras plataformas (Unix, Widows, Linux).