informática para ciências e engenharias...
TRANSCRIPT
![Page 1: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/1.jpg)
Informática para Ciências e Engenharias
2013/14
Teórica 10
![Page 2: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/2.jpg)
2
Na aula de hoje...
Introdução aos sistemas de bases de dados:• Modelo relacional
• SQL (Structured Query Language)
• SQL e MATLAB
• Um exemplo prático
Alguns slides adaptados de N. Dell, J. Lewis, Computer Science Illuminated, 4th Ed
![Page 3: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/3.jpg)
3
Sistemas de gestão debases de dados
Sistema de Gestão de Bases de Dados (SGBD) • (Database management system, DBMS)
• Combinação de software e dados:• Base de dados
• Ficheiros estruturados, com os dados.
• Motor de base de dados
• Software para consulta e modificação dos dados.
• Esquema de base de dados:
• Especificação da organização lógica dos dados.
![Page 4: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/4.jpg)
4
Sistemas de gestão debases de dados
Ficheiros de suporte da base de dados
Utilizador/Programador
Esquema da base de dados
Motor da
base dedados
![Page 5: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/5.jpg)
5
Modelo relacional
Registo (objeto, entidade)• Conjunto de atributos (campos) relacionados
• Análogo às estruturas em Matlab.
Tabela• Conjunto de registos. Análogo ao vector de
estruturas em Matlab.
Base de dados relacional• Conjunto de tabelas relacionadas
![Page 6: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/6.jpg)
6
Tabela filmes da BD videos
Filme_id Titulo Tipo Classificacao
101 Sexto Sentido suspense drama maiores de 12
102 Regresso ao Futuro comedia aventura maiores de 6
103 Monstros e Cia. animacao maiores de 4
104 Alien ficcao-cientifica terror maiores de 16
105 X-Men ficcao-cientifica acao maiores de 12
106 Elizabeth drama historico maiores de 12
107 Dia da Independencia ficcao-cientifica acao maiores de 12
108 Platoon acao drama guerra maiores de 16
109 Idade do Gelo animacao maiores de 4
110 Impacto Profundo suspense policial Maiores de 16
![Page 7: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/7.jpg)
7
Tabela filmes da BD videos
Filme_id Titulo Tipo Classificacao
101 Sexto Sentido suspense drama maiores de 12
102 Regresso ao Futuro comedia aventura maiores de 6
103 Monstros e Cia. animacao maiores de 4
104 Alien ficcao-cientifica terror maiores de 16
105 X-Men ficcao-cientifica acao maiores de 12
106 Elizabeth drama historico maiores de 12
107 Dia da Independencia ficcao-cientifica acao maiores de 12
108 Platoon acao drama guerra maiores de 16
109 Idade do Gelo animacao maiores de 4
110 Impacto Profundo suspense policial Maiores de 16
Como identificar um registo?
![Page 8: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/8.jpg)
8
Chave primária de uma tabela
Chave primária (primary key)• Um campo ou combinação de campos que
identifica inequivocamente esse registo
A tabela filmes tem quatro campos• FiIme_id, Titulo, Tipo e Classificacao
• A chave primária é Filme_id.
![Page 9: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/9.jpg)
9
Tabela clientes da BD videos
Cliente_id Nome Morada Numero_cartao_credito
101 Artur Meireles Rua da Paz, 20 123412341234123401
102 Joana Fonseca Rua da Guerra, 1234 123412341234123402
103 Artur Lopes da Silva Av.Liberdade, 202 123412341234123403
104 Isabel Lopes da Silva Rua do La Vem Um, 1 123412341234123404
105 Passos Coelho Av. Massama, 20 - 3 123412341234123405
106 Vitor Gaspar Rua do 5 %, 8 123412341234123406
107 Cavaco Silva Boliqueime 123412341234123407
108 Antonio Jose Seguro Largo do Rato, 2 123412341234123408
Chave primária: Cliente_id
![Page 10: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/10.jpg)
10
Chaves externas
Aluguer_id Cliente_id Filme_id Data_aluguer Data_entrega
100 102 109 2013/11/11 2013/11/15
101 101 106 2013/11/12 2013/11/14
102 107 102 2013/11/14 2013/11/20
103 106 104 2013/11/11 2013/11/15
A tabela alugueres tem duas chaves externas:
• FiIme_id, que a liga à tabela filmes
• Cliente_id, que a à tabela clientes
![Page 11: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/11.jpg)
11
Structured Query Language (SQL)
![Page 12: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/12.jpg)
12
SQL
Linguagem para manipular dados e efectuar perguntas (queries) sobre os dados armazenados na base de dados.• Criar tabelas, onde se guarda os dados
• um registo por linha
• um campo por coluna
• Inserir, alterar e remover registos
• Interrogar
![Page 13: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/13.jpg)
13
SQL
CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE);
![Page 14: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/14.jpg)
14
SQL
CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE);
Nome da tabela
![Page 15: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/15.jpg)
15
SQL
CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE);
Campos e tipos respectivosSimbolo é do tipo texto (string)massa da tabela
![Page 16: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/16.jpg)
16
SQL
CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE);
Tipos de string:CHAR(N): string com exactamente N caracteres.VARCHAR(N): string com N caracteres no máximoTEXT: string mais longa
Sqlite3: é tudo tratado como TEXT
![Page 17: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/17.jpg)
17
SQL
CREATE TABLE Massas ( Simbolo TEXT, Massa DOUBLE);
Em SQL é indiferente escrever as palavras-chave em maiúsculas ou minúsculas. No entanto, é comum escrever-se em maiúsculas.Quanto aos nomes dos campos e tabelas depende do sistema. À cautela, é melhor escrever estes de forma consistente.
![Page 18: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/18.jpg)
18
SQL
Exemplos
CREATE TABLE Filmes ( Filme_id INTEGER, Titulo TEXT, Tipo TEXT, Classificacao TEXT, PRIMARY KEY(Filme_id) );
CREATE TABLE Clientes ( Cliente_id INTEGER, Nome TEXT, Morada TEXT, Numero_cartao_credito TEXT, PRIMARY KEY(Cliente_id) );
CREATE TABLE Alugueres ( Aluguer_id INTEGER,Cliente_id INTEGER, Filme_id INTEGER,Data_aluguer TEXT, Data_entrega TEXT,PRIMARY KEY(Aluger_id) );
![Page 19: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/19.jpg)
19
SQL
Exemplo, criar tabela
CREATE TABLE Filmes ( Filme_id INTEGER,Titulo TEXT,Tipo TEXT,Classificacao TEXT,PRIMARY KEY(Filme_id));
Especifica o campo (ou combinação de campos) que identificam inequivocamente cada registo. Tentar criar repetições neste dá erro.
![Page 20: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/20.jpg)
20
SQL
Exemplo, inserir registo
INSERT INTO Filmes VALUES (10,"Meaning of Life","comedia","maiores de 16");
Valores dos campos neste registo, pela mesma ordem da definição original dos campos no CREATE TABLE.
![Page 21: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/21.jpg)
21
SQL
Exemplo, modificar ou apagar registos
UPDATE Filmes SET Tipo = "drama" WHERE Titulo = "Elizabeth";
DELETE FROM Filmes WHERE Nome = "Avengers";
![Page 22: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/22.jpg)
22
SQL
Interrogação
SELECT lista-campos from lista-tabelas WHERE condição ORDER BY campo;
SELECT * FROM Filmes;SELECT Titulo FROM Filmes WHERE Tipo = "comedia";SELECT Titulo,Tipo FROM Filmes ORDER BY Titulo;
![Page 23: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/23.jpg)
23
SQLite
![Page 24: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/24.jpg)
24
SQLite
Motor de bases de dados Gratuito, código aberto
• http://www.sqlite.org/
Podemos usá-lo interactivamente como interpretador de linha de comando.
Interpreta SQL e gere a base de dados Para executar
• sqlite3 baseDados
![Page 25: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/25.jpg)
25
SQLite
Para executar• sqlite3 baseDados
• baseDados é o nome do ficheiro onde ficam guardadas as tabelas.
• Se já existe, abre esse e dá acesso ás tabelas lá guardadas; caso contrário cria um novo.
• Se for só para experimentar pode ser algo como temp.db.
![Page 26: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/26.jpg)
26
SQLite
Além de SQL, dispõe de mais comandos particulares do SQLite• .help
• lista comandos disponíveis (além do SQL)
• .read nomeFicheiro• executa script SQL
• .schema• lista esquemas das tabelas
• .quit• sair do interpretador
![Page 27: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/27.jpg)
27
SQLite
• .tables• lista as tabelas
• .separator sep• especifica o separador dos campos
• .import nomeFicheiro tabela• importa o ficheiro para a tabela assumindo os campos
separados pelo separador definido
Sqlite
![Page 28: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/28.jpg)
28
MATLAB + SQL
![Page 29: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/29.jpg)
29
MATLAB + SQL
Para combinar SQL com MATLAB, usamos uma função que corre o SQLite para executar o comando SQL que queremos.
![Page 30: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/30.jpg)
30
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 Massas (Simbolo TEXT, Massa REAL);"
sqlite3 teste.db "INSERT INTO Massas VALUES ('H', 1);"
sqlite3 teste.db "SELECT * FROM Massas;"H|1.0
Consola
![Page 31: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/31.jpg)
31
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.
![Page 32: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/32.jpg)
32
SQLite na linha de comando
Executar comandos SQL a partir de um programa MATLAB
Nota: esta função tem elementos que não fazem parte da matéria de ICE.
function result=sqlite(sql,db)
![Page 33: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/33.jpg)
33
MATLAB + SQL
![Page 34: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/34.jpg)
34
MATLAB + SQL
Nome da base de dados se não for indicado nenhum em argumento.
![Page 35: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/35.jpg)
35
MATLAB + SQL
Troca aspas por plicas(é preciso duas dentro de uma string)
![Page 36: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/36.jpg)
36
MATLAB + SQL
Executa o sqlite3 com o comando SQL usando a função system.
![Page 37: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/37.jpg)
37
MATLAB + SQL
No Octave / MATLAB
> sqlite('CREATE TABLE Massas (Simbolo TEXT, Massa REAL);','teste.db')ans => sqlite('INSERT INTO Massas VALUES ("H", 1);','teste.db')ans => sqlite('SELECT * FROM Massas;','teste.db')ans = H|1.0
![Page 38: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/38.jpg)
38
Exemplo:
projectos de recuperação
de praias
![Page 39: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/39.jpg)
39
Exemplo: MATLAB + SQL
praias.txt• Concelho, Nome, Custo, Prioridade
Marinha Grande;Esporao da Praia da Vieira;720000.00;MediaLourinha;Arribas junto ao forte do Paimogo;591000.00;MediaLourinha;Arribas em Porto das Barcas;691000.00;MediaLourinha;Arribas em Porto Dinheiro;606500.00;MediaSintra;Arribas da praia Grande do Rodizio;39951.63;MediaSintra;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
![Page 40: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/40.jpg)
40
Exemplo: MATLAB + SQL
Objectivo• Usar um sistema de gestão de bases de
dados (SGBD) para gerir a informação
Ficheiros de suporte da base de dados
Utilizador/Programador
Esquema da base de dados
Motor da
base dedados
![Page 41: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/41.jpg)
41
Exemplo: MATLAB + SQL
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.
![Page 42: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/42.jpg)
42
Exemplo: MATLAB + SQL
Criar tabela
function criatabela(nomeBD)
![Page 43: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/43.jpg)
43
Exemplo: MATLAB + SQL
![Page 44: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/44.jpg)
44
Exemplo: MATLAB + SQL
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
![Page 45: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/45.jpg)
45
Exemplo: MATLAB + SQL
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.
![Page 46: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/46.jpg)
46
Exemplo: MATLAB + SQL
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
![Page 47: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/47.jpg)
47
Exemplo: MATLAB + SQL
Carregar os dados
function carregapraias(nomeFich, nomeBD)
![Page 48: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/48.jpg)
48
Exemplo: MATLAB + SQL
![Page 49: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/49.jpg)
49
Exemplo: MATLAB + SQL
Lê cada linha do ficheiro de entrada.
![Page 50: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/50.jpg)
50
Exemplo: MATLAB + SQL
Cria o comando SQL de inserção tabela. A função sprintf funciona como fprintf mas devolve uma string.
![Page 51: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/51.jpg)
51
Exemplo: MATLAB + SQL
Executa o comando SQL na BD especificada.
![Page 52: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/52.jpg)
52
Exemplo: MATLAB + SQL
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|MediaLourinha|Arribas junto ao forte do Paimogo|591000.0|MediaLourinha|Arribas em Porto das Barcas|691000.0|MediaLourinha|Arribas em Porto Dinheiro|606500.0|MediaSintra|Arribas da praia Grande do Rodizio|39951.63|MediaSintra|Arribas da praia das Azenhas do Mar|326560.08|MediaSintra|Arribas da praia Pequena|428015.58|Media...
![Page 53: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/53.jpg)
53
Exemplo: MATLAB + SQL
LIKE octave:29> sqlite('SELECT Nome FROM Projectos
WHERE Nome LIKE "Arriba%";','teste.db')
ans = Arribas junto ao forte do PaimogoArribas em Porto das BarcasArribas em Porto DinheiroArribas da praia Grande do RodizioArribas da praia das Azenhas do MarArribas da praia PequenaArriba da Praia Fonte do CorticoArribas da praia de Galapos
![Page 54: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/54.jpg)
54
Exemplo: MATLAB + SQL
LIKE octave:32> sqlite('SELECT Nome FROM Projectos
WHERE Nome LIKE "%praia%";','teste.db')
ans = Esporao da Praia da VieiraArribas da praia Grande do RodizioArribas da praia das Azenhas do MarArribas da praia PequenaArriba da Praia Fonte do CorticoRelocalizacao de acessos das praias de Morgavel, Franquia e FarolArribas da praia de GalaposAlimentacao artificial da praia da MaretaSaneamento da arriba na praia do Vau
![Page 55: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/55.jpg)
55
Exemplo: MATLAB + SQL
DISTINCToctave:33> sqlite('SELECT Concelho FROM Projectos;','teste.db')
ans = Marinha GrandeLourinhaLourinhaLourinhaSintraSintraSintraSantiago do CacemSinesSetubalVila do BispoPortimao
![Page 56: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/56.jpg)
56
Exemplo: MATLAB + SQL
DISTINCT> sqlite('SELECT DISTINCT Concelho FROM Projectos;','teste.db')
ans = Marinha GrandeLourinhaSintraSantiago do CacemSinesSetubalVila do BispoPortimao
![Page 57: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/57.jpg)
57
Exemplo: MATLAB + SQL
DISTINCT> sqlite('SELECT DISTINCT Prioridade FROM Projectos;','teste.db')
ans = MediaBaixaElevada
![Page 58: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/58.jpg)
58
Exemplo: MATLAB + SQL
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|MediaLourinha|Arribas junto ao forte do Paimogo|591000.0|MediaLourinha|Arribas em Porto das Barcas|691000.0|MediaLourinha|Arribas em Porto Dinheiro|606500.0|MediaSintra|Arribas da praia Grande do Rodizio|39951.63|MediaSintra|Arribas da praia das Azenhas do Mar|326560.08|MediaSintra|Arribas da praia Pequena|428015.58|Media...
![Page 59: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/59.jpg)
59
Exemplo: MATLAB + SQL
Converter a string do resultado num vector de estruturas
Nota: esta função tem elementos que não fazem parte da matéria de ICE.
function recs=parseRecords(sqlResult,nameString)
![Page 60: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/60.jpg)
60
Lista os nomes dos campos das estruturas, ou nada se nenhuma string for fornecida no segundo argumento.
![Page 61: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/61.jpg)
61
Parte a string pelas linhas, percorre as linhas partindo pelo separador ('|').
![Page 62: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/62.jpg)
62
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.
![Page 63: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/63.jpg)
63
Exemplo: MATLAB + SQL
Obter nome e custo de projectos com uma prioridade especificada.
function projs=selprioridade(tabela, baseDados, prioridade)
![Page 64: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/64.jpg)
64
Exemplo: MATLAB + SQL
A função sprintf funciona como fprintf mas em vez de escrever num ficheiro ou consola devolve a string formatada
![Page 65: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/65.jpg)
65
Exemplo: MATLAB + SQL
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.
![Page 66: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/66.jpg)
66
Exemplo: MATLAB + SQL
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
![Page 67: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/67.jpg)
67
Exemplo: MATLAB + SQL
Função principal:
function [elevada,media,baixa]=processaprojs(fich, baseDados)
![Page 68: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/68.jpg)
68
Exemplo: MATLAB + SQL
![Page 69: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/69.jpg)
69
Exemplo: MATLAB + SQL
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
![Page 70: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/70.jpg)
70
Exemplo: MATLAB + SQL
Testar:octave:26> elev.nomeans = Alimentacao artificial da praia da Maretaans = Saneamento da arriba na praia do Vauoctave:27> med.nomeans = Esporao da Praia da Vieiraans = Arribas junto ao forte do Paimogoans = Arribas em Porto das Barcasans = Arribas em Porto Dinheiroans = Arribas da praia Grande do Rodizioans = Arribas da praia das Azenhas do Marans = Arribas da praia Pequenaans = Arriba da Praia Fonte do Corticoans = Relocalizacao de acessos das praias de Morgavel, Franquia e Farol
SQL+Matlab
![Page 71: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/71.jpg)
71
Para consultar
SQL• Muito fácil encontrar tutoriais na Web, mas
normalmente têm muito mais do que damos aqui.• Exemplo de uma cábula que pode ser útil:
http://www.zentut.com/sql-tutorial/sql-cheat-sheet/
![Page 72: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T10.pdf · 2 Na aula de hoje... Introdução aos sistemas de bases de dados: •Modelo](https://reader031.vdocuments.net/reader031/viewer/2022031309/5bff7bae09d3f2720f8b51aa/html5/thumbnails/72.jpg)
72
Dúvidas