Informática para Ciências e Engenharias 2012/13. Teórica 10



Documentos relacionados
Informática para Ciências e Engenharias 2013/14. Teórica 10

ICE-B Sqlite e Python. Ludwig Krippahl

Informática para Ciências e Engenharias (B) 2015/16. Teórica 10

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Informática para as Ciências e Engenharias - 2º semestre 2017/2018

Bases de Dados. Lab 1: Introdução ao ambiente

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

Informática para Ciências e Engenharias - 2º semestre 2016/2017

Informática para Ciências e Engenharias (B) 2016/17. Teórica 9

Microsoft Access Para conhecermos o Access, vamos construir uma BD e apresentar os conceitos necessários a cada momento

Informática para Ciências e Engenharias - 2º semestre 2016/2017

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Programação SQL. Introdução

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Exane de ICE-B, 26 de Junho de 2018 (Versão A)

Banco de Dados. Arquitetura e Terminologia. Prof. Walteno Martins Parreira Jr waltenomartins@yahoo.

Administração e Optimização de BDs

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Curso PHP Aula 08. Bruno Falcão

Bases de Dados 1º semestre

Disciplina: Unidade III: Prof.: Período:

Profº Aldo Rocha. Banco de Dados

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

15 - Introdução às Bases de Dados

Bases de Dados 2005/2006. Aula 5

Esquema da Relação. Modelo Relacional. Instância da Relação. Exemplo. Uma base de dados é uma colecção de uma ou mais relações com nomes distintos

Informática para Ciências e Engenharias - 2º semestre 2017/2018

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Android e Bancos de Dados

Informática para as Ciências e Engenharias - 2º semestre 2015/2016

Introdução à Manipulação de Dados

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Principais Comandos SQL Usados no MySql

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

SQL. Autor: Renata Viegas

Informática para Ciências e Engenharias - 2º semestre 2017/2018

Tarefa Orientada 13 Agrupamento e sumário de dados

Informática para as Ciências e Engenharias - 2º semestre 2015/2016

Comandos de Manipulação

Tarefa Orientada 15 Manipulação de dados

Disciplina de Banco de Dados Parte V

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Prof.: Clayton Maciel Costa

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Bases de Dados 2007/2008. Aula 1. Referências

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

Tarefa Orientada 1 Base de Dados Editora

A linguagem SQL

SQL DML. Frederico D. Bortoloti

Linguagem SQL. Comandos Básicos

Informática para as Ciências e Engenharias - 2º semestre 2016/2017

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

Bases de Dados 2007/2008. Aula 9

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Bases de Dados 1º semestre

Limpeza e transformação de dados

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

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

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

SQL: Definição de tabelas, Modificações à Base de Dados

O que são Bancos de Dados?

Disciplina: Unidade V: Prof.: Período:

SQL Structured Query Language

2 o Teste de ICE-B, 6 de Junho de 2018 (Versão B)

PHP INTEGRAÇÃO COM MYSQL PARTE 2

Material de Banco de Dados

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Banco de Dados I. SQL SELECT Parte 1 - Básico. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

SQL - Criação de Tabelas

BANCO DE DADOS. Ferramenta ERWin Parte 1. Introdução. Engenharia da Computação UNIVASF. Aula 9. Formas de trabalho. Formas de trabalho

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

PROGRAMA. Objectivos Gerais :

Orientação a Objetos

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 8. Pedro Barahona 2016 / 17

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

Informática para Ciências e Engenharias 2014/15. Teórica 5

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

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 Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão. GesStock. Engenharia Informática. Base de Dados II

No final desta sessão o formando deverá ser capaz de aceder ao Word e iniciar um novo documento.

UNIVERSIDADE FEDERAL FLUMINENSE PÓLO UNIVERSITÁRIO DE RIO DAS OSTRAS FACULDADE FEDERAL DE RIO DAS OSTRAS CURSO DE CIÊNCIA DA COMPUTAÇÃO

Bases de Dados 2007/2008 Exame

Impressão e acabamento: Inova 1ª edição: Novembro de 2004

2 o Teste de ICE-B, 8 de Junho de 2019 (Versão B)

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Transcrição:

Informática para Ciências e Engenharias 2012/13 Teórica 10

Na aula de hoje... Introdução aos sistemas de bases de dados (parte 2): Combinar MATLAB e SQL Um exemplo prático 2

MATLAB + SQL 3

MATLAB + SQL Para combinar SQL com MATLAB, usamos uma função que corre o SQLite para executar o comando SQL que queremos. 4

SQLite na linha de comando O SQLite pode ser executado com parâmetros na linha de comando. nome do ficheiro com a base de dados. e podemos incluir também um comando SQL Na consola (cmd em Windows) sqlite3 teste.db "CREATE TABLE Massa (Simbolo TEXT, Massa REAL);" sqlite3 teste.db "INSERT INTO Massa VALUES ('H', 1);" sqlite3 teste.db "SELECT * FROM Massa;" H 1.0 5

SQLite na linha de comando O SQLite pode ser executado com parâmetros na linha de comando. um, já conhecemos, é o nome do ficheiro com a base de dados. podemos incluir também um comando SQL o que não serve de muito por si, mas pode ser útil para executar comandos SQL a partir de um programa em MATLAB. 6

SQLite na linha de comando Executar comandos SQL a partir de um programa MATLAB function result=sqlite(sql,db) Nota: esta função tem elementos que não fazem parte da matéria de ICE. 7

MATLAB + SQL 8

MATLAB + SQL Nome da base de dados se não for indicado nenhum em argumento. 9

MATLAB + SQL Troca aspas por plicas (é preciso duas dentro de uma string) 10

MATLAB + SQL Executa o sqlite3 com o comando SQL usando a função system. 11

MATLAB + SQL No Octave / MATLAB > sqlite('create TABLE Massa (Simbolo TEXT, Massa REAL);','teste.db') ans = > sqlite('insert INTO Massa VALUES ("H", 1);','teste.db') ans = > sqlite('select * FROM Massa;','teste.db') ans = H 1.0 12

Exemplo: projectos de recuperação de praias 13

praias.txt Concelho, Nome, Custo, Prioridade Marinha Grande;Esporao da Praia da Vieira;720000.00;Media Lourinha;Arribas junto ao forte do Paimogo;591000.00;Media Lourinha;Arribas em Porto das Barcas;691000.00;Media Lourinha;Arribas em Porto Dinheiro;606500.00;Media Sintra;Arribas da praia Grande do Rodizio;39951.63;Media Sintra;Arribas da praia das Azenhas do Mar;326560.08;Media... Setubal;Arribas da praia de Galapos;100000.00;Baixa... Portimao;Saneamento da arriba na praia do Vau;30000.00;Elevada 14

Objectivo Usar um sistema de gestão de bases de dados (SGBD) para gerir a informação Esquema da base de dados Utilizador/ Programador Motor da base de dados Ficheiros de suporte da base de dados 15

Modelo relacional Registo (objecto, entidade) Conjunto de campos (atributos) relacionados análogo da estrutura no Matlab Tabela Um conjunto de registos. Análogo ao vector de estruturas no Matlab Um registo por linha, um atributo por coluna Base de dados Relacional Um conjunto de tabelas relacionadas. As chaves permitem relacionar tabelas. 16

Modelo relacional Registo (objecto, entidade) Conjunto de campos (atributos) relacionados análogo da estrutura no Matlab Tabela Um conjunto de registos. Análogo ao vector de estruturas no Matlab Um registo por linha, um atributo por coluna Base de dados Relacional Um conjunto de tabelas relacionadas. As chaves permitem relacionar tabelas. Em ICE vamos só abordar esta parte. 17

Objectivo Criar tabela Inserir dados dos projectos de recuperação Questionar a BD usando SQL Exemplo: obter os projectos de prioridade alta, média e baixa. 18

Criar tabela function criatabela(nomebd) 19

20

Porquê PRIMARY KEY? Numa base de dados relacional, as chaves permitem relacionar tabelas diferentes. (Não vamos usar BDs com várias tabelas). Mas mesmo só com uma tabela é útil poder identificar inequivocamente cada registo por exemplo, para evitar a inserção de duplicados neste caso assumimos que dois projectos com o mesmo nome seria um erro 21

Porquê PRIMARY KEY? O SQLite cria sempre um atributo chamado Rowid que identifica inequivocamente cada registo, mesmo que não se crie uma chave primária. No entanto, esse não serve para evitar registos repetidos porque incrementa automaticamente. 22

Testes podemos começar por criar uma tabela numa BD de teste, para podermos testar a função que carrega os dados. octave:23> criatabela('teste.db'); octave:24> sqlite('.tables','teste.db') ans = Projectos 23

Carregar os dados function carregapraias(nomefich, nomebd) 24

25

Lê cada linha do ficheiro de entrada. 26

Cria o comando SQL de inserção tabela. A função sprintf funciona como fprintf mas devolve uma string. 27

Executa o comando SQL na BD especificada. 28

Testar: (podemos fazer tudo no MATLAB/Octave) octave:12> carregapraias('praias.txt', 'teste.db') octave:13> sqlite('select * from Projectos;','teste.db') ans = Marinha Grande Esporao da Praia da Vieira 720000.0 Media Lourinha Arribas junto ao forte do Paimogo 591000.0 Media Lourinha Arribas em Porto das Barcas 691000.0 Media Lourinha Arribas em Porto Dinheiro 606500.0 Media Sintra Arribas da praia Grande do Rodizio 39951.63 Media Sintra Arribas da praia das Azenhas do Mar 326560.08 Media Sintra Arribas da praia Pequena 428015.58 Media... 29

LIKE octave:29> sqlite('select Nome FROM Projectos WHERE Nome LIKE "Arriba%";','teste.db') ans = Arribas junto ao forte do Paimogo Arribas em Porto das Barcas Arribas em Porto Dinheiro Arribas da praia Grande do Rodizio Arribas da praia das Azenhas do Mar Arribas da praia Pequena Arriba da Praia Fonte do Cortico Arribas da praia de Galapos 30

LIKE octave:32> sqlite('select Nome FROM Projectos WHERE Nome LIKE "%praia%";','teste.db') ans = Esporao da Praia da Vieira Arribas da praia Grande do Rodizio Arribas da praia das Azenhas do Mar Arribas da praia Pequena Arriba da Praia Fonte do Cortico Relocalizacao de acessos das praias de Morgavel, Franquia e Farol Arribas da praia de Galapos Alimentacao artificial da praia da Mareta Saneamento da arriba na praia do Vau 31

DISTINCT octave:33> sqlite('select Concelho FROM Projectos;','teste.db') ans = Marinha Grande Lourinha Lourinha Lourinha Sintra Sintra Sintra Santiago do Cacem Sines Setubal Vila do Bispo Portimao 32

DISTINCT > sqlite('select DISTINCT Concelho FROM Projectos;','teste.db') ans = Marinha Grande Lourinha Sintra Santiago do Cacem Sines Setubal Vila do Bispo Portimao 33

DISTINCT > sqlite('select DISTINCT Prioridade FROM Projectos;','teste.db') ans = Media Baixa Elevada 34

Problema: o resultado do sqlite é uma string mas convém estruturar melhor a informação ans = Marinha Grande Esporao da Praia da Vieira 720000.0 Media Lourinha Arribas junto ao forte do Paimogo 591000.0 Media Lourinha Arribas em Porto das Barcas 691000.0 Media Lourinha Arribas em Porto Dinheiro 606500.0 Media Sintra Arribas da praia Grande do Rodizio 39951.63 Media Sintra Arribas da praia das Azenhas do Mar 326560.08 Media Sintra Arribas da praia Pequena 428015.58 Media... 35

Converter a string do resultado num vector de estruturas function recs=parserecords(sqlresult,namestring) Nota: esta função tem elementos que não fazem parte da matéria de ICE. 36

37

Lista os nomes dos campos das estruturas, ou nada se nenhuma string for fornecida no segundo argumento. 38

Parte a string pelas linhas, percorre as linhas partindo pelo separador (' '). 39

Para cada atributo (coluna da tabela) gerar ou obter o nome do campo da estrutura, converter em número se possível e guardar no vector de estruturas. 40

Obter nome e custo de projectos com uma prioridade especificada. function projs=selprioridade(tabela, basedados, prioridade) 41

A função sprintf funciona como fprintf mas em vez de escrever num ficheiro ou consola devolve a string formatada 42

Obtido o resultado da função sqlite (numa só string), convertemos num vector de estruturas com parserecords, indicando os nomes dos campos: nome e custo. 43

Testar: octave:19> elevada=selprioridade('projectos', 'teste.db', 'Elevada'); octave:20> elevada(1) nome = Alimentacao artificial da praia da Mareta custo = 2500000 octave:21> elevada(2) nome = Saneamento da arriba na praia do Vau custo = 30000 octave:22> baixa=selprioridade('projectos', 'teste.db', 'Baixa') baixa = nome = Arribas da praia de Galapos custo = 100000 44

Função principal: function [elevada,media,baixa]=processaprojs(fich, basedados) 45

46

Testar: octave:25> [elev,med,baix]=processaprojs('praias.txt','praias.db') elev = 1x2 struct array containing the fields: nome custo med = 1x9 struct array containing the fields: nome custo baix = scalar structure containing the fields: nome = Arribas da praia de Galapos custo = 100000 47

Testar: octave:26> elev.nome ans = Alimentacao artificial da praia da Mareta ans = Saneamento da arriba na praia do Vau octave:27> med.nome ans = Esporao da Praia da Vieira ans = Arribas junto ao forte do Paimogo ans = Arribas em Porto das Barcas ans = Arribas em Porto Dinheiro ans = Arribas da praia Grande do Rodizio ans = Arribas da praia das Azenhas do Mar ans = Arribas da praia Pequena ans = Arriba da Praia Fonte do Cortico ans = Relocalizacao de acessos das praias de Morgavel, Franquia e Farol 48

Bónus: gráfico de barras 49

Gráfico dos custos A partir do vector de estruturas com um conjunto de projectos (nome e custo) desenhar um gráfico de barras dos custos. 50

Gráfico dos custos função bar, com vector bar([1,2,3,4,3,2,1]) 51

Gráfico dos custos função bar, com matriz Bar([1,3,2;2,4,5;1,1,4]) 1 3 2 2 4 5 1 1 4 52

Gráfico dos custos A partir do vector de estruturas com um conjunto de projectos (nome e custo) desenhar um gráfico de barras dos custos. function grafico(projectos) 53

Gráfico dos custos 54

Gráfico dos custos Testar octave:29> grafico(med) 55

Trabalho prático 2 56

Trabalho prático 2 Semelhante ao exemplo desta aula criar tabela numa base de dados com SQLite processar ficheiros e carregar tabela obter registos da tabela fazer gráfico Entrega dia 26 de Maio versão preliminar no dia 19 de Maio discussões na última semana de aulas 57

Dúvidas 58