BANCO DE DADOS EM BIOINFORMÁTICA Márcio K. Oikawa UFSCar [email protected] Palestrante • Professor da Universidade Federal de São Carlos – campus Sorocaba; • Formação na área de Ciência da Computação; • Atuação em vários projetos relacionados a Bioinformática e Biologia Molecular Computacional; • Material desta aula é baseado nos slides do prof. Luciano Vieira de Araújo (EACH-USP). Objetivos • Reconhecer as necessidades de um banco de dados; • Aprender a resolver problemas usando bancos de dados; • Explorar os recursos de ferramentas de bancos de dados relacionais; • Reconhecer oportunidades de aplicar isso a projetos de Bioinformática. Roteiro • Introdução • Motivação; • O que é banco de dados; • Quando usar e não usar banco de dados. • Um pouco sobre banco de dados • Modelo relacional; • Consultas SQL; • Data warehouse e Data mining. • Pontos importantes a serem considerados em um projeto de pesquisa • Aplicações em Bioinformática • Desafios e oportunidades de pesquisa em banco de dados aplicado à Bioinformática Dados – Informações – Conhecimento Os dados são elementos brutos, sem significado, desvinculados da realidade. "observações sobre o estado do mundo". Davenport, 1998. “descrição elementar”. Turban, 2007. As informações são dados com significado - resultado do encontro de uma situação de decisão com um conjunto de dados "São dados dotados de relevância e propósito" (Davenport, 1998). Dados organizados, com valor para o receptor (Turban, 2007) O conhecimento pode então ser considerado como a informação processada pelos indivíduos – entendimento, experiência, aprendizagem acumulada e prática. o "conhecimento é a informação mais valiosa (...) é valiosa precisamente porque alguém deu à informação um contexto, um significado, uma interpretação (...)". Davenport (1998) ANGELONI, Maria Terezinha.2003 Dados – Informações – Conhecimento O caminho da sociedade da informação para a sociedade do conhecimento é o caminho da informação para o significado, da percepção para o julgamento." MARKL, Hubert.,1998 Contexto Conhecimen to ANGELONI, Maria Terezinha. Elementos intervenientes na tomada de decisão. Ci. Inf. [online]. 2003, v. 32, n. 1, pp. 17-22. http://www.scielo.br/pdf/ci/v32n1/15969.pdf Vamos começar do começo! • O que é um banco de dados? Um conjunto de dados qualquer. Banco de dados simples • Para que serve um banco de dados? • Guardar; • Lembrar; • Proteger; • Zelar (garantir a qualidade). • Este é um bom banco de dados? História do banco de dados • Evolução do processamento e armazenamento dos dados Gerenciamento de dados - História PROGRAMA 1 Gerenciamento dos dados PROGRAMA 2 Gerenciamento dos dados DATA SET 1 DATA SET 2 • Dados não armazenados nos discos • Programador define tanto a estrutura lógica quanto física dos dados (estrutura de armazenamento, métodos de acesso, modos de I/O, etc) • Um conjunto de dados por programa • Alto nível de redundância Processamento de arquivos - história(recente e atual) PROGRAMA 1 PROGRAMA 2 Gerenciamento dos dados PROGRAMA 3 Serviços de File System Arquivo 1 Arquivo 2 dados redundantes Gerenciamento dos dados Gerenciamento dos dados • Dados armazenados em arquivos com interface entre o programa e o arquivo • Vários métodos de acesso disponíveis: • Seqüencial, indexado, randômico, etc • Um arquivo utilizado por vários programas Funções do Sistema de Arquivos • Mapeamento entre arquivos lógicos e físicos • Arquivos lógicos: arquivo visto pelos usuários e programas • Programa manipula arquivos lógicos • Arquivos físicos: arquivo realmente como armazenado em um dispositivo • Sistema operacional manipulam os arquivos físicos • Um conjunto de serviços e uma interface PROGRAMA 1 PROGRAMA 2 Gerenciamento dos dados PROGRAMA 3 Gerenciamento dos dados Serviços de File System Arquivo 1 Arquivo 2 dados redundantes Gerenciamento dos dados Problemas com Sistemas de Arquivos • Dados altamente redundantes • Compartilhamento limitado e em nível de arquivo • Alto custo de manutenção • Dependência dos dados • Para garantir a consistência e controle de acesso • Granularidade de compartilhamento • Dificuldades no desenvolvimento de novas aplicações A abordagem dos Bancos de Dados PROGRAMA 1 SGBD Base de Dados Integrada PROGRAMA 2 Processador de consultas Gerenciador de transações ... O que é um SGBD? • Uma grande coleção integrada de dados • Modelos do mundo real • Entidades (ex. estudantes, cursos) • Relacionamentos (ex. Sivia está cursando PRBD) Um Sistema de Gerenciamento de Banco de Dados (SGBD) é um pacote de software designado para guardar e gerenciar um banco de dados Estrutura do sistema users Forms PGMs Application Front ends DBA DML/CLI interface DDL SQL commands Transaction & Lock Manager Query Evaluation Engine File & Access Methods Buffer Manager Disk Space Manager indexes catalog data files Recovery Manager SGBD DDL Compiler Um banco de dados oferece • Consistência • Eficiência • Controle de restrições • • • • Chave, Tipo de dados, Chave estrangeira, Unicidade, • Possível qualidade de dados • Como assim ? Quando não usar banco de dados • Existe algum caso ? 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 da aplicação 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 Porque estudar Bancos de Dados? • Mudança da computação para a informação • Mundo heterogêneo – Diferentes tipos de aplicações e complexidade • Conjuntos de dados aumentando em diversidade e volume • Bibliotecas digitais, projeto do genoma humano, uso da informação para o processo de tomada de decisões das empresas (competitividade) • Necessidade de bancos de dados cada vez maiores • SGBD permeia a maior parte da computação: • SOs, linguagens, lA, multimidia, etc.... SGBDs • Comerciais • • • • • Oracle Sybase Sql server DB2 Access • Gratuitos • Mysql • Postgresql • Hsqldb Tipos de banco de dados • Quanto ao processamento de transações • • • • Centralizados • Distribuídos Modelo de dados • Relacional • Orientado a objetos Especialização • Geográficos • Temporais Natureza dos dados • Produção • Analítico (Data warehouse) Desafios da Bioinformática • • • • • Conceitos em constante mudança Modelagem e gerenciamento dos dados Integração de banco de dados Rastreabilidade de dados Qualidade de dados Exercício • Desenhe um banco de dados para atender um sistema de controle acadêmico (geração de histórico escolar) que contemple: • • • • Dados sobre os alunos Dados sobre as diciplinas Dados sobre os professores Seus relacionamentos (qual a nota de cada aluno nas disciplinas que cursa/cursou, qual professor ministra cada disciplina etc.) Discussão: quais as dificuldades encontradas? Modelo de dados • Um modelo de dados é uma coleção de conceitos para descrever dados • Um esquema é uma descrição de uma coleção particular de dados, usando algum modelo de dados Modelo de dados • O modelo de dados relacional é o modelo mais usado hoje • Principal conceito: relação, basicamente uma tabela com linhas e colunas • Toda relação tem um esquema, que descreve as colunas, ou campos • É um formalismo que define qual a estrutura dos dados • Dentro de um arquivo • Entre arquivos Níveis de Abstrações • Muitas visões simples, esquema conceitual (lógico) e esquema físico • Visões descrevem como usuários vêem o dado • Esquema conceitual define a estrutura lógica • Esquema físico descreve o arquivo e índices usados Visão 1 ... Esquema conceitual Esquema físico Visão N 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 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 e o sistema garante • Visões individualizadas • Restrições a certas relações • Reorganização das relações por certas classes de usuários 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 Controle de concorrência • Execução 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 pode levar a contradições • Ex.: o cheque compensado enquanto o saldo é computado • O SGBD evita tais problemas: usuários podem fingir que estão usando um sistema único 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 consultas • 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 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 SGBD – Sistemas gerenciadores de banco de dados Exemplos de dado em um banco de dados O lugar do SGBD no sistema Programas de aplicação Ferramentas de desenvolvimento SGBD Sistema Operacional Hardware Usuários do banco de dados • Usuário final • Usuário “leigo” ou casual • Acessa o BD através de forms ou através de front ends de aplicações • Os mais sofisticados geram consultas adhoc usando DML • Programadores de aplicação/desenvolvedores • Desenham e implementam aplicações que acessam o BD (algumas podem ser utilizadas pelos usuários finais) Usuários do banco de dados • Administradores de bancos de dados (DBA – database administrator) • Define e gerencia o esquema conceitual • Define as visões para as aplicações e usuários • Monitora e ajusta a performance do SGBD (define/modifica esquema interno) • Carrega e controla a base de dados • Responsável pela segurança e confiabilidade O Modelo Entidade-Relacionamento O Modelo de dados EntidadeRelacionamento (ER) • Descreve os dados do mundo real como objetos e seus relacionamentos • Amplamente utilizado para o desenho inicial da base de dados • Descrição informal descrição detalhada e precisa que pode ser implementada em um DBMS O Processo de Desenho do BD 1. Análise de requerimentos ou necessidades 2. Desenho conceitual do BD 3. Desenho lógico do BD 4. Refinamento do esquema 5. Desenho físico do BD 6. Desenho da segurança MER - necessário principalmente nas etapas 2 e 3 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 entidaderelacionamento 2. Projeto Lógico: define como o banco de dados será implementado em um SGBD específico passando pelo refinamento do esquema (normalização), onde verifica o esquema relacional para redundâncias e anomalias Exemplo prático • Estudo de caso... Entidade • Conjunto de elementos (objetos) do sistema que possui vida própria e sobre os quais se deseja armazenar informações no banco de dados. Relacionamento p1 p7 p3 p8 p4 p2 p6 p5 p4,d2 p1,d1 d1 p5,d3 p2,d1 Entidade EMPREGADO d2 d3 Relacionamento LOTAÇÃO Entidade DEPARTAMENTO Obs: o relacionamento não necessariamente associa entidades diferentes. Pode ocorrer um auto-relacionamento Classificação de relacionamentos binários • Exemplos: relacionamentos 1:1 EMPREGADO PESSOA 1 1 marido esposa CASAMENTO 1 ALOCAÇÃO 1 (Relacionamento binário que envolve apenas uma entidade) MESA Classificação de relacionamentos binários • Exemplos: relacionamentos 1:n n ALUNO 1 INSCRIÇÃO CURSO EMPREGADO 1 EMPREGADO n DEPENDENTE 1 supervisor n supervisionado SUPERVISÃO Classificação de relacionamentos binários • Exemplos: relacionamentos n:n n MÉDICO n PACIENTE CONSULTA n PEÇA n FORNECEDOR CAPACIDADE PRODUTO n n n composto componente COMPOSIÇÃO ENGENHEIRO n ALOCAÇÃO PROJETO Exercício • Explique cada caso de cardinalidade n 1 1 1 n n 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 Cardinalidade de Relacionamentos DEPARTAMENTO LOTAÇÃO 1 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 n EMPREGADO 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 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 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” Cardinalidade Mínima Exemplo: e1 e3 EMPREGADO e4 e2 (0,1) e3,m6 ALOCAÇÃO e1,m1 e4,m4 e2,m2 (1,1) MESA m6 m1 m2 m5 m3 m4 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) Exemplo de uso de entidades e relacionamentos DER para o controle acadêmico de uma universidade: PRÉ-REQUIS DEPARTAMENTO (1,1) RESPONSÁVEL liberada liberadora (0,n) (0,n) (0,n) DISCIPLINA (0,n) DISC-CURSO (0,n) ALUNO (0,n) INSCRIÇÃO (1,1) CURSO Explique o significado das cardinalidades 1) cursos alunos matricula 0,n 0,n 2) cursos alunos matricula 0,n 1,n cursos alunos 3) matricula 0,1 cursos alunos 4) 0,n matricula 0,1 1,1 Atributos atributo = dado que é associado a cada ocorrência de uma entidade ou de um relacionamento • O modelo ER permite a especificação de propriedades de entidades, como: • participar de um relacionamento • possuir atributo(s) Atributos • São representados conforme diagrama abaixo: PROJETO tipo código nome • 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 Atributos • Exemplo: atributo de relacionamento n:n (0,n) ENGENHEIRO (0,n) ATUAÇÃO PROJETO Função Código Nome Código Título Obs: um engenheiro pode atuar em diversos projetos, exercendo diferentes funções Identificando entidades • Cada entidade deve possuir um identificador • Identificador é um conjunto de um ou mais atributos (e possivelmente relacionamentos) cujos valores servem para distinguir uma ocorrência da entidade das demais ocorrências da mesma entidade Identificando entidades • No exemplo abaixo, o atributo código é identificador • Cada pessoa possui um código diferente Código PESSOA Nome Endereço • O atributo código é um identificador simples Identificando entidades • Exemplo de identificador composto: número do corredor PRATELEIRA número da prateleira capacidade • 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 Identificando entidades • O identificador de uma entidade (simples ou composto, ou composto por identificadores externos) deve obedecer duas propriedades: • o identificador deve ser mínimo - retirando um dos atributos ou relacionamentos que o compõe, ele deixa de ser identificador. • Exemplo: Código PESSOA Nome Endereço código+nome poderia ser usado como identificador mas não atende ao requisito descrito acima, pois não formam um identificador mínimo (código é suficiente para distinguir as ocorrências de PESSOA) Esquemas gráficos de modelos ER • Símbolos usados na construção de esquemas ER: Entidade Relacionamento identificador (entidade fraca) (1,1) Relacionamento Generalização/especialização Atributo Entidade associativa (agregação) Atributo identificador SQL – Structured Query Language SQL STRUCTURED QUERY LANGUAGE • Semelhante ao inglês falado • Fácil de escrever, ler e entender Componentes do SQL • DDL - Data Definition Language • • • CREATE • ALTER • DROP DML - Data Manipulation Language • SELECT • UPDATE • INSERT • DELETE DCL – Data Control Language • GRANT • REVOKE Exemplo de um banco de dados para pacientes pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostras Regiao_Genoma Tamanho Fasta • Tabela (conjunto de registros/linhas/tuplas com os mesmos atributos) INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT Relacionamento entre tabelas Pacientes Id_Paciente Idade Sexo Cidade Pais I <M> I 1,1 A1 A100 A100 Sequencia Amostras Id_Amostra Possui 0,n Data Pais_Coleta Origem_Amostra pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) I <M> D 0,1 A100 A100 amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) Origina Id_Sequencia Regiao_Genoma 0,n Tamanho Fasta I <M> A100 I LBIN sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT Conteúdo das tabelas Id_Paciente Idade Paciente Amostra Id_Amostra Sexo o Cidade Pais 1 15 M São Paulo Brasil 2 28 F São Paulo Brasil 3 19 M Campinas Brasil Id_Paciente Data Pais origem Origem (FK) Sequencia Id_Sequencia 1 2 01/01/99 Brasil Sangue 2 3 05/03/99 Françae Pele 3 2 07/08/99 Brasil Sangue Id_Amostra Tamanho Fasta (FK) Regiao genoma 1 2 Pol 200 ACCTTAT...AACT 2 1 Gag 300 TCATTAA...CACA 3 2 Env 250 CCCTTCA...TACG Criar Tabela - Create Tabela Sintaxe do comando: Create Table Nome da Tabela ( Coluna1 Tipo de dado [ Not Null] [Primay Key], Coluna2 Tipo de dado [ Not Null], ... ColunaN Tipo de dado [Not Null] ); [] – Indica termo opcional Tipos de dados • char[(n)] – Sequência de caracteres com tamanho fixo. n indica a quantidade de caracteres. Tamanho ocupado n bytes. • int – Inteiro – Valores possíveis de -231 (-2,147,483,648) até 231 (2,147,483,647). Tamanho ocupado 4 bytes. • smallint – Inteiro de -215 (-32,768) até 215 - 1 (32,767). Tamanho ocupado 2 bytes. • datetime – Armazena data e horário de Janeiro. Tamanho ocupado 8 bytes • text – Sequência de caracteres de tamanho variado. Criar Tabela - Create Tabela pacientes Id_Paciente Idade Sexo Cidade Pais INT8 <pk> INT2 CHAR(1) VARCHAR(100) varchar(100) Create Table Pacientes ( Id_Paciente int8 not null primary key, Idade int2, Sexo char(1), Cidade varchar(100), Pais varchar(100)) Criar tabelas com relacionamentos pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT O relacionamento entre duas tabelas é indicado pela restrição de integridade chamada Chave Estrangeira (Foreign Key). Constraint Nome_da_restricao ConstraintType (Nome_atributo ) References Nome_tabela (Nome_atributo) Constraint Fk_IdPaciente Foreign Key (Id_Paciente ) References Paciente (Id_Paciente) Conteúdo das tabelas Paciente Amostra Id_Paciente Idade Id_Amostra Sexo o Cidade Pais 1 15 M São Paulo Brasil 2 28 F São Paulo Brasil 3 19 M Campinas Brasil Id_Paciente Data Pais origem Origem (FK) Sequencia Id_Sequencia 1 2 01/01/99 Brasil Sangue 2 3 05/03/99 Françae Pele 3 2 07/08/99 Brasil Sangue Id_Amostra tamanho Fasta (FK) Região do genoma 1 2 Pol 200 ACCTTAT...AACT 2 1 Gag 300 TCATTAA...CACA 3 2 Env 250 CCCTTCA...TACG Criar tabelas com relacionamentos pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT Create Table amostras ( Id_Amostra int not null primary key, Id_Paciente int, Data DateTime, Indica que a tabela amostras possui relacionamento com a tabela pacientes Pais_Coleta varchar(100), Origem_Amostra varchar(100), Constraint Fk_IdPaciente Foreign Key (Id_Paciente) References pacientes (Id_Paciente) ) Criar tabelas com relacionamentos pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta Create Table Sequencias ( Id_Sequencia int not null primary key, Id_Amostra int, Regiao_Genoma varchar(100), Tamanho int, Fasta Text, Constraint Fk_IdSequencia Foreign Key (Id_Amostra ) References Amostras (Id_Amostra) ) INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT Inserir dados nas tabelas pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta • Comando para inserir dados: INSERT INTO Nome_Tabela (Col 1, ..., Col N) • Example: VALUES (Val 1, ..., Val N) insert into Paciente (Id_Paciente, idade, Sexoo, cidade, pais) values (1, 18,‟M‟, „São Paulo‟,„Brasil‟) INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT Inserir dados - tabela Amostras pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Comando para inserir dados: INSERT INTO Nome_Tabela (Col 1, ..., Col N) VALUES (Val 1, ..., Val N) • Exemplo: insert into amostras (Id_Amostra,Id_Paciente, Data,Pais_Coleta, Origem_Amostra) values (1, 1,‟25/03/02‟, „Brasil‟,„Sangue‟) Insert into – Tabela Sequencias pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Example: insert into Sequencia (Id_Sequencia, Id_Amostra,Regiao_Genoma, Tamanho, Fasta) values (1, 1,‟Env‟, 200, „>AA0001 Paciente1 Amostra1 ACTGAATCGAACTGAATCGAACTGAATCGAACTGAATCGA ACTGAATCGAACTGAATCGAACTGAATCGAACTGAATCGA ACTGAATCGAACTGAATCGAACTGAATCGAACTGAATCGA‟) Entrada de de dados • Além do Insert, existem outros comeos para entrada de dados. Ex.: Copy, Select into, etc • Uma interface para entrada de dados torna o processo mais simples e transparente. INSERT INTO Nome_Tabela (Col 1, ..., Col N) VALUES (Val 1, ..., Val N) Paciente Id_Paciente Idade Sexoo Cidade Pais 1 15 M São Paulo Brasil 2 28 F São Paulo Brasil 3 19 M Campinas Brasil Consulta de dados - Select SELECT <lista de atributos> FROM <lista de tabelas> [WHERE <condições>] [ ] – Indica termo opcional Consultar os dados inseridos SELECT * FROM Nome_Tabela Indica todos os campos da tabela SELECT * FROM Pacientes SELECT * FROM Amostras SELECT * FROM Sequencias Evite erros de sintaxe • Use virgulas para separar nomes de tabelas e atributos . , , Select Id_Paciente Idade Sexo Select Id_Paciente Idade Sexo • Use aspas simples para indicar valores alfanuméricos „ ‟ Where Cidade = São Paulo Where Cidade = São Paulo Diferença entre símbolos Normal = SQL Simbolos <> >= <= Consultas básicas em SQL pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre Identificador, Idade, Sexo e Cidade de todos pacientes. SELECT <Lista_Atributos> SELECT Id_Paciente, Idade, Sexo, Cidade FROM <Lista_tabelas> FROM Pacientes [WHERE <Condições>] Consultas básicas em SQL pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre Idade e Cidade de todos pacientes com Idade menor que 17 anos. SELECT <Lista_Atributos> FROM <Lista_tabelas> [WHERE <Condições>] SELECT Idade,Cidade FROM Pacientes WHERE Idade > 17 Consultas básicas em SQL pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre Idade e Cidade de todos os pacientes do sexo feminino com Idade menor que 17 anos de idade. SELECT <Lista_Atributos> FROM <Lista_tabelas> [WHERE <Condições>] SELECT Idade,Cidade FROM Pacientes WHERE Idade > 17 and Sexo = ‘F’ Junção - Consultar mais de uma tabela pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • A junção de tabelas é representada na clausula Where Tabela1.Atributo_Junção= Tabela2. Atributo_Junção • Exemplo: Pacientes.Id_Paciente = Amostras.Id_Paciente Consultas básicas em SQL - Tabela Join pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre o pais do paciente que possui a amostra com identificador 2. SELECT Paciente.Pais FROM Pacientes, Amostras WHERE Amostras.Id_Amostra = 2 and Pacientes.Id_Paciente = Amostras.Id_Paciente SELECT <Lista_Atributos> FROM <Lista_tabelas> [WHERE <Condições>] Condição de junção Consultas básicas em SQL - Join pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre o sexo do paciente, pais onde a amostra foi coletada e região do Genoma das sequências que possuem tamanho menor que 200 bp SELECT Pacientes.Sexo, Amostras.Pais_Coleta, Sequencia.Regiao_Genoma FROM Pacientes, Amostras, Sequencias WHERE Sequencias.Tamanho > 200 and Pacientes.Id_Paciente = Amostras.Id_Paciente and Amostras.Id_Amostra = Sequencias.Id_Amostra Consultas básicas em SQL - Join pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre o Sexo do paciente, pais de coleta da amostra e Região do Genoma das sequências cujo tamanho seja menor que 200 bp SELECT P.Sexo, S.PaisOrigin, Se.Regiao_Genoma FROM Pacientes P, Amostras S, Sequencias Se WHERE Se.Tamanho > 200 and P.Id_Paciente = S.Id_Paciente and S.Id_Amostra = Se.Id_Amostra P, S, Se São os apelidos das tabelas Consultas básicas em SQL – Order by pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT Como mudar a ordem dos dados que aparecem no resultado de uma consulta?. SELECT FROM WHERE ORDER BY Idade,Cidade Pacientes Idade > 17 Idade Ordem numérica SELECT FROM WHERE ORDER BY Idade,Cidade Pacientes Idade > 17 Cidade Ordem alfabética Exercicíos - Consultas básicas em SQL pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre Idade e Pais de todos pacientes do sexo masculino. SELECT <Lista_Atributos> FROM <Lista_tabelas> [WHERE <Condições>] SELECT Idade,Pais FROM Pacientes WHERE Sexo = ‘M’ Exercícios - Consultas básicas em SQL pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre todas Sequencias (FASTA ) da região do genoma chamada Pol e cujo Tamanho seja menor que 200 bp SELECT <Lista_Atributos> FROM <Lista_tabelas> [WHERE <Condições>] SELECT Fasta FROM Sequencias WHERE Tamanho > 200 and Regiao_Genoma = ‘Pol’ Exercícios - Consultas básicas em SQL pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Encontre a cidade e idade dos pacientes cujas amostras foram coletadas no dia 01/03/99, mostre o resultado em ordenado pela idade do paciente SELECT <Lista_Atributos> SELECT FROM <Lista_tabelas> FROM [WHERE <Condições>] Paciente.Cidade, Paciente.Idade Pacientes, Amostras WHERE Amostras.Date = ‘01/03/99’ and Pacientes.Id_Paciente = Amostras.Id_Paciente ORDER BY Pacientes.Idade Remover dados das tabelas pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Comando: Delete from Nome_Tabela [Where <Condições>] Atenção!! Sempre é perigoso remover dados. Preste atenção nas condições do comando “delete”. • Exemplo: Delete from Pacientes Remove todos os dados da Tabela Pacientes. Remover dados das tabelas pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) • amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT Exemplo: Delete from Sequencias where Tamanho > 200 Remove da Tabela Sequencias todas as sequências com Tamanho > 200 Remover tabela do banco de dados pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Comando: Drop Table Nome_Tabela Atenção!! Sempre é perigoso remover dados Preste atenção nas condições do comando “delete”. • Example: Drop Table Pacientes; Remove a Tabela Paciente. Remover tabela do banco de dados pacientes Id_Paciente INT8 <pk> Idade INT2 Sexo CHAR(1) Cidade VARCHAR(100) Pais varchar(100) amostras Id_Amostras Int8 <pk> Id_Paciente INT8 <fk> FK_AP Data DATE Pais_Coleta VARCHAR(100) Origem_Amostra Varchar(100) sequencias Id_Sequencia Id_Amostra FK_S_A Regiao_Genoma Tamanho Fasta INT8 <pk> Int8 <fk> VARCHAR(100) INT2 TEXT • Ordem para remover as tabelas do banco de dados: 1) Drop Table Sequencias; 2) Drop Table Amostras; 3) Drop Table Pacientes; A restrição de integridade não permite a Remoção de dados usados por outras tabelas. Data warehouse Alguns Conceitos • • • • Características dos Sistemas Analíticos OLTP X OLAP Data Warehouse e Data Marts Bancos de Dados Dimensionais • Terminologia • Formas de Armazenamento • Data Mining • Tarefas Típicas • Algoritmos • Modelos OLTP X OLAP OLTP • • • • • • • • Mais freqüentes Detalhes Poucos dados Dados atuais Baixa complexidade Consistência microscópica CRM, ERP, Supply Chain Linhas e Colunas OLAP • • • • • • • • Menos freqüentes Agrupamento Muitos dados Dados históricos Alta complexidade Consistência global MIS Dimensões e Fatos Transformando dados em conhecimento Dados Informação Network Conhecimento Transformando dados em conhecimento Data Warehouse Dados Operacionais Produção ETL Relacional Data Marts BD Especial Cubes O modelo dimensional PRODUTO LOJA produto_key produto_desc tipo categoria loja_key loja_desc loja_endereço vendedor cidade estado região FATO_VENDA TEMPO tempo_key data mês mês_desc trimestre ano produto_key data_venda_key loja_key cliente_key valor margem custo quantidade • Chaves primárias • Hierarquias • Atributos descritivos CLIENTE cliente_key código_cliente nome Online Analytical Processing (OLAP) Exemplo Dimensões: Produto, Região, Tempo O Caminhos de Sumarização Hieráquica Produto S N Suco Cola Leite Creme Cadeira Sabonete 1 2 34 5 6 7 Mês Produto Região Tempo Indústria País Ano Categoria Região Trimestre Produto Cidade Mês Semana Escritório Dia Processo de KDD Cruzamento Armazenamento e recuperação de dados Data Mining • Data Warehouses / Data Marts – Oferecem fonte de dados e um conjunto de análise. • Data mining • Busca encontrar padrões novos/desconhecidos em um conjunto de dados • Não é um DW, o Data mining pode ser usado em um DW • Usa um conjunto de ferramentas estatístiva para encontrar e avaliar os padrões. Data mining – Tipos de Análises • Classificação • • • Busca relações entre os dados Previsão Análise de Desvio • • Agrupa casos semelhantes Associação • • • Previsão de Taxas de seguros, clima/temperatura Segmentação • • Análise de riscos (Potencial bom pagador) Regressão • • Atribui elementos a classes Identificação de fraudes Visualização • Representação visual dos padrões Ciclo da informação Armazenamento Coleta de dados Distribuição e o uso de dados Eficiência Gerencial (planejamento, controle, comunicação e tomada de decisão) Recuperação de dados APLICAÇÕES DE BANCO DE DADOS EM BIOINFORMÁTICA Pesquisas em HIV/AIDS • Como modelar um vírus? • Diferentes possibilidades de representação e relacionamento entre os dados Rambaut et al., Nature Reviews Genetics, 2004 Aplicações em Bioinformática • Portais com informações genéticas e ferramentas para análise de dados Aplicações em Bioinformática • Bancos de dados especializados • Microarray, plasmoDB • Especialização dos bancos – Protein Disease Database – SWISS-2DPIdade Aplicações em Bioinformática • Integração de dados de bancos de dados públicos • Importação de dados de diferentes fontes públicas • Esquemas de integração • Limitações • Escopo de dados abrangem somente seqüências genéticas e suas anotações • Qualidade dos dados disponíveis Dicas para o seu projeto Processo integrado • Quanto maior a capacidade das tecnologias da informação e da comunicação, maior a capacidade de interrelacionamentos e a capacidade de aprender e lucrar com o compartilhamento da informação e do conhecimento. • Tecnologia: comunicação e armazenamento dos dados, das informações e dos conhecimentos como na integração ANGELONI, Maria Terezinha.2003 dos tomadores de decisão. Ciclo de Vida de um projeto Orçamentos não resistem a erros • Tecnologia ágil • cliente e desenvolvedor juntos Ser realista • Definir prioridades Coleta de dados • Definição de quais dados devem ser coletados. • Avaliar se o dado é realmente importante • Qual o objetivo da coleta desse dado? • Em que tipo de análise o dado estará envolvido? • Qual a viabilidade de coletá-lo? • Com que qualidade/confiabilidade conseguiremos esse dado? Coleta de dados • Qual a representação natural do dado? • Alfanumérica, Númerica • Qual o tamanho do campo necessário para armazenar o dado? Ex.: 100 caracteres • Existe um padrão de medida/representação? • Ex.: ºC, Km/h, m, cm, mm Coleta de dados • Quais regras envolvem esse dado? • Faixa de valores. • Ex.: 0<x < 50 • Valores específicos. • Ex.: Dias da semana, Sexo, • Dependência de outras informações • Gravidez e licença maternidade só podem ser atribuídos em caso de Sexo feminino. • Regras de negócio • O exame deve ser coletado ate 24 horas após a internação. • Existem exceções ? • Qual a importância de avaliar tais regras? • Existe uma relação custo benefício favorável a validação das regras? Coleta de dados • Qual o melhor formato para armazenar o dado? • Sexo • (0 – feminino, 1 – masculino) • (f – feminino, m – masculino) • (feminino, masculino) • Número de medicamentos em uso • [0,10] • [0,100] • (nenhum, ate 2, entre 3 a 5, acima de 5) Coleta de dados • Idade ou data de nascimento? • Endereço • • • • Campo para digitação com 200 caracteres, Campo para digitação de rua, bairro, cidade, estado, pais Uso do CEP Campo para seleção de bairro, cidade, estado, pais Áreas para pesquisa Áreas de pesquisa • Criação de banco de dados para estudos específicos • Ontologias, modelagem de dados • Banco de dados flexíveis • Acompanham as modificações • Estruturas para representação e análise de dados • Data mining • Armazenamento/integração de dados secundários • Os resultados das análises integrados ao banco. Áreas de pesquisa • Integração de bases de dados existentes • Esquemas de integração de dados • Data warehouse • Banco de dados distribuídos • Consultas distribuídas • Transações distribuídas • Procedência de dados • Acompanhamento do dado e suas transformações • Rastrear a informação Migração de dados - procedência PD BD1 PA PC PB BD2 BD3 BD5 BD4 BD6 Ambiente integrado para descoberta de conhecimento em Biologia Computação de alto-desempenho Seleção de dados: OLAP e Relacional Métricas: Vetor de características Procedimento de projeto Processos de mining Transformação de dados Mundo Real Leitura de dados Ligação entre dados primários e objetos complexos Dados primários Base de dados relacional Conceito: Subconjunto de instâncias Base de dados de Objetos complexos Núcleo do mining Conclusão • Trate com cuidado do que é essencial • Os Dados • Softwares mudam e são trocados • Os dados permanecem • Desafios • • • • Representação Armazenamento Análise Evolução • Necessita de um profissional com: • Conhecimentos sólidos • E mais algumas habilidades… Entender o que é trabalhar em equipe Com Capacidade de Gestão Construção do Euro túnel Versátil Bibliografia Básica - ELMASRI, R. e NAVATHE, S.B. Sistemas de Banco de Dados, Fundamentos e Aplicações. Rio de Janeiro: Editora LTC, 2002. - Ramakrishnan R., Database Management Systems, WCB McGraw-Hill, 2002. FERREIRA, J. E. e FINGER, M. Controle de Concorrência e Distribuição de Dados: a teoria clássica, suas limitações e extensões modernas. São Paulo: Escola Brasileira de Computação, 2001. EfraimTurban, R. Rainer Jr, Richard Potter, Introdução a Sistemas de Informação – Uma abordagem gerencial. Campus – 2007 Fiddy, S., et al., An integrated system for genetic analysis. BMC Bioinformatics, 2006. 7: p. 210. Shah, S.P., et al., Atlas - a data warehouse for integrative bioinformatics. BMC Bioinformatics, 2005. 6: p. 34. Shafer, R.W., Rationale and uses of a public HIV drug-resistance database. J Infect Dis, 2006. 194 Suppl 1: p. S51-8. Lee, T.J., et al., BioWarehouse: a bioinformatics database warehouse toolkit. BMC Bioinformatics, 2006. 7: p. 170. Buneman, P., S. Khanna, and W.-c. Tan, Why and Where: A Characterization of Data Provenance. Proc. of the Intl. Conf. on Database Theory (ICDT), 2001: p. 316-330. - - BANCO DE DADOS EM BIOINFORMÁTICA Márcio K. Oikawa UFSCar [email protected]