Projeto Físico de Banco de Dados

Documentos relacionados
Projeto de Banco de Dados

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo

SQL Linguagem de Definição de Dados

Banco de Dados. Linguagem SQL

Banco de Dados I Introdução SQL

BCD29008 Banco de dados

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

Linguagem de Consulta Estruturada (SQL)

Tabelas. Banco de Dados I MySQL

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

BANCO DE DADOS PARA NINJAS

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

A linguagem SQL

Introdução a Bancos de Dados

MySql. Introdução a MySQL. Andréa Garcia Trindade

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Introdução ao Banco de Dados. Banco de Dados

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

SQL Básica. Andre Noel

BANCO DE DADOS. Vinícius Pádua

A linguagem SQL

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Mysql. Quanto mais informações você busca, mais você evolui. Vitor Ramos. Disciplina de Banco de Dados

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Modelagem Física e SQL

Bases de Dados. DDL Data Definition Language

Organização da Informação

Material Teórico. Organização de Dados. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

Definição de Dados com SQL

Modelo Entidade-Relacionamento (E-R)

Modelagem Física e SQL

mod._1_teoria_sistemas de bancos de dados.doc

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Arquivo. Banco de Dados. Organização dos Arquivos. Banco de Dados. Banco de Dados. Introdução a Computação

Page 1. Prof. Constantino Jacob

Linguagem SQL Sub-linguagem DDL

P R O F. M E. H É L I O E S P E R I D I Ã O. Eng. Computação

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

INTRODUÇÃO AO MYSQL. Eng. Computação

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Aula 06 Sistemas Embarcados LT38C

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

IMPLEMENTAÇÃO DE BANCO DE DADOS

Banco de Dados. Professora: Luciana Faria

SQL (Tópicos) Structured Query Language

Banco de dados na Web

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Rápida revisão do Modelo Relacional

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

Structured Query Language (SQL) Aula Prática

Bancos (Bases) de Dados

Unidade 5 05/11/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

SQL DDL. Frederico D. Bortoloti

BANCO DE DADOS GERENCIAL 1 A U L A 2

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL


Tarefa Orientada 8 Criação de tabelas

UFG - Instituto de Informática

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Bancos de Dados Notas de Aula Introdução Prof. Dr. Daniel A. Furtado

P R O F. M E. H É L I O E S P E R I D I Ã O. Eng. Computação

SQL - Structured Query Language. Karine Reis Ferreira

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

SQL. Prof. Roger Cristhian Gomes

BANCO DE DADOS. Araújo Lima. Jan / Araújo

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Marcelo Henrique dos Santos

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Administração de Banco de Dados

Banco de Dados. Banco de Dados

Utilizando o Postgres - comandos SQL para a manipulação de dados

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL - Criação de Tabelas

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

Revisão de Bancos de Dados

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Banco de dados. Linguagens de Banco de Dados II. Wedson Quintanilha da Silva -

Transcrição:

Administração de Banco de Dados Projeto Físico de Banco de Dados

É uma atividade na qual o objetivo não é apenas obter uma estrutura de dados apropriada para armazenamento, mas desenvolve-lo de maneira que garanta um bom desempenho.» Navathe

Considerações sobre desempenho Normalização X Desnormalização Índice Estruturas de Armazenamento Ajuste de SQL Recomendações de ambiente PostgreSql Arquitetura Armazenamento Usuário Utilitários SQL

Normalização Projeto Físico Elimina anomalias de modificação Elimina redundância Facilita manutenção Reduz o espaço de armazenamento Normalização tende a produzir numerosas relações. As consultas nas relações normalizadas requerem muitas junções. Muitas junções e muitas relações reduzem a performance geral

Desnormalização Projeto Físico O processo de armazenar a junção de relações definidas em formas normais de mais alta ordem em uma relação base ( que está definida em uma forma normal de mais baixa ordem ) é conhecido como desnormalização Elmasri/Navathe Fundamentals of Database Systems

Candidatos a Desnormalização Tabelas envolvidas em relacionamentos 1:1 Tabelas envolvidas em relacionamentos n:n Tabelas usadas para validar domínio Relacionamentos 1:n onde n é conhecido e pequeno Dados derivados

Relacionamento 1:1 Projeto Físico Funcionário 1 1 Contrato Incluir duas relações envolvidas em um Relacionamento 1:1 em uma única relação Funcon

Funcionario Numero Nome Endereço 1 Luiz Silveira Rua 5 de julho no 30 2 Carlos Sa Av maracana 101 3 Maria Lins Sao clemente 30/101 Contrato Id Funcionário salário 10 1 1000 20 2 1500 22 3 5000 Funcon Numero Nome Endereço Id salário 1 Luiz Silveira Rua 5 de julho no 30 10 1000 2 Carlos Ramos Av maracana 101 20 1500 3 Maria Lins Sao clemente 30/101 22 5000

Relacionamento n:n Projeto Físico Funcionário n n Curso Funcionário 1 n Curso Armazenado como 1:n, curso terá registros duplicados

Funcionario Numero Nome Endereco 1 Luiz Silveira Rua 5 de julho no 30 2 Carlos Sa Av maracana 101 3 Maria Lins Sao clemente 30/101 Curso Codigo Nome Realizou Numero codigo 1 1 1 5 1 6 1 7 2 5 2 7 1 Segurança 5 Rede 6 Sql 7 Java

Funcionario Projeto Físico Numero Nome Endereco 1 Luiz Silveira Rua 5 de julho no 30 2 Carlos Sa Av maracana 101 3 Maria Lins Sao clemente 30/101 Curso Codigo Nome Numero 1 Segurança 1 5 Rede 1 6 Sql 1 7 Java 1 5 Rede 2 7 Java 2

Tabelas usadas para validar domínio Tabelas de domínio são geralmente vistas em banco de dados na forma codigo -> informação Exemplo: cidade(id,nome) Para desnormalizar, simplesmente armazena-se o campo informação na relação onde o dado é referenciado. Isto tem o efeito de re-introduzir dependências transitivas no banco de dados.

Funcionario Numero Nome CodCidade 1 Luiz Silveira 5 2 Carlos Sa 6 3 Maria Lins 5 Cidade Codigo Nome 5 Rio de janeiro 6 Sao Paulo Numero Nome Codigo Cidade 1 Luiz Silveira 5 Rio de janeiro 2 Carlos Sa 6 Sao Paulo 3 Maria Lins 5 Rio de janeiro

Relacionamentos 1:n onde n é conhecido e pequeno Considere que um funcionário pode desempenhar várias funções e uma funçao tem até 3 tarefas. Funcionario(numero,nome) Função(Titulo,descriçao,numeroFunc) Tarefa(funcaoTitulo,nomeTarefa) 1 * 1 * Funcionario Funcao Tarefa Pode ser implementado como: Funcionario(numero,nome) FunçãoTarefa(Titulo,descriçao,numeroFunc,tarefa1,tarefa2,tarefa3)

Dados derivados Dados derivados não são armazenados diretamente no banco de dados mas calculados a partir dos dados do banco. Alguns sistemas gerenciadores de banco de dados disponibilizam recursos para o gerenciamento de dados derivados no banco tais como views materializadas. Materialized View (Visões materializadas) Totalizações/Uniões (Bancos de apoio a decisão Data Warehouse)

Normalização/Desnormalização Obter a população de Curitiba? Select municipio, count(sexo) From Geografia G, Domicilio D, Pessoa P Where estado= PR and municipio= curitiba and G.id=id_geo and D.id=id_domi Group by municipio; JUNÇÃO DAS 3 TABELAS

Normalização/Desnormalização View materializada GEOTOT (estado, municipio, totpess) Obter a população de Curitiba? Select municipio, totpess From GEOTOT Where estado= PR and municipio= curitiba ; Pré-armazenamento de totalizações para melhorar desempenho

Índice O que é? Estrutura de dados mantida internamente pelo SGBD 2 campos: Valores dos atributos indexados (ordenados) Endereço da linha na tabela Exemplo TABELA FUNCIONARIO CODIGO NOME CIDADE RID 300 MENDES RIO 3870 250 CASTRO RIO 4568 220 NEVES BH 1245 INDICE NA COLUNA NOME RID NOME 4568 CASTRO 3870 MENDES 1245 NEVES

Índice Finalidade Otimizar o acesso aos dados nas relações Analogia a um índice de um livro Acesso mais rápido ao registro no caso da chave de busca for igual ao campo indexado. Busca no arquivo índice é mais rápida porque o arquivo de índice é menor e é ordenado. Logo é possível fazer um acesso mais rápido via busca binária. Número de acessos (médio) em busca binária é log n. Acesso seqüencial (ordenado) pelo campo indexado. Desvantagens Maior espaço de armazenamento. Inclusão, exclusão, alteração mais lentos.

Tipos Estrutura de dados Árvores B ou B+ ( comuns em chaves primárias) Alta seletividade Hash Forma Únicos (implementam a restrição unique ) Compostos (definidos sobre múltiplos atributos) Quando usar? Em atributos usados como filtros (cláusula where ) caso a freqüência de execução seja alta ou tempo de resposta insatisfatório. Em chaves estrangeiras (Facilitam a junção)

Motivação: Desempenho fraco Indicações para o ajuste: Projeto Físico Ajuste de Consultas 1. Consulta emite muitos acessos ao disco (por exemplo, uma consulta varre a tabela inteira). 2. O plano de consulta mostra que índices relevantes não estão sendo usados.

Ajuste de Consultas Alguns casos típicos de ajuste: 1. Expressões em comparações onde o índice não é usado Comparações com expressões: salario/365 > 10 Comparações numéricas de campos com diferentes tamanhos X = Y, onde X é integer e Y é smallint Comparações com NULL Data_nascimento IS NULL Comparações com substrings Nome like %eira Projeto Físico Muitos otimizadores não usam índices nestas situações

Casos típicos de ajuste: 2. Subconsultas com operador IN índices não costumam ser usados pelos otimizadores Projeto Físico Ajuste de Consultas SELECT MATRICULA FROM FUNCIONARIO WHERE COD_DEPTO IN(SELECT CODIGO FROM DEPARTAMENTO WHERE MATRICULA_GERENTE = 1235); PODE NÃO USAR O ÍNDICE EM COD_DEPTO SELECT MATRICULA FROM FUNCIONARIO, DEPARTAMENTO WHERE COD_DEPTO = CODIGO AND MATRICULA_GERENTE = 1235; PODE USAR O ÍNDICE

Casos típicos de ajuste: 3. Uso da clausula distinct Muitas vezes seu uso é redundante. Normalmente causa uma operação de ordenação e deve ser evitado 4. Ordem das tabelas na cláusula FROM Alguns otimizadores levam isso em consideração. 5. Divisão de consultas com múltiplos OR. Projeto Físico Ajuste de Consultas Dividir e formular como uma UNIÃO de consultas. SELECT PNOME,UNOME,SALARIO,IDADE FROM FUNCIONARIO WHERE IDADE > 45 OR SALARIO < 5000; SELECT PNOME,UNOME,SALARIO,IDADE FROM FUNCIONARIO WHERE IDADE > 45 UNION SELECT PNOME,UNOME,SALARIO,IDADE FROM FUNCIONARIO WHERE SALARIO < 5000; PODE USAR ÍNDICES EM IDADE E SALÁRIO

Estruturas de Armazenamento Lógica Física 1 * Tablespace 1 * Tabela Índice 1 * Nível Lógico Arquivo Tablespace define a localização de armazenamento para tabelas e índices Usar tablespaces diferentes para cada projeto. Usar tablespaces diferentes para índice e tabela Nível Físico Usar unidades de disco diferentes para índices e tabelas, melhorando o througput de E/S

Ambientes de Desenvolvimento/Produção Ambiente de desenvolvimento permite que as aplicações sejam testadas antes de entrarem em produção. Usar mesma versão do sistema operacional e sistema gerenciador de banco de dados. Se for possível usar também um ambiente de homologação Aplicação de patch e upgrade Testes de ferramentas auxiliares Documentar problemas e soluções Facilita o trabalho de suporte Testar a recuperação do backup antes de entra em produção

PostgreSql Arquitetura Armazenamento Usuário Utilitários SQL

O PostgreSQL é um sistema de gerenciamento de banco de dados objeto-relacional, derivado do pacote POSTGRES escrito na Universidade da Califórnia em Berkeley. Qualquer plataforma Unix-compatível pode rodar PostgreSQL. A compatibilidade nativa para Windows está disponível desde a versão 8.0. Versões antigas do Windows baseadas no MSDOS (Win95, Win98, WinMe) podem rodar PostgreSQL usando Cygwin.

Fundamentos da Arquitetura O PostgreSQL utiliza o modelo cliente-servidor. O processo servidor, que gerencia os arquivos de banco de dados, aceita conexões dos aplicativos-cliente e executa ações no banco de dados em nome dos clientes. O programa servidor de banco de dados se chama postgres. O aplicativo-cliente do usuário (frontend), que deseja executar operações de banco de dados, pode ser uma ferramenta no modo caractere, um aplicativo gráfico, um servidor Web que acessa o banco de dados para mostrar páginas Web, ou uma ferramenta especializada para manutenção do banco de dados. Alguns aplicativos-cliente são fornecidos na distribuição do PostgreSQL, sendo a maioria desenvolvido pelos usuários.

Armazenamento Esquema É uma coleção de tabelas, visões, índices, tipos de dados e funções. Facilita a organização lógica dos objetos do banco Por padrão, as tabelas (e outros objetos) são colocadas automaticamente no esquema chamado "public", presente em todos os banco de dados. Banco de Dados É uma coleção de esquemas. Quando um cliente se conecta a um servidor, ele especifica o banco de dados que ele quer acessar.

Tablespace Por padrão são criados dois tablespaces no PostgreSQL: pg_default repositório padrão dos objetos e dados fornecidos pelos usuários pg_global armazena o catálogo do servidor e templates (protótipos) de banco de dados Para definir um tablespace é utilizado o comando CREATE TABLESPACE. CREATE TABLESPACE ST_TABELA OWNER vivacqua LOCATION 'c:/tablespace/tabelas';

Usuário Usuário é equivalente a Role com a exceção de que quando um usuário é criado é assumido que ele pode dar login enquanto que na Role isto não acontece. Ex: create user vivacqua with createdb password 'vivacqua'

Utilitários Backup Pgdump Pgrestore Carga / Extração Copy Recuperar o espaço em disco ocupado por registros deletados. Vacuum Coleta de estatísticas Analyse

PGADMIN Ferramenta cliente para projeto e administração distribuída gratuitamente Permite executar comandos SQL (DDL e DML)

SQL - (Structured Query Language) Surgiu no início na década de 70 pela IBM. Em1980 o produto mudou seu nome para SQL. American National Standards Institute é o mantenedor e responsável pelo padrão. A linguagem é enorme ( especificação contém + 2000 páginas). Os comandos de SQL podem ser usados interativamente como uma linguagem de consulta ou podem ser incorporados a programas de aplicações.

A Linguagem de Definição de Dados: Subcategoria de SQL que permite a criação e a alteração dos objetos do banco de dados. Normalmente, é de uso exclusivo do Administrador de Banco de Dados; contudo, seu uso fica sujeito à política da empresa. PRINCIPAIS COMANDOS DDL: CREATE, ALTER, DROP TABLE CREATE, DROP INDEX CREATE VIEW

Criando tabela Projeto Físico CREATE TABLE nome-da-tabela ( definição-da-coluna1, definição-da-coluna2,..., definição-dacolunan ) ONDE definição-da-coluna é definida como: nome-da-coluna tipo-de-dado [CONSTRAINT]

Principais tipos de dados numéricos smallint 2 bytes inteiro com faixa pequena -32768 a +32767 integer 4 bytes escolha usual para inteiro -2147483648 a +2147483647 bigint 8 bytes inteiro com faixa larga -9223372036854775808 a 9223372036854775807 decimal variável precisão especificada pelo usuário sem limite numeric variável precisão especificada pelo usuário sem limite serial 4 bytes inteiro com auto-incremento 1 a 2147483647 Principais tipos de dados de caracteres character(n), char(n) character varying(n), varchar(n) limite 1GB

PRINCIPAIS CONSTRAINTS: Primary key define a chave primária da tabela Foreign key define uma chave estrangeira Unique define que o valor da coluna é único Not Null especifica que a coluna não pode ter valores nulos Check estabelece um domínio para os valores da coluna Podem ser especificadas: na definição da coluna ao final da definição das colunas através do comando ALTER TABLE

Exemplos CREATE TABLE DEPARTAMENTO Projeto Físico ( CODIGO INTEGER PRIMARY KEY, NOME CHAR(20) NOT NULL, STATUS INTEGER, CIDADE CHAR(20) ) CREATE TABLE FUNCIONÁRIO ( MATRICULA INTEGER PRIMARY KEY, NOME VARCHAR (20) NOT NULL, SEXO CHAR (1), DEPTO INTEGER, CONSTRAINT FK_DEP FOREIGN KEY(DEPTO) REFERENCES DEPARTAMENTO (CODIGO) );

Alterando a estrutura da tabela Adicionando coluna Removendo coluna Renomeando coluna Adicionando constraint Removendo constraint

SINTAXE: ALTER TABLE nome-da-tabela ADD CONSTRAINT ou DROP CONSTRAINT ou ADD COLUMN ou DROP COLUMN ou RENAME TO novo_nome_tabela ou RENAME nome_da_coluna TO novo_nome_coluna

Exemplos: ALTER TABLE DEPARTAMENTO ADD TELEFONE CHAR(11); TRANSFORMA A TABELA DE DEPARTAMENTO EM: DEPARTAMENTO (CÓDIGO, NOME, STATUS, CIDADE, TELEFONE); ALTER TABLE DEPARTAMENTO ADD CONSTRAINT FORNECEDOR_PK PRIMARY KEY (CODIGO); CRIA A CHAVE PRIMÁRIA NA TABELA FORNECEDOR. ALTER TABLE FUNCIONARIO ADD CONSTRAINT FK_DEPARTAMENTO FOREIGN KEY(DEPTO) REFERENCES DEPARTAMENTO( CODIGO); CRIA O RELACIONAMENTO ENTRE UMA TABELA DEPARTAMENTO E A TABELA FUNCIONARIO. ALTER TABLE FUNCIONÁRIO ADD CONSTRAINT CHK_SEXO CHECK (SEXO IN ( M, F ));

Removendo uma tabela SINTAXE: DROP TABLE nome-da-tabela Esta sentença não só remove a descrição da tabela do catálogo do banco, como todas suas instâncias, visões e índices definidos sobre ela. EXEMPLO: DROP TABLE Funcionario; /* Remove do banco de dados a tabela Funcionario */

Criando Índice Sintaxe: CREATE INDEX nome-indice ON nome-da-tabela(nome_coluna) [Tablespace nome-da-tablespace] Exemplos Create Index ind_nome on Funcionario(NOME) tablespace ST_INDICE ; Create Index ind_nome on Funcionario(NOME) using hash tablespace ST_INDICE;

Removendo índice Sintaxe: Drop index nome-do-índice Exemplo: DROP INDEX IND_NOME;