Alberto Simões - Dept Informática - Univ. Minho 1 Bases de Dados (usando Microsoft Access) Alberto...
-
Upload
domingos-figueiredo-arantes -
Category
Documents
-
view
216 -
download
0
Transcript of Alberto Simões - Dept Informática - Univ. Minho 1 Bases de Dados (usando Microsoft Access) Alberto...
Alberto Simões - Dept Informática - Univ. Minho1
Bases de Dados(usando Microsoft Access)
Alberto Manuel Simões([email protected])
Alberto Simões - Dept Informática - Univ. Minho2
Motivação
Qualquer colecção deve estar catalogada; Qualquer catálogo deve permitir pesquisas; Um catálogo não é mais que uma colecção
de registos; Podemos ver uma base de dados como
sendo um catálogo informatizado e com métodos optimizados de pesquisa e armazenamento.
Alberto Simões - Dept Informática - Univ. Minho3
Noção de Base de Dados
Qualquer conjunto de registos pode ser visto como uma base de dados;
Um conjunto de registos com a mesma estrutura é denominado por tabela:
Turma Número Nome Rua Localidade
A 1 António Martins Sousa Pires Barcelos
A 2 Maria Irene Joana d'Arc Barcelos
B 1 João Francisco Pires Viegas Pousa
C 2 Manuel Saraiva Almirante Coutinho Barcelos
Alberto Simões - Dept Informática - Univ. Minho4
Noção de Base de Dados (2)
A uma linha da tabela chama-se registo;
A cada elemento do registo chama-se campo ou atributo;
Chama-se chave a um campo (ou conjunto de campos) que nunca se repete em toda a tabela;
Da tabela anterior, que chave poderíamos escolher?
Alberto Simões - Dept Informática - Univ. Minho5
Tipos de dados
Cada campo de uma tabela tem um tipo de dados definido:– Número;– Texto;– Booleano;– Data;– Moeda
Que tipos de dados associar a cada um do campos da tabela anterior?
Alberto Simões - Dept Informática - Univ. Minho6
Divisão de Tabelas
Vamos construir uma base de dados para livros:– Título;– ISBN;– Ano da edição;– Editora;– Colecção;– Autores
Quantos autores é que um livro tem?Teoricamente, não existe limite para o número de autores.
Alberto Simões - Dept Informática - Univ. Minho7
Divisão de Tabelas (2)
Soluções:– criar um campo texto, onde se introduziria todos
os nomes dos autores;– criar um número de campos elevado para
armazenar os autores: Ao definir um número de autores elevado para cada livro,
a tabela iria ficar com muitos campos em branco; Qual o número de campos a definir? Ou se define um
número excessivamente exagerado, ou pode sempre ocorrer que venha a aparecer um livro com mais autores que campos disponíveis.
Alberto Simões - Dept Informática - Univ. Minho8
Divisão de Tabelas (3)
A solução para este tipo de casos consiste em dividir a informação em duas tabelas:– informação de cada livro;– autor por livro;
Titulo ISBN Ano Edição Editora Colecção
Crimes Perfeitos 01-234567 1973 Suspense ABC do Crime
Manual do Access 03-123456 2001 Porto Editora Informática
ISBN Nome Autor
01-234567 John Gardner
03-123456 Ana Sofia
03-123456 Pedro Raposo
Alberto Simões - Dept Informática - Univ. Minho9
Chaves Estrangeiras
O campo ISBN estabelece a ligação entre as tabelas Livros e Autores. Este campo, na tabela Autores, diz-se que é uma chave estrangeira.
Note-se que não existe obrigatoriedade de utilizar o mesmo nome para ambos os campos ao definir uma ligação entre tabelas.
Na tabela de autores, que chave poderíamos escolher?
Alberto Simões - Dept Informática - Univ. Minho10
Divisão de Tabelas (4)
Considerando que se pretende armazenar informação sobre os autores:
código Livro Nome Autor Ano Nascimento Nacionalidade
01-234567 John Gardner 1944 EUA
03-123456 Ana Sofia 1970 Portugal
03-123456 Pedro Raposo 1971 Portugal
Mas, John Gardner escreveu uma vasta lista de obras.Vamos repetir toda esta informação para cada um dos livros?
Alberto Simões - Dept Informática - Univ. Minho11
Dependências Funcionais
A solução convencional para este problema consiste em identificar as dependências entre campos:– o campo Nacionalidade depende do campo
Nome Autor– o campo Ano Nascimento depende do campo
Nome Autor Ou seja, se soubermos o valor do campo
Nome Autor podemos saber o valor dos campos Ano Nascimento e Nacionalidade.
Alberto Simões - Dept Informática - Univ. Minho12
Divisão de Tabelas (5)
Sempre que se verificar a existência de campos numa tabela que não dependam da chave primária, a tabela deve ser dividida;
ISBN Nome Autor
01-234567 John Gardner
03-123456 Ana Sofia
03-123456 Pedro Raposo
Nome Autor Ano Nascimento Nacionalidade
John Gardner 1944 EUA
Ana Sofia 1970 Portugal
Pedro Raposo 1971 Portugal
Alberto Simões - Dept Informática - Univ. Minho13
Resultado Normalizado
ISBN Nome Autor
01-234567 John Gardner
03-123456 Ana Sofia
03-123456 Pedro Raposo
Nome Autor Ano Nascimento Nacionalidade
John Gardner 1944 EUA
Ana Sofia 1970 Portugal
Pedro Raposo 1971 Portugal
Titulo ISBN Ano Edição Editora Colecção
Crimes Perfeitos 01-234567 1973 Suspense ABC do Crime
Manual do Access 03-123456 2001 Porto Editora Informática
Em que ano nasceram os autores do Manuel de Access?
Alberto Simões - Dept Informática - Univ. Minho14
Exercício 1
Criar as tabelas necessárias para acomodar os dados de uma factura;
E todos os dados da empresa?
Factura N.: 1425433
Data: 04-05-2002
Cliente: António Carlos Silva e Sá
Produto Descrição Qt. Preço Unit. Total
XX743K Pregos 100 € 1,00 € 100,00
YZ3MN Porcas 150 € 1,00 € 150,00
XP992O Parafusos 170 € 2,00 € 340,00
YZ3MN Porcas 140 € 1,00 € 140,00
Total € 730,00
Alberto Simões - Dept Informática - Univ. Minho15
Resolução 1.1
Cada factura contém:– Um número da factura;– Uma data em que foi emitida;– Um cliente que efectuou a compra;– Várias linhas de produtos
Código do produto, descrição, quantidade, preço unitário e valor total;
– Um valor total das compras
Alberto Simões - Dept Informática - Univ. Minho16
Resolução 1.2
Uma vez que não podemos saber quantos produtos vão ser comprados, consideremos apenas os dados que aparecem uma só vez.
Nº Factura Data Cliente Total1425433 04-05-2002 António Carlos Silva e Sá € 730.001425434 04-05-2002 Ana Maria Teixeira Cunha € 900.001425435 04-05-2002 José Miguel Lopes Araújo € 400.00
Alberto Simões - Dept Informática - Univ. Minho17
Resolução 1.3
Criemos uma nova tabela para os produtos:
Mas, quem é que efectuou estas compras?
Produto Designação Qt Preço Unitário TotalXX743K Pregos 100 € 1.00 € 100.00YZ3MN Porcas 150 € 1.00 € 150.00XP992O Parafusos 170 € 2.00 € 340.00YZ3MN Porcas 140 € 1.00 € 140.00
Alberto Simões - Dept Informática - Univ. Minho18
Resolução 1.4
Para relacionar as compras com o cliente, temos de adicionar uma chave estrangeira a esta tabela:
Factura Produto Designação Qt Preço Un. Total1425433 XX743K Pregos 100 € 1.00 € 100.001425433 YZ3MN Porcas 150 € 1.00 € 150.001425433 XP992O Parafusos 170 € 2.00 € 340.001425433 YZ3MN Porcas 140 € 1.00 € 140.00
Alberto Simões - Dept Informática - Univ. Minho19
Resolução 1.5
O preço de cada produto, e respectiva descrição são dependências funcionais do código do produto;
Devemos dividir a tabela em:– Detalhe de cada linha da factura;– Informação sobre cada produto;
Alberto Simões - Dept Informática - Univ. Minho20
Resolução 1.6
Factura Produto Qt Total1425433 XX743K 100 € 100.001425433 YZ3MN 150 € 150.001425433 XP992O 170 € 340.001425433 YZ3MN 140 € 140.00
Produto Designação Preço Un.XX743K Pregos € 1.00YZ3MN Porcas € 1.00XP992O Parafusos € 2.00
Alberto Simões - Dept Informática - Univ. Minho21
Resolução 1.7
Para melhorar o sistema de facturação poderíamos ainda:– Atribuir um código a cada cliente;– Criar uma tabela de clientes, com a sua
informação, como a morada, telefone, número de contribuinte;
– Cada factura relacionava-se com o cliente apenas pelo seu código
Alberto Simões - Dept Informática - Univ. Minho22
Exercício 2
Usando o exemplo da factura, vamos criar as seguintes tabelas em Access:
FacturasNúmero number
Data date/timeCliente text (200)
Total currency
ProdutosCódigo text (10)
Designação text (200)Preço Unitário currency
Factura/ProdutoFactura numberProduto text (10)
Quantidade numberTotal currency
Alberto Simões - Dept Informática - Univ. Minho23
Relacionamentos
Os relacionamentos entre tabelas podem ser de tipos diferentes:– 1 – n– 1 – 1– m – n
Estes valores correspondem ao número de elementos de uma tabela a que podem corresponder a elementos de outra tabela;
Alberto Simões - Dept Informática - Univ. Minho24
Relacionamentos (1-n)
Uma turma tem n alunos– Neste caso, a tabela de relacionamento associa a
cada aluno apenas uma turma;– Ou seja, um aluno não pode pertencer a duas
turmas;– Neste caso, o relacionamento é feito na tabela
alunos, em que se adiciona a chave estrangeira relativa à turma (chave da tabela de turmas).
Alberto Simões - Dept Informática - Univ. Minho25
Relacionamentos (1-1) Supondo que temos uma tabela de
professores e uma outra de departamentos; Um professor director de um departamento,
não o pode ser de um outro; Cada departamento tem apenas um director. Nestes casos, pouco frequentes, o
relacionamento pode ser feito em qualquer uma das tabelas;
Neste caso em particular, seria mais sensato colocar na tabela de departamentos.
Alberto Simões - Dept Informática - Univ. Minho26
Relacionamentos (m-n)
São os mais frequentes; Um produto pode aparecer em mais do que
uma factura; Uma factura pode conter mais do que um
produto; Neste caso, constrói-se uma tabela auxiliar
que efectua o relacionamento.
Alberto Simões - Dept Informática - Univ. Minho27
Integridade referencial
Chama-se integridade referencial ao processo de garantir que todos os dados de campos relacionados existem em ambas as tabelas;
Por exemplo, existir uma factura com um código de produto que não existe na tabela de produtos;
Uma factura passada a um cliente que não existe na tabela de clientes;
Alberto Simões - Dept Informática - Univ. Minho28
Exercício 3
Utilizando as tabelas construídas no exercício 2, efectuar os devidos relacionamentos no Microsoft Access.
Verificar o funcionamento do Microsoft Access em relação à integridade referencial;
Alberto Simões - Dept Informática - Univ. Minho29
SQLQuery Language
Alberto Manuel Simões([email protected])
Alberto Simões - Dept Informática - Univ. Minho30
Motivação
As bases de dados servem para se poder aceder de forma eficiente aos seus dados;
O uso de uma interface gráfica para a pesquisa nem sempre é eficiente;
Então, desenvolveu-se uma linguagem específica para este tipo de consultas;
Alberto Simões - Dept Informática - Univ. Minho31
Noções
Chamamos querie a uma pergunta à base de dados;
Todas as respostas a queries são tabelas; A estas tabelas também chamamos de
views, porque consistem em vistas sobre porções da informação da base de dados;
As views são tabelas virtuais, ou seja, não são guardadas na base de dados.
Alberto Simões - Dept Informática - Univ. Minho32
Factura Produto Qt Total1425433 XX743K 100 € 100.001425433 YZ3MN 150 € 150.001425433 XP992O 170 € 340.001425433 YZ3MN 140 € 140.00
Produto Designação Preço Un.XX743K Pregos € 1.00YZ3MN Porcas € 1.00XP992O Parafusos € 2.00
Nº Factura Data Cliente Total1425433 04-05-2002 António Carlos Silva e Sá € 730.001425434 04-05-2002 Ana Maria Teixeira Cunha € 900.00
1425435 04-05-2002 José Miguel Lopes Araújo € 400.00
Consideremos as seguintes tabelas:
• Facturas
• Produtos
• Facturas / Produtos
Os resultados dos próximos exemplos são retirados desta base de dados.
Alberto Simões - Dept Informática - Univ. Minho33
Operações de Selecção(apenas com uma tabela)
O comando SELECT permite seleccionar determinadas colunas de uma tabela:SELECT <campos> FROM <tabela> ;
Por exemplo, podemos seleccionar os nomes dos produtos com:SELECT DesignaçãoFROM Produtos;
DesignaçãoPregosPorcas
Parafusos
Alberto Simões - Dept Informática - Univ. Minho34
Operações de Selecção(apenas com uma tabela - 2)
Podemos pedir mais do que um campo; Por exemplo, o código e a designação do
produto:SELECT Produto, Designação FROM Produtos;
Produto DesignaçãoXX743K PregosYZ3MN PorcasXP992O Parafusos
Alberto Simões - Dept Informática - Univ. Minho35
Operações de Selecção(apenas com uma tabela - 3)
Para seleccionar todos os campo, podemos usar um atalho (wildcard):SELECT * FROM Produtos;
Produto Designação Preço Un.XX743K Pregos € 1.00YZ3MN Porcas € 1.00XP992O Parafusos € 2.00
Alberto Simões - Dept Informática - Univ. Minho36
Operações de Selecção(explicitando condições na selecção)
É possível especificar condições para refinamento da selecção;
Uma linha só será incluída no resultado se a condição for verificada para essa linha;
As condições são testadas nas linhas da tabela original, i.e. podemos definir condições sobre colunas que fazem parte da tabela original mesmo que essas colunas não apareçam no resultado.
Alberto Simões - Dept Informática - Univ. Minho37
Operações de Selecção(explicitando condições na selecção 2)
Neste caso, usa-se a sintaxe:SELECT <campos> FROM <tabela> WHERE <condição>;
Seleccionar produtos que custem menos de € 2.00:SELECT DescriçãoFROM ProdutosWHERE PreçoUn<2;
DesignaçãoPregosPorcas
Alberto Simões - Dept Informática - Univ. Minho38
Operações de Selecção(explicitando condições na selecção 3)
Podemos escrever condições mais complicadas…
SELECT Disciplinas.nomeFROM DisciplinasWHERE ano = 1 AND semestre = 0;