Bases de Dados

Propaganda
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Ricardo Campos ([email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Autoria
Esta apresentação foi desenvolvida por Ricardo Campos, docente do Instituto Politécnico de
Tomar. Encontra-se disponível na página web do autor no link Publications ao abrigo da seguinte
licença:
Mais detalhes em: http://creativecommons.org/licenses/by-nc/3.0/deed.pt
O seu uso, de parte ou da totalidade, pressupõe a utilização da seguinte referência:
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005.
Linguagem SQL. Sql Server BI Development Studio. 457 slides.
A sua disponibilização em formato PPT pode ser feita mediante solicitação (email:
[email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
1
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bibliografia
Recursos:
C.J.Date
“An Introduction to Database Systems”
Addision Wesley
Robert Vieira
“Professional SQL Server 2000 Programming”
Wrox Books
A.Silberschatz, H.F.Korth, S.Sudarshan
“Database System Concepts”
MacGraw-Hill
J.L.Pereira
“Tecnologia de Bases de Dados”
FCA – Editora de Informática
D, Luis
“SQL – Structured Query Language”
FCA – Editora de Informática
Acetatos de Pedro Nogueira Ramos, ISCTE
Acetatos de Henrique Madeira, 1997/1998, UC
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Bibliografia
Recursos on-line (Bases de Dados e SQL):
Tutoriais, http://apostilando.com/sessao.php?cod=18
Noções da Linguagem SQL,
http://www.juliobattisti.com.br/artigos/office/nocoessqlconsultas.asp
Linha de Código SQL, http://www.linhadecodigo.com.br/desenvolvimento/sql.asp
SQL Course Interactive, http://www.sqlcourse.com
SQL for Web Nerds, http://philip.greenspun.com/sql/
Nota: Não é possível garantir a existência futura dos endereços (URL’s), citados nos recursos on-line. Como se sabe, os endereços
são virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
2
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bibliografia
Recursos on-line (SQL Server ):
Sql Server Developer Center, http://msdn2.microsoft.com/en-us/sql/default.aspx
Newsgroups, http://groups.google.com/groups/dir?lnk=gh&hl=en&sel=33606733
SQL Server Magazine, http://www.sqlmag.com/
SQL Server Database Help, http://www.sswug.org/
Data Generation Tool, http://www.sqledit.com/dg/index.html
SQL Server Central, http://www.sqlservercentral.com/
SQL Server 2005 Books,
http://www.microsoft.com/downloads/details.aspx?FamilyId=BE6A2C5D-00DF4220-B133-29C1E0B6585F&displaylang=en
http://www.mcdbabrasil.com.br/
Nota: Não é possível garantir a existência futura dos endereços (URL’s), citados nos recursos on-line. Como se sabe, os endereços
são virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Sumário
Objectivos
Parte Teórica
Parte Prática
Programa
Bibliografia
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
3
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Objectivos
Discussão dos conceitos relacionados com bases de dados;
Diagrama de entidade-relação (modelo conceptual) para a
representação do modelo de dados;
Introdução às bases de dados relacionais (modelo lógico) e à
normalização;
Aprendizagem das cláusulas mais importantes da linguagem SQL,
quer para a criação da estrutura da base de dados (DDL) quer para a
exploração dos dados (DML);
Noções fundamentais sobre transacções e optimização;
Capacidade de espelhar os conhecimentos teóricos num projecto de
desenho e construção de uma base de dados utilizando um SGBD
relacional.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Objectivos
Levantamento das necessidades de informação;
Modelação de dados (diagramas E-R e normalização de dados);
Implementação de uma base de dados em Microsoft SQL Server 2005;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
4
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Programa
Conceitos de Bases de Dados
Bases de Dados;
Níveis de Análise do Sistema de Informação;
Ficheiros vs SGBDs;
Tipos de Bases de Dados.
Modelo Relacional
Modelo E-R (nível conceptual);
Modelo Relacional (nível lógico);
Normalização de uma Base de Dados;
Estratégias para a Concepção de uma Base de Dados.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Programa
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server;
Interface;
Criar Bases de Dados;
Criar Tabelas;
Criar Índices;
Executar Queries;
Executar Store Procedures;
Realizar Backups.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
5
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Programa
Álgebra Relacional
Operações Binárias;
Operações Unárias.
Linguagem SQL
Tipos de Linguagens;
SQL Embebido VS APIs;
Definição de SQL;
Comandos DDL e Comandos DML;
Comandos SQL para administração de privilégios;
Sinónimos;
Store Procedures.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Programa
Transacções, Recuperação e Optimização
Definição de Transacção;
Tipos de Transacção;
Concorrência de Transacções;
Definição de Recuperação e Tolerância a Falhas;
Mecanismos de Recuperação;
Tipos de Falhas;
Definição de Índices;
Considerações sobre os índices;
Estrutura Interna de um Índice;
Monitorização;
Hashing.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
6
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Programa
Desenho de um esquema de Bases de Dados em SQL Server
Desenho de uma base de dados para um banco;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Conceitos de Bases de
Dados
Ricardo Campos ([email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
7
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Sumário
Sumário
Conceitos de Bases de Dados
Bases de Dados;
Níveis de Análise do Sistema de Informação;
Ficheiros vs SGBDs;
Tipos de Bases de Dados.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
Motivação
Definição
Aplicações
Motivação
Porque é que alguém que não quer ser profissional de sistemas de informação,
deve aprender bases de dados?
Pelo mesmo motivo pelo qual se devia aprender a usar um computador há
10 anos atrás;
As bases de dados serão tão comuns no futuro como as folhas de cálculo;
A criação de sistemas de informação é um processo que envolve pessoas
de várias áreas. Ter conhecimentos em bases de dados, facilitará a
comunicação com os profissionais de SI.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
8
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Motivação
Definição
Aplicações
O que é uma Base de Dados?
De uma forma genérica uma base de dados é uma estrutura que guarda dados:
Uma agenda com moradas e contactos telefónicos;
Uma lista de CDs;
A World Wide Web.
O objectivo de uma base de dados é possibilitar de uma forma rápida e automática o
acesso aos seus dados:
Procurar a morada de uma determinada pessoa;
Procurar o nome da pessoa que canta determinada música;
Procurar a página WWW do CET.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
Motivação
Definição
Aplicações
Aplicações de Bases de Dados
Banca: todas as transacções e movimentos;
Companhias áreas: reservas, horários;
Universidades: inscrições, notas;
Vendas: clientes, produtos, compras;
Indústria: inventário, pedidos;
Recursos Humanos: registo dos empregados, salários, impostos;
Bibliotecas: registo de livros, revistas.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
9
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Nível Conceptual, Lógico e Físico
Nível Conceptual (Modelo E-R)
Nível Lógico (Modelo Relacional)
Nível Físico
00100110001100010001000
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Bases de Dados
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Gestão de Ficheiros vs SGBDs
Para a organização dos dados existem 2 sistemas:
Sistema de Gestão de Ficheiros
Criados e mantidos pelas aplicações.
Sistemas de Gestão de Bases de Dados
No qual se verifica uma certa independência entre as aplicações
e os dados, sob a mediação do SGBD.
S
G
B
D
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases
de
Dados
Bases de Dados
10
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Definição de Sistema de Gestão de Ficheiros
Uma das características principais dos Sistemas de Gestão de Ficheiros é que
cada aplicação é responsável pela criação e gestão da estrutura interna da
informação dos seus próprios ficheiros. Desta forma, qualquer alteração na
estrutura de ficheiros implica uma alteração no código de cada uma das
aplicações;
Cada tipo de ficheiro possui a sua própria estrutura (docs como o Word e
Excel têm estruturas diferentes) e é a aplicação que os cria que é responsável
pela sua definição da estrutura interna desses ficheiros.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Bases de Dados
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Desvantagens do Sistema de Gestão de Ficheiros
Redundância e Inconsistência dos dados
Múltiplos formatos, duplicação da informação em ficheiros diferentes;
No processamento tradicional de ficheiros (Sistema de Gestão de
Ficheiros), cada aplicação mantém o seu próprio conjunto de ficheiros e
dados, provocando a ocorrência de redundâncias;
A redundância leva ao armazenamento excessivo de informações,
ocupando espaço que poderia estar a ser utilizado com outras
informações e dificulta a integridade da informação;
Considere um sistema em que a informação relativa à morada dos
clientes é registada em dois ficheiros diferentes. Se o cliente muda de
morada e a mesma é apenas actualizada num dos ficheiros, o sistema
passa a conter informação inconsistente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
11
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Desvantagens do Sistema de Gestão de Ficheiros
Dificuldades no acesso aos dados
Necessidade de escrever um novo programa para efectuar uma nova tarefa;
Atomicidade das alterações
Falhas podem colocar a base de dados num estado inconsistente, com
alterações parciais já efectuadas.
Explo: A operação de levantamento de dinheiro de uma conta deve ser
totalmente realizada ou caso contrário nenhuma alteração deve ser
efectuada.
Acessos concorrentes por diversos utilizadores
Acessos concorrente não controlados podem originar inconsistências.
Explo: duas pessoas a consultarem um saldo e a alterarem-no ao mesmo
tempo.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Bases de Dados
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Definição de Sistemas de Gestão de Bases de Dados (SGBDs)
A abordagem pelos SGBDs tem uma característica fundamental: os dados são
organizados num único conjunto (uma única unidade de armazenamento em
vez de várias unidades independentes);
Adicionalmente todos os acessos aos dados passam por entidade designada
por SGBD que centraliza em si o acesso à base de dados;
Os SGBDs ocultam os detalhes físicos de armazenamento e organização dos
dados (a base de dados encontra-se evidentemente num conjunto de ficheiros);
O SGBD é uma única entidade que manipula
a base de dados, atendendo a solicitações do
nível aplicacional.
S
G
B
D
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases
de
Dados
Bases de Dados
12
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Características dos SGBDs
Os SGBDs mantém não somente os dados, mas também a forma como os
mesmos são armazenados, contendo uma descrição completa da base de
dados;
Essas informações são armazenadas no catálogo do SGBD (o dicionário de
dados), o qual contém informações sobre a estrutura de cada ficheiro, o tipo,
o formato, restrições, etc…
A informação armazenada no catálogo (no dicionário) é chamada de metadados;
Assim, uma qualquer alteração na estrutura dos ficheiros, apenas implica
uma alteração no catálogo, evitando a alteração no código fonte de cada uma
das aplicações;
Diferentes utilizadores poderão ter o seu acesso limitado a partes da base de
dados. Por exemplo, embora todos os dados de uma organização estejam na
mesma base de dados, aqueles que são importantes para a definição da
estratégia só podem ser consultados pela administração.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Bases de Dados
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Vantagens dos SGBDs
Acesso Simultâneo
Vários utilizadores podem aceder e alterar ao mesmo tempo a mesma base
de dados sem criar inconsistências.
Explo: 2 utilizadores diferentes podem consultar simultaneamente os dados
do mesmo cliente. No entanto o SGBD não permite que ambos os utilizadores
alterem esses dados ao mesmo tempo.
Controle de Redundância
Ao contrário do tradicional sistema de gestão de ficheiros, onde cada
aplicação deve manter o seu próprio conjunto de ficheiros e dados, os
SGBDs não, situação que facilita o controle de redundância.
Restrição a acessos não autorizados
Um SGBD deve fornecer um sistema de autorização e segurança, o qual é
utilizado pelo administrador da base de dados, para criar contas e especificar
as restrições dessas contas.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
13
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Vantagens dos SGBDs
Independência dos dados relativamente às aplicações
Assim, uma qualquer alteração na estrutura dos ficheiros, apenas implica
uma alteração no catálogo, evitando a alteração no código fonte de cada
uma das aplicações.
Tolerância a Falhas
Um SGBD deve fornecer recursos para recuperação de falhas, tanto de
software como de hardware.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Bases de Dados
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Exemplos de SGBDs
Oracle, Informix, SQL Server, etc…
São bastante fiáveis e com maiores capacidade que os do próximo exemplo.
MySql, Access,
Mais adequados para uso doméstico, pequenas empresas, etc…
Explo: 2 utilizadores diferentes podem consultar simultaneamente os dados
do mesmo cliente. No entanto o SGBD não permite que ambos os
utilizadores alterem esses dados ao mesmo tempo.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
14
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Utilizadores de um SGBD
Administradores
Utilizadores
Programadores
Utilizadores
Nível
de
Nível
da
Avançado
Base de Dados
Básico
usam
Programas de
Interface
Aplicações
Programas
usam
usam
escrevem
Ferramentas de
Ferramentas de
Análise
Administração
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Bases de Dados
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Utilizadores de um SGBD
Utilizadores Nível Básico
Chamam uma das aplicações que foi construída previamente;
Explo: pessoas a aceder a uma base de dados através da web.
Programadores de Aplicações
Interagem com o sistema através de chamadas DML;
Utilizadores Nível Avançado
Constroem pedidos numa linguagem de consulta de bases de dados ou
através de ferramentas de OLAP ou Data Mining;
Administrador da Base de Dados
Coordena todas as actividades do sistema de bases de dados.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
15
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Funções do Administrador de Bases de Dados
Concede aos utilizadores autorizações de acesso à base de dados;
Define os métodos de acesso;
Define restrições de integridade;
Monitoriza o desempenho;
Manutenção de rotina (backups, gestão de espaço em disco).
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Bases de Dados
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Arquitectura de um SGBD
Utilizadores
utilizadores
nível básico
programas
de interface
programadores
de aplicações
Utilizadores
nível
avançado
DBA
consultas
esquema de bases
de dados
processador de
consultas
compilador da
linguagem de
definição de dados
chamadas
de rotina
pré-compilador da
linguagem de
manipulação de dados
código objecto
dos programas
de interface
gestor da base
de dados
SGBD
gestor de
ficheiros
ficheiros de
dados
dicionário de
dados
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
16
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Arquitectura Cliente/Servidor
Servidor
Servidor
BD
BD
Servidor
Rede
Rede
Aplicação
Cliente
Aplicação
Cliente
Aplicação
Arquitectura de duas camadas
Arquitectura de três camadas
Programas clientes que
comunicam com a base de
dados.
Aplicações web recorrendo a
software intermediário.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Aplicação
Bases de Dados
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Vantagens Arquitectura Cliente/Servidor
Independência das aplicações de cliente relativamente à localização física dos
dados;
Todo o trabalho de interface com o utilizador e tratamento da informação
(gráfico, formatação) é feito no cliente;
Todas as tarefas de armazenamento da informação, consulta, segurança,
partilha de dados, são concentradas no servidor;
Só os pedidos de informação e os resultados é que são enviados pela rede,
donde resulta um tráfego geralmente baixo;
Adapta-se facilmente a problemas de diferentes dimensões: mais ou menos
clientes, servidores com maior ou menor capacidade, mais ou menos servidores.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
17
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Tipos de Bases de Dados
Bases de Dados Distribuídas
Servidor
Servidor
BD
BD
Servidor 1
Servidor 2
Rede
Cliente
Cliente
Uma base de dados distribuída surge ao utilizador como se fosse uma única
base de dados, mas na realidade é constituída por diversas bases de dados
distribuídas por diversos computadores.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
Hierárquico
Em Rede
Relacional
Contextualização Histórica
A utilização comercial de BDs começou nos anos 60. Inicialmente a
informação era guardada em ficheiros e a sua consulta e manipulação era
pouco prática;
Para definição de dados eram usados os modelos hierárquico e de rede;
No início dos anos 70 surgiram os SGBD relacionais cuja popularidade não
tem parado de crescer até hoje;
Este sucesso pode ser explicado pela simplicidade do modelo em que
assentam, o modelo relacional, que é constituído somente por relações, e
pelo surgimento de uma linguagem de manipulação simples e eficiente, o
SQL (Structured Query Language).
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
18
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Hierárquico
Em Rede
Relacional
Tipos: Hierárquicos, em Rede, Relacionais
Hierárquicos;
Em Rede;
Relacional:
Relações entre tabelas de dados
controladas por álgebra relacional;
Proposto por Codd em 1969;
Actualmente existem vários fornecedores de tecnologia relacional no
mercado: Oracle; MySql; SqlServer, Access, etc…;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Hierárquico
Em Rede
Relacional
Exemplo de Informações numa Base de Dados
Consideremos a seguinte tabela como base para a definição dos vários
tipos de bases de dados:
Nome
Rua
Cidade
Conta
Saldo
Nuno
Terlamonte
Aljezur
1
55€
Filipa
Sítio Fechado Aljezur
2
1000€
Filipa
Sítio Fechado Aljezur
3
5366€
António
Glorioso
Lisboa
3
5366€
António
Glorioso
Lisboa
4
10553€
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
19
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Hierárquico
Em Rede
Relacional
Modelo Hierárquico
Os dados são representados por registos e os relacionamentos por ligações;
Os registos são organizados como colecções arbitrárias de árvores.
Nuno
Terlamonte
Filipa
2
1
António
Aljezur
Sítio Fechado
1000€
Glorioso
Aljezur
5366€
3
55€
3
5366€
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Lisboa
4
10533€
Bases de Dados
Hierárquico
Em Rede
Relacional
Modelo Hierárquico
Modelo Hierárquico
Cliente
Como se pode concluir, esta é uma
organização que privilegia o acesso aos
registos do Cliente, mas que dificulta o acesso
aos registos do Produto.
Encomenda
Linha_Encomenda
Produto
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
20
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Hierárquico
Em Rede
Relacional
Modelo em Rede
Os dados são representados por colecções de registos e os relacionamentos
por ligações:
Nuno
Terlamonte
Aljezur
Filipa
Sítio Fechado
Aljezur
António
Glorioso
Lisboa
1
55€
2
1000€
3
5366€
4
10533€
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
Hierárquico
Em Rede
Relacional
Modelo Relacional
Tanto os dados, como os relacionamentos são representados por tabelas;
Possui fundamento matemático sólido;
Suponha-se a representação da realidade recorrendo ao modelo E-R (nível
conceptual):
rua
número
cidade
saldo
nome
Cliente
M
possui
N
Conta
Modelo Relacional (Nível Lógico):
codCliente
Nome
Rua
Cidade
codCliente
numConta
100
Nuno
Terlamonte
Aljezur
100
1
101
Filipa
Sítio Fechado
Aljezur
101
2
101
3
102
António
Glorioso
Lisboa
102
3
102
4
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
numConta
Saldo
1
55€
2
1000€
3
5366€
4
10533€
Bases de Dados
21
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Bases de Dados
Níveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Hierárquico
Em Rede
Relacional
Grau e Cardinalidade de uma Relação
Grau de uma Relação
Número de atributos de uma relação.
Cardinalidade de uma Relação
Número de tuplos de uma relação
4 atributos Grau = 4
Cliente
codCliente
Nome
Rua
Cidade
100
Nuno
Terlamonte
Aljezur
101
Filipa
Sítio Fechado
Aljezur
102
António
Glorioso
Lisboa
3 tuplos Cardinalidade = 3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo Relacional
Ricardo Campos ([email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
22
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Sumário
Sumário
Modelo Relacional
Modelo E-R (nível conceptual);
Modelo Relacional (nível lógico);
Normalização de uma Base de Dados;
Estratégias para a Concepção de uma Base de Dados;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Definição do Modelo E-R (Entidade – Relação)
O desenvolvimento de uma base de dados passa por representar graficamente a
realidade que se quer moldar:
O Diagrama de Entidade – Relação é uma técnica de representação gráfica
que ilustra conceptualmente as relações entre entidades de bases de dados;
Autor
M
obra
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
N
Publicação
Bases de Dados
23
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Definição do Modelo E-R (Entidade – Relação)
No Access o modelo conceptual não existe. Assim, sempre que se pretende
construir uma base de dados, o desenvolvimento da parte conceptual realizase numa folha de papel ☺;
Uma vez que o Access apenas conhece o modelo lógico, é necessário
aprender os fundamentos teóricos da passagem do modelo conceptual para o
modelo lógico, por forma que seja possível construir as tabelas no Access;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Entidade, Atributos, Associações e Chaves
Entidade
kms
Cor
Objecto que é distinguível de outros
objectos, mas que pode ser
agrupado na mesma entidade, pois
possuem várias características
comuns. Pretende representar a
realidade que queremos modelar
(exemplo: empresa, empregado,
aluno, professor, carro).
kms
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Cor
Bases de Dados
24
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Entidade, Atributos, Associações e Chaves
Dê um exemplo de entidades:
Aluno
Disciplina
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Entidade, Atributos, Associações e Chaves
Atributos
Propriedades ou características que permitem
descrever as entidades. Os livros por exemplo
possuem vários atributos comuns: o título, o número
de páginas, o ano de publicação, etc…
Número
Titulo
de Páginas
Ano de
Publicação
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
25
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Entidade, Atributos, Associações e Chaves
Dê um exemplo de atributos:
n.º aluno
código
nome
Designação
morada
Aluno
Disciplina
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Entidade, Atributos, Associações e Chaves
Associação / Relação
Estabelecimento de uma relação entre várias entidades;
Chave
sublinhado
Um atributo (chave simples) ou grupo de atributos (chave
combinada) que permite identificar univocamente cada entidade;
Resumo:
A presença de um substantivo usualmente indica uma entidade;
A presença de um verbo é uma forte indicação de um relacionamento;
Um adjectivo que é uma qualidade é uma forte indicação de um atributo;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
26
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Representação Gráfica
Conceito de Chaves
Modelo Relacional (Nível Lógico)
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Entidade, Atributos, Associações e Chaves
Dê um exemplo de associação:
n.º aluno
código
nome
Designação
morada
Aluno
Disciplina
inscrito
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Chaves Primárias
Todas as tabelas têm de possuir uma chave primária;
Permitem identificar univocamente um registo;
Número é chave porque não
podem existir dois clientes com o
mesmo número;
Número
Nome
Morada
001
João
Rua a
013
João
Rua b
Nome não é chave porque podem
existir dois clientes com o mesmo
nome;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
27
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Chaves Primárias
Apenas os atributos {Fila,Lugar}
garante que identificamos um
registo;
Número
Nome
Morada
BI
001
João
NULL
1234567
013
Ana
NULL
7654321
Fila
Lugar
Ocupado?
A
1
sim
A
2
não
B
1
não
Número e BI são chaves
candidatas. É obrigatório
optar por uma única chave;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Chaves Primárias
Dê exemplos de registos para as seguintes entidades, não se esquecendo de
indicar a chave primária:
Aluno (nAluno, nome, morada)
(8699, Ricardo, Rua A)
(8700, Nuno, Rua José)
(8701, Ana, Travessa do Viriato)
registo / linha / ocorrência
/ instância
Disciplina (codDisciplina, desDisciplina)
(1, TIC)
(2, Informática)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
registo / linha / ocorrência
/ instância
Bases de Dados
28
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Chaves Estrangeiras
As chaves estrangeiras são conjuntos de uma ou mais colunas que, numa
determinada tabela, referenciam a chave primária de outra tabela.
As chaves estrangeiras constituem um mecanismo essencial de
funcionamento dos sistemas de bases de dados relacionais;
Aluno (numAluno, nome, morada,……)
Disciplina (codDisciplina, designação,………)
Exame (numAluno, codDisciplina, data, nota, ………)
Verifica-se que a tabela Exame possui duas chaves estrangeiras;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Chaves Estrangeiras
Importa chamar a atenção para o facto de não ser obrigatório que uma chave
externa faça parte da chave primária da tabela em que está inserida.
Empregado (codEmpregado, nome, codDepartamento,……)
Departamento (codDepartamento, designação,………)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
29
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Integridade de Entidade e Integridade Referencial
Integridade de Entidade
Nenhum componente de chave primária de uma tabela pode conter nulos.
Tabela Jogadores
Integridade Referencial
O valor da chave
estrangeira tem de existir na
tabela referenciada. Por
outras palavras, não pode
ser usada como chave
estrangeira um valor que
não exista como chave na
sua tabela de origem
IdJogador
Nome
DataNasc
J1
Vaz
08/10/1970
J2
Inácio
20/08/1972
J3
Paulo
20/01/1977
J4
Pinho
15/02/1978
…..
…..
…..
Tabela Participações
IdJogador
IdJogo
Golos
J1
1
1
J2
2
0
J3
3
2
J152
1
0
…..
…..
…..
A inscrição do valor J152 na tabela Participações,
constituiria uma violação do princípio de integridade
referencial, uma vez que este valor não existe na
tabela jogadores.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Exercício
Do seguinte texto determine o que é Entidade, Associação, Atributos e Chave:
Numa universidade existem alunos e professores. Os alunos são identificados
por um número, têm um nome e morada. Os professores são identificados por
um código, têm um nome e habilitações. Os professores leccionam aula aos
alunos.
Defina o modelo E-R (nível conceptual):
n.º aluno
código
nome
nome
morada
Aluno
leccionar
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Professor
habilitações
Bases de Dados
30
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Tipos de relações existentes
Com base nestes três tipos de relações é possível decompor qualquer relação
do mundo real:
Relação Unária (reflexiva)
Possui apenas uma entidade que se relaciona com ela própria;
Relação Binária (as mais comuns)
Possui duas entidades que são relacionadas entre si;
Relação Ternária (complexas)
Possui três entidades que se relacionam entre si;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Tipos de relações existentes
Relação Unária (reflexiva)
Possui apenas uma entidade que se relaciona com ela própria;
Selecção
Esquema de uma relação unária, entre
elementos da entidade selecção;
jogos
Selecção
jogos
Portugal x Espanha
Portugal x França
Alemanha x França
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
31
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Tipos de relações existentes
Relação Binária (as mais comuns)
Possui duas entidades que são relacionadas entre si;
pertencem
Deputados
Grupos
Parlamentares
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Tipos de relações existentes
Relação Ternária (complexas)
Possui três entidades que se relacionam entre si;
Actores
Filmes
Director
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
32
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
3 Tipos de Associações
Numa associação binária podemos encontrar 3 tipos de associações:
Um para Um (1:1)
Caso em que a um elemento corresponde um outro elemento;
Um para Muitos (1:N)
Caso em que a um elemento podem corresponder um ou mais elementos;
Muitos para Muitos (M:N)
Caso em que vários elementos podem ser origem de vários outros elementos;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
2 Tipos de Participação
Uma entidade pode participar numa relação de duas formas:
Participação Obrigatória
Não pode existir nenhuma ocorrência dessa entidade que não esteja
associada a alguma ocorrência da outra entidade que participa na relação;
A
Entidade Obrigatória
B
Entidade Obrigatória
Participação Não Obrigatória
Podem existir ocorrências dessa entidade que não estejam relacionadas a
alguma ocorrência da outra entidade que participa na relação;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
33
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Associação 1:1 – nenhuma Entidade Obrigatória
Dê um exemplo para cada um dos seguintes elementos:
Um para Um (1:1)
Homem
1
Casamento
1
Mulher
Um Homem está casado com uma Mulher
Uma Mulher está casada com um Homem
H
M
H1
M1
H2
M2
H3
M3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Associação 1:1 – uma Entidade Obrigatória
Outro Exemplo de Um para Um (1:1)
Empregado
1
Tem
1
Carro
Um Carro pertence obrigatoriamente a um Empregado
Mas nem todo o Empregado tem um Carro
E
C
E1
C1
E2
C2
E3
E4
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
C3
Bases de Dados
34
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Associação 1:1 – as duas Entidades Obrigatórias
Outro Exemplo de Um para Um (1:1)
Empregado
1
Tem
1
Carro
Um Empregado tem obrigatoriamente um Carro
Um Carro pertence obrigatoriamente a um Empregado
E
C
E1
C1
E2
C2
E3
C3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Associação 1:N – nenhuma Entidade Obrigatória
Um para Muitos (1:N)
Enfermaria
1
Tem
N
Paciente
Uma Enfermaria têm vários Pacientes
Um Paciente pertence a uma só Enfermaria
E
P
E1
P1
P2
E2
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
P3
Bases de Dados
35
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Associação 1:N – Entidade do lado N Obrigatória
Um para Muitos (1:N)
Empresa
1
Trabalhar
N
Empregado
Uma Empresa têm vários Empregados a trabalhar
Um Empregado trabalha obrigatoriamente numa Empresa
A
B
A1
B1
B2
A2
B3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Representação Gráfica
Conceito de Chaves
Tipos de Participação
Tipos de Relações Existentes
Tipos de Associações
Associação M:N – nenhuma Entidade Obrigatória
Muitos para Muitos (M:N)
Autor
M
Escreveu
N
Pertence
Livro
Um Autor escreveu vários Livros
Um Livro pertence a vários Autores
A
L
A1
L1
A2
L2
A3
L3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
36
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Contextualização
De acordo com os tipos de associações e os tipos de participação:
Autor
M
N
obra
Publicação
é possível definir o modelo relacional (nível lógico);
É no entanto necessário aprender os fundamentos teóricos da passagem do
modelo E-R (nível conceptual) para o modelo relacional (nível lógico), por
forma que seja possível definir as tabelas:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – nenhuma Entidade Obrigatória
Dê um exemplo para cada um dos seguintes elementos:
Um para Um (1:1)
Homem
1
Casamento
1
Mulher
Um Homem está casado com uma Mulher
Uma Mulher está casada com um Homem
H
M
H1
M1
H2
M2
H3
M3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
37
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – nenhuma Entidade Obrigatória
Transf. Modelo E-R para modelo relacional
Homem (BIHomem, nome, morada,……)
Quando se transforma um modelo
conceptual (E-R) para um modelo lógico
(relacional), é necessário realizar um
conjunto de alterações.
Mulher (BIMulher, nome, morada,………)
Se no relacionamento 1:1 nenhuma entidade é obrigatória são necessárias 3
tabelas (2 para as entidades + 1 para a associação):
Homem (BIHomem, nome, morada,……)
Mulher (BIMulher, nome, morada,………)
A transformação passa por criar uma nova tabela, onde a chave, é a chave
primária de uma das entidades (por exemplo Homem). Deve-se também
adicionar como atributo a chave da outra entidade (Mulher):
Casamento (BIHomem, BIMulher, ……)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – uma Entidade Obrigatória
Outro Exemplo de Um para Um (1:1)
Empregado
1
Tem
1
Carro
Um Carro pertence obrigatoriamente a um Empregado
Mas nem todo o Empregado tem um Carro
E
C
E1
C1
E2
C2
E3
E4
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
C3
Bases de Dados
38
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – uma Entidade Obrigatória
Empregado (codEmpregado, nome, morada,……)
Carro (Matricula, marca, modelo,………)
Se o relacionamento de 1:1 tem participação obrigatória de apenas uma
entidade são necessárias 2 tabelas:
A transformação passa por colocar o atributo que é chave primária da relação
Empregado (entidade não obrigatória) na relação Carro (entidade obrigatória) :
Empregado (codEmpregado, nome, morada,……)
Carro (Matricula, marca, modelo, codEmpregado,……)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – as duas Entidades Obrigatórias
Outro Exemplo de Um para Um (1:1)
Empregado
1
Tem
1
Carro
Um Empregado tem obrigatoriamente um Carro
Um Carro pertence obrigatoriamente a um Empregado
E
C
E1
C1
E2
C2
E3
C3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
39
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – as duas Entidades Obrigatórias
Empregado (codEmpregado, nome, morada,……)
Carro (Matricula, marca, modelo,………)
Se o relacionamento de 1:1 tem participação obrigatória de ambas as
entidades é necessária apenas 1 única tabela:
A transformação passa por colocar o atributo que é chave primária de uma das
entidades (por exemplo de Carro) na outra entidade (por exemplo em Empregado):
Empregado (codEmpregado, nome, morada, Matricula, marca, modelo,……)
Os atributos do Carro podem ser vistos como atributos adicionais do Empregado
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:N – nenhuma Entidade Obrigatória
Um para Muitos (1:N)
Enfermaria
1
Tem
N
Paciente
Uma Enfermaria têm vários Pacientes
Um Paciente pertence a uma só Enfermaria
E
P
E1
P1
P2
E2
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
P3
Bases de Dados
40
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:N – nenhuma Entidade Obrigatória
Enfermaria (codEnfermaria, designação,……)
Paciente (codPaciente, nome, morada,………)
Se no relacionamento 1:N a entidade do lado N não é obrigatória, são
necessárias 3 tabelas (2 para as entidades + 1 para a associação):
Enfermaria (codEnfermaria, designação,……)
Paciente (codPaciente, nome, morada,………)
A transformação passa por criar uma nova tabela, onde a chave, é a chave
primária da entidade Paciente (lado N da associação). Deve-se também
adicionar como atributo a chave da entidade Enfermaria (lado 1 da associação):
Enfermaria_Paciente (codPaciente, codEnfermaria, ……)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:N – Entidade do lado N Obrigatória
Um para Muitos (1:N)
Empresa
1
Trabalhar
N
Empregado
Uma Empresa têm vários Empregados a trabalhar
Um Empregado trabalha obrigatoriamente numa Empresa
A
B
A1
B1
B2
A2
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
B3
Bases de Dados
41
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:N – Entidade do lado N Obrigatória
Empresa (codEmpresa, nome, localização,……)
Empregado (BI, nome, morada,……)
Se no relacionamento 1:N a entidade do lado N é obrigatória, são necessárias
duas tabelas:
A transformação passa por colocar o atributo que é chave primária da relação
Empresa (lado 1 da associação) na relação Empregado (lado N da associação):
Empresa (codEmpresa, nome, localização,……)
Empregado (BI, nome, morada, codEmpresa,……)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação M:N – Obrigatoriedade Irrelevante
Muitos para Muitos (M:N)
Autor
M
Escreveu
N
Pertence
Livro
Um Autor escreveu vários Livros
Um Livro pertence a vários Autores
A
L
A1
L1
A2
L2
A3
L3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
42
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação M:N – Obrigatoriedade Irrelevante
Autor (codAutor, nome,……)
Livro (ISBN, Título, numPag,……)
Nas relações M:N são sempre necessárias 3 tabelas, uma para cada entidade
e uma terceira para a associação:
Autor (codAutor, nome,……)
Livro (ISBN, Título, numPag,……)
A transformação passa por criar uma nova tabela, onde a chave, é a chave
é constituída pela chave de cada um das entidades (chave de Autor + chave
de Livro):
Autor_Livro (codAutor, ISBN, dataLançamento,……)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Resumo
Uma associação dá origem a uma tabela quando:
Quando é uma associação 1:N (com entidade do lado N não obrigatória);
Quando é uma associação 1:1 (com ambas as entidades não obrigatórias);
Quando é uma associação M:N.
A existência de uma chave estrangeira (atributo que é chave primária noutra
relação) numa relação, prende-se com a necessidade de manter a interligação
entre essa relação e a relação onde esse conjunto de atributos é chave primária;
Por exemplo dadas duas relações, Departamentos e Funcionários, a única forma
de traduzir que um dado funcionário trabalha num dado departamento é incluir
na relação Funcionários a identificação do Departamento onde esse Funcionário
trabalha;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
43
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Exercício
Defina com base no seguinte levantamento de requisitos o modelo de E-R:
Um Editor pode editar vários Livros;
Um Livro obrigatoriamente só pode ser editado por um Editor;
Um Livro pode ser requisitado por vários Utentes;
Um Utente pode requisitar vários Livros;
Editor
1
N
Edição
M
Livro
Requisição
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
N
Utente
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Exercício
Transformar o modelo E-R (nível conceptual) no modelo relacional (nível lógico):
4 tabelas (3 entidades + 1 associação)
Editor (codEditor, nome,……)
Livro (ISBN, título, codEditor……)
Requisição (ISBN, codLeitor, dataRequisição,……)
Utente (codLeitor, nome,……)
Editor
codEditor
nome
……..
Requisição
Livro
1
ISBN
N
1
N
ISBN
título
codLeitor
codEditor
dataReq.
……….
……….
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Utente
1 codLeitor
N
nome
……..
Bases de Dados
44
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Exercício
Pretende-se desenvolver uma base de dados para um banco:
Cada cliente pode ter várias contas, mas cada conta só tem associado
um cliente;
Cada conta está fixada numa agência, a qual pode ter várias contas;
Cada cliente pode fazer vários empréstimos, mas cada empréstimo só
está associado a um cliente;
Cada empréstimo está fixado numa agência, a qual pode ter vários
empréstimos concedidos;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Modelo E-R (nível conceptual)
Modelo de E-R:
Cliente
1
N
Conta
N
1
Agência
1
N
Empréstimo
N
1
Modelo de E-R constituído pelo clientes de um banco, assim como as contas
e empréstimos desses clientes nas várias agências do banco.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
45
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Modelo Relacional (Nível Lógico)
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. M:N) para modelo Relacional
DDL e DML
Modelo Relacional (nível lógico)
Modelo Relacional:
Clientes(codCliente, nome, profissao, localidade);
Agencias(codAgencia, designacao, localidade);
Contas
Contas(numConta, tipoConta, codCliente, codAgencia, saldo);
numConta
Emprestimos(numEmprestimo, codCliente, codAgencia, valor);
N
tipoConta
codCliente
codAgencia N
Clientes
codClient
e
Agencia
saldo
1
1
codAgencia
1
nome
Emprestimos
Profissao
localidade
N
designacao
localidade
numEmprestimo
codCliente
codAgencia
N
valor
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Objectivos da Normalização
Normalizar para quê?
Após o desenvolvimento do modelo E-R dos dados (nível conceptual) é feito o
desenvolvimento do modelo relacional (nível lógico);
O conjunto de tabelas obtidas representa a estrutura da informação;
Assegurar o mínimo de redundância possível;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
46
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Limitações das monotabelas
Para registar numa única tabela as encomendas efectuadas pelos clientes,
caímos numa redundância desnecessária de informação, quer em relação aos
produtos, quer em relação aos clientes;
Cliente
Endereço
Telefone
Produto
Modelo
Preço
Data
Qtd
Silva
Lisboa
665544
Alicate
A1
400
04/03/06
400
Santos
Porto
554433
Martelo
M1
250
04/03/06
250
Costa
Coimbra
332211
Serra
S1
1500
04/03/06
1500
Castro
Faro
443322
Tesoura
T1
500
04/03/06
500
Silva
Lisboa
665544
Martelo
M1
250
05/04/06
250
Silva
Lisboa
665544
Tesoura
T1
500
05/04/06
500
Costa
Coimbra
332211
Alicate
A1
400
06/04/06
400
Costa
Coimbra
332211
Serra
S1
1500
06/04/06
1500
Castro
Faro
443322
Alicate
A1
400
07/04/06
400
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Limitações das monotabelas
Outros problemas das monotabelas:
Problemas de Actualização
Se o endereço do cliente for alterado, essa alteração tem de ser feita em
várias linhas da tabela;
Problemas de Inserção
Não é possível registar informação relativa a um cliente que não tenha feito
qualquer encomenda;
Problemas de Eliminação
Imagine-se que o cliente ainda só fez uma encomenda. Se a encomenda
for anulada, perde-se toda a informação relativa ao cliente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
47
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Objectivos da Normalização
Modificar o conjunto de tabelas obtido do modelo conceptual num outro
conjunto de tabelas equivalente, mas menos redundante e mais estável;
A existência de redundâncias está associada a um conjunto de
anomalias de inserção de dados, anomalias de eliminação de dados e
anomalias de alteração de dados.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
As 3 formas normais
1.ª Forma Normal
Uma tabela, está na 1FN quando todos os seus atributos são elementares.
Não pode existir um conjunto de valores para um determinado atributo;
2.ª Forma Normal
Quando a chave é composta, qualquer atributo que não seja chave deve
depender da totalidade da chave, através de uma dependência funcional
elementar;
3.ª Forma Normal
Nenhum atributo não chave pode depender de um outro atributo não chave,
ou seja, cada atributo deve depender apenas da chave primária da relação;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
48
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Esquema Geral da Normalização
1.ª Forma Normal
Dados não normalizados. Dispor a informação em tabelas de forma que todas
as ocorrências dos atributos sejam elementares:
Os dados estão na 1.ª Forma Normal
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Esquema Geral da Normalização
2.ª Forma Normal
Identificar as dependências funcionais dos atributos em relação às chaves:
Os dados estão na 2.ª Forma Normal
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
49
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Esquema Geral da Normalização
3.ª Forma Normal
Identificar as dependências transitivas. Desdobrar a relação de forma que
cada atributo depende única e exclusivamente da chave:
Os dados estão na 3.ª Forma Normal
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Contextualização
Numa escola pretende-se manter informação sobre:
- Os alunos da escola (com informação sobre o seu número, nome, morada);
- As disciplinas que são ministradas na escola (nome);
- Os professores que dão essas disciplinas (nome);
- As notas dos alunos nas disciplinas que frequentam;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
50
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Contextualização
Actualmente já existe uma base de dados que guarda toda a informação numa
tabela:
idAluno Nome Morada
A1
João
Lisboa
Disciplinas
Professor
Nota
Matemática, Economia, Direito
Prof. Carlos, Prof Paulo, Prof José
14, 19, 9
A2
Ana
Algés
Matemática, Física
Prof. Carlos, Prof.ª Ana
11, 4
A3
Pedro
Sintra
Matemática, Economia, Física
Prof. Carlos, Prof Paulo, Prof.ª Ana
8, 12, 15
A4
Filipa
Lisboa
Matemática
Prof. Carlos,
14
1.ª Forma Normal
O passo seguinte é converter os atributos não atómicos, de forma que não
seja possível incluir mais do que um valor em cada campo de uma tabela:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
1FN
Definição
Uma tabela, está na 1FN quando todos os seus atributos são elementares.
Não pode existir um conjunto de valores para um determinado atributo;
Conjunto de Atributos
Atributos Elementares
Conjunto de elementos
indivisíveis (exemplo: Data de
Nascimento, Peso, etc…)
Uma lista de valores
para um dado atributo
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
51
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
1FN
Tabela na 1.ª Forma Normal:
Chave
idAluno Nome Morada idDisciplina Disciplina idProfessor
Professor
Nota
A1
João
Lisboa
1
Matemática
1
Prof. Carlos
14
A1
João
Lisboa
2
Economia
2
Prof. Paulo
19
A1
João
Lisboa
3
Direito
3
Prof. José
9
A2
Ana
Algés
1
Matemática
1
Prof. Carlos
11
4
A2
Ana
Algés
4
Física
4
Prof.ª Ana
A3
Pedro
Sintra
1
Matemática
1
Prof. Carlos
8
A3
Pedro
Sintra
2
Economia
2
Prof. Paulo
12
A3
Pedro
Sintra
4
Física
4
Prof.ª Ana
15
A4
Filipa
Lisboa
1
Matemática
1
Prof. Carlos
14
Alunos (idAluno, Nome, Morada, idDisciplina,
id
Disciplina, idProfessor, Professor, nota)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
2FN
Definição
Quando a chave é composta, qualquer atributo que não seja chave deve
depender da totalidade da chave, através de uma dependência funcional
elementar;
Dependências Funcionais (X Y)
X e Y são listas de atributos;
Se uma instância de valores do atributo X determina univocamente uma
instância de Y (X determina Y).
Ou seja, diz-se que X determina Y, se para cada valor de X existe um só valor
de Y
Ou seja, se soubermos X, sabemos automaticamente Y
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
52
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
2FN
Exemplo de dependência funcional (X Z)
Tome-se como referência a tabela A (x,y,z,w):
X Z;
Para um dado valor do atributo X, o valor do
atributo Z é sempre o mesmo;
x y z w
1
3
2
7
2
4
5
8
1
5
2
4
1
3
2
7
2
4
5
8
7
3
4
2
Conhecido o valor de X sabe-se automaticamente
o valor de Z;
Sempre que o valor da coluna X é 1, o valor do atributo Z é 2;
Se estas regras se verificarem sempre, e não apenas para um conjunto concreto
de valores (num dado momento), então existe uma dependência funcional;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
2FN
Exemplo de dependência funcional elementar {X,Y} W
Tome-se como referência a tabela A (x,y,z,w):
{X,Y} W;
W é funcionalmente dependente do conjunto
de atributos {X,Y}, quando estes atributos são
tomados como um conjunto;
x y z w
1
3
2
7
2
4
5
8
1
5
2
4
1
3
2
7
2
4
5
8
7
3
4
2
Convém, notar que o atributo W não é funcionalmente dependente de nenhum
dos atributos X e Y, quando estes são tomados isoladamente (por exemplo x(1)
w(7), mas x(1) w(4), logo não é funcionalmente dependente);
W é irredutivelmente dependente de {X,Y}, como um todo e não depende de
nenhum dos seus subconjuntos tomados isoladamente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
53
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
2FN
idAluno Nome Morada idDisciplina Disciplina idProfessor
Professor
Nota
A1
João
Lisboa
1
Matemática
1
Prof. Carlos
14
A1
João
Lisboa
2
Economia
2
Prof. Paulo
19
A1
João
Lisboa
3
Direito
3
Prof. José
9
A2
Ana
Algés
1
Matemática
1
Prof. Carlos
11
4
A2
Ana
Algés
4
Física
4
Prof.ª Ana
A3
Pedro
Sintra
1
Matemática
1
Prof. Carlos
8
A3
Pedro
Sintra
2
Economia
2
Prof. Paulo
12
A3
Pedro
Sintra
4
Física
4
Prof.ª Ana
15
A4
Filipa
Lisboa
1
Matemática
1
Prof. Carlos
14
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
2FN
Tabelas na 2.ª Forma Normal:
idAluno
Nome
Morada
A1
João
Lisboa
A2
Ana
Algés
A3
A4
Chave
Chave
Chave
Pedro
Filipa
Sintra
Lisboa
idAluno
idDisciplina
Nota
idDisciplina
Disciplina
idProfessor
Professor
A1
1
14
1
Matemática
1
Prof. Carlos
A1
2
19
2
Economia
2
Prof. Paulo
A1
3
9
3
Direito
3
Prof. José
A2
1
11
4
Física
4
Prof.ª Ana
A2
4
4
A3
1
8
A3
2
12
A3
4
15
A4
1
14
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
54
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
3FN
Definição
Nenhum atributo não chave pode depender de um outro atributo não chave,
ou seja, cada atributo deve depender apenas da chave primária da relação;
idDisciplina
Disciplina
idProfessor
Professor
1
Matemática
1
Prof. Carlos
2
Economia
2
Prof. Paulo
3
Direito
3
Prof. José
4
Física
4
Prof.ª Ana
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
3FN
Tabelas na 3.ª Forma Normal:
Chave
Chave
idDisciplina
Disciplina
idProfessor
idProfessor
Professor
1
Matemática
1
1
Prof. Carlos
2
Economia
2
2
Prof. Paulo
3
Direito
3
3
Prof. José
4
Física
4
4
Prof.ª Ana
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
55
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Resumo
Desta forma obtemos as seguintes tabelas normalizadas (3FN):
Aluno (idAluno, nome, morada);
Nota (idAluno, idDisciplina, nota);
Disciplina (idDisciplina, disciplina, idProfessor);
Professor (idProfessor, Professor);
Reflexo do modelo lógico de dados (modelo relacional):
Aluno
idAluno
Nota
N
1
idAluno
1
N
Disciplina
Professor
idDisciplina
1 idProfessor
nome
idDisciplina
……..
nota
idProfessor
……….
……….
disciplina
N
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Professor
……..
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Contextualização
Pretende-se automatizar o registo de compras num hipermercado:
- Os clientes fazem encomendas
- As encomendas contêm produtos
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
56
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
1FN
Definição
Uma tabela, está na 1FN quando todos os seus atributos são elementares.
Não pode existir um conjunto de valores para um determinado atributo;
Actualmente já existe uma base de dados que guarda toda a informação numa
tabela:
Nº
encomenda
Nº
cliente
Cliente
Endereço
Cliente
DataEnc
codProduto
Produto
Qtd
12
2
João
Rua A
11-11-2000
1, 2, 3
A, B, C
12, 10, 16
13
3
Ana
Rua B
11-11-2000
1, 3
A, C
16, 18
1.ª Forma Normal
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
1FN
O passo seguinte é converter os atributos não atómicos, de forma que não
seja possível incluir mais do que um valor em cada campo de uma tabela:
Tabela na 1.ª Forma Normal:
Chave
Nº
encomenda
Nº
cliente
Cliente
Endereço
Cliente
DataEnc
codProduto
Produto
12
2
João
Rua A
11-11-2000
1
A
12
12
2
João
Rua A
11-11-2000
2
B
10
12
2
João
Rua A
11-11-2000
3
C
16
13
3
Ana
Rua B
11-11-2000
1
A
16
13
3
Ana
Rua B
11-11-2000
3
C
18
Qtd
Encomenda (numEncomenda, numCliente, Cliente, endCliente, dataEnc, codProduto,
cod
Produto, Qtd)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
57
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
2FN
Definição
Quando a chave é composta, qualquer atributo que não seja chave deve
depender da totalidade da chave, através de uma dependência funcional
elementar;
Nº
encomenda
Nº
cliente
Cliente
Endereço
Cliente
DataEnc
codProduto
Produto
Qtd
12
2
João
Rua A
11-11-2000
1
A
12
12
2
João
Rua A
11-11-2000
2
B
10
12
2
João
Rua A
11-11-2000
3
C
16
13
3
Ana
Rua B
11-11-2000
1
A
16
13
3
Ana
Rua B
11-11-2000
3
C
18
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
2FN
Chave
Nº
encomenda
Nº
cliente
Cliente
Endereço
Cliente
DataEnc
12
2
João
Rua A
11-11-2000
13
3
Ana
Rua B
11-11-2000
Encomenda (numEncomenda, numCliente, Cliente, endCliente, dataEnc)
Chave
Chave
Nº
encomenda
codProduto
Qtd
12
1
12
12
2
10
12
13
3
1
16
16
13
3
18
codProduto
Produto
1
2
A
B
3
C
Produto (codProduto, Produto)
Linha_Encomenda (numEncomenda, codProduto, Qtd)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
58
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
3FN
Definição
Nenhum atributo não chave pode depender de um outro atributo não chave,
ou seja, cada atributo deve depender apenas da chave primária da relação;
A única relação que pode não estar na 3FN é a Encomendas dado que é a
única que possui mais do que um atributo não-chave;
Chave
Chave
Nº
encomenda
Nº
cliente
Cliente
Endereço
Cliente
DataEnc
Nº
encomenda
codProduto
Qtd
12
2
João
Rua A
11-11-2000
12
1
12
13
3
Ana
Rua B
11-11-2000
12
2
10
12
3
16
13
1
16
13
3
18
Encomenda
Chave
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Produto
1
A
2
B
3
C
Produto
Linha_Encomenda
Modelo Relacional (Nível Lógico)
codProduto
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
3FN
Nº
encomenda
Nº
cliente
Cliente
Endereço
Cliente
DataEnc
12
2
João
Rua A
11-11-2000
13
3
Ana
Rua B
11-11-2000
A existência desta última dependência, está em claro desacordo com a
definição da 3FN. A solução passa por decompor a relação, de acordo com as
dependências, nas duas relações seguintes:
Chave
Chave
Nº
encomenda
Nº
cliente
DataEnc
Nº
cliente
Cliente
Endereço
Cliente
12
2
11-11-2000
2
João
Rua A
13
3
11-11-2000
3
Ana
Rua B
Encomenda (numEncomenda, numCliente,
dataEnc)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Cliente (numCliente, Cliente,
endCliente)
Bases de Dados
59
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Resumo
Modelo E-R (nível conceptual)
Nº
encomenda
Nº
cliente
Cliente
Endereço
Cliente
DataEnc
codProduto
Produto
Qtd
12
2
João
Rua A
11-11-2000
1
A
12
12
2
João
Rua A
11-11-2000
2
B
10
12
2
João
Rua A
11-11-2000
3
C
16
13
3
Ana
Rua B
11-11-2000
1
A
16
13
3
Ana
Rua B
11-11-2000
3
C
18
Para registar numa única tabela as encomendas registadas pelos clientes,
caímos numa redundância desnecessária. A solução mais adequada passa
pela definição de várias tabelas:
Produto
M
N
Linha_Encom
Tem
endas
N
Encomendas
1
Pertence
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Cliente
Bases de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Resumo
Produto
M
N
Linha_Encom
Tem
endas
N
Encomendas
1
Pertence
Cliente
Modelo Relacional (nível lógico)
Chave
Chave
codProduto
Produto
Nº
encomenda
Nº
cliente
DataEnc
1
A
12
2
11-11-2000
13
3
11-11-2000
2
B
3
C
Produto
Chave
Encomenda
Nº
encomenda
codProduto
Qtd
12
1
12
12
2
10
12
3
16
Nº
cliente
Cliente
13
1
16
2
João
Rua A
13
3
18
3
Ana
Rua B
Linha_Encomenda
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Chave
Endereço
Cliente
Cliente
Bases de Dados
60
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Escola
Projecto Normalização de Factura Electrónica
Resumo
Desta forma obtemos as seguintes tabelas normalizadas (3FN):
Produto (codProduto, Produto)
Linha_Encomenda (numEncomenda, codProduto, Qtd)
Encomenda (numEncomenda, numCliente, dataEnc)
Cliente (numCliente, Cliente, endCliente)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Top-Down vs Bottom-Up
Levantamento de requisitos e Desenho de uma Base de Dados
Top-Down vs Bottom-Up
Top-Down
Parte-se de uma análise das entidades e dos tipos de relacionamentos,
segundo o modelo E-R, e, com base numa análise dos diferentes tipos de
relacionamentos entre as entidades, determinam-se as tabelas a incluir na
BD;
Bottom-up
Começa-se por considerar uma ou mais tabelas que contenham os atributos
ou campos considerados necessários à representação de cada aspecto da
situação e, com base num processo de normalização da informação,
determinam-se as tabelas necessárias;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
61
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Top-Down vs Bottom-Up
Levantamento de requisitos e Desenho de uma Base de Dados
Top-Down vs Bottom-Up
Estas duas estratégias não são mutuamente exclusivas. Na prática é
bastante proveitoso utilizar processos de uma e de outra;
Podemos começar por abordar uma situação pela estratégia top-down,
procurando captar, numa visão global, as entidades e relacionamentos
que nos parecem retratar adequadamente essa situação, e, numa fase
posterior, recorrer à estratégia bottom-up, para refinar a estrutura da
BD, procurando assegurar que as tabelas fiquem correctamente
normalizadas.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Modelo E-R (Nível Conceptual)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Estratégias para a concepção de uma Base de Dados
Bases de Dados
Top-Down vs Bottom-Up
Levantamento de requisitos e Desenho de uma Base de Dados
Levantamento de Requisitos e Desenho de uma BD
Levantamento de Requisitos
Para a construção do modelo E-R, o analista de sistemas necessita recolher
dados relevantes junto do utilizador final;
Desenho de uma base de dados
O desenho de uma base de dados passa pela definição do modelo E-R
(captura da realidade):
Elaboração no papel de um primeiro esboço da estrutura geral da BD;
Definição exacta de cada entidade;
Determinação dos relacionamentos;
Revisão da estrutura obtida;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
62
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de um esquema de Bases
de Dados
Ricardo Campos ([email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenho de uma Base de Dados para uma biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
Contextualização
A biblioteca do IPT tem por objectivo reorganizar a sua gestão. Em particular,
pretende passar de um sistema centralizado para um sistema descentralizado
em várias bibliotecas satélites;
Os documentos da biblioteca, designados por publicações, têm associado a
si, um tipo de publicação: livros, revistas, jornais, e-books, etc…;
Enquadram-se numa categoria (exemplo: Informática; Medicina, etc…);
E podem ser escritos por vários autores e quando aplicável editados por uma
editora;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
63
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Contextualização
Cada publicação é identificada por um código da publicação e compreende
um conjunto de características: título; idioma; número de páginas; imagem da
capa; formato; descrição da obra; ISBN; local de publicação; depósito legal e
número total de publicações disponíveis no conjunto de todas as bibliotecas;
Nenhuma das características é de preenchimento obrigatório (até porque as
revistas não têm por exemplo um autor). Por outro lado, características como
o ISBN que dizem respeito a livros, denominam-se por ISBN, mas entendemse por ISSN, quando por exemplo a publicação é uma revista;
Em cada uma das bibliotecas satélites, deve existir pelo menos um (podendo
existir obviamente mais) exemplar de cada publicação;
Cada exemplar de uma publicação tem uma cota única que o identifica de
forma inequívoca;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenho de uma Base de Dados para uma biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
Contextualização
Além do mais, cada exemplar tem como características a data de publicação;
a data de aquisição; o número de edição; a possibilidade de ser uma
publicação passível de ser ou não requisitada; um campo que valide se está
ou não requisitado; um campo observações para descrever se a obra está
danificada, etc… e um campo CD que indique se o recurso vem
acompanhado de cd ou não;
Apenas a data de aquisição é de preenchimento obrigatório e o campo cd
deve ser entendido como DVD quando for o caso;
Cada uma das bibliotecas deve ter conhecimento em tempo real, do número
publicações disponíveis;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
64
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Contextualização
A inscrição dos leitores é válida em qualquer uma das bibliotecas. São
identificados por um código e tem como características o nome, morada,
contacto, email, etc…;
Pertencem a um tipo de leitor, ao qual está associado um prazo de entrega.
Por exemplo Professores tem direito a 5 dias, Alunos de Pós-Graduação 3
dias, etc…
A biblioteca deverá guardar informação (ou seja o histórico) relativa à
requisição das publicações por parte dos leitores. Assim, necessita registar a
data de requisição, a data prevista de entrega e um campo que registe se o
recurso já foi devolvido ou não;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenho de uma Base de Dados para uma biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
Objectivos
Gestão dos Recursos
Todas as aquisições devem ser registadas no sistema através de um
formulário criado para o efeito;
Para isso é necessário considerar a criação de novas fichas, a consulta de
publicações requisitadas, a consulta de publicações em atraso e a consulta de
publicações por tipo de publicação;
Devem também ser criados os respectivos formulários que permitam inserir o
tipo de publicação, a categoria, a biblioteca onde existe o respectivo exemplar,
etc….;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
65
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Objectivos
Gestão dos Leitores
Todas as novas inscrições devem ser registadas no sistema através de um
formulário criado para o efeito;
Para isso é necessário considerar a criação de novas fichas, bem como a
consulta de fichas existentes;
Devem também ser criados os respectivos formulários que permitam inserir o
tipo de leitor, etc….;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenho de uma Base de Dados para uma biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
Objectivos
Requisição de Livros
Todas as requisições devem ser registadas no sistema através de um
formulário criado para o efeito;
Para isso é necessário considerar a criação de novas fichas, bem como a
consulta de fichas existentes;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
66
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Objectivos
Emissão de Relatórios
Deve ser construído um relatório com informações relativas às publicações,
agrupadas por tipo de publicação;
Deve ser construído um relatório com informações relativas ao leitor e
respectiva publicação cuja requisição caducou;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenho de uma Base de Dados para uma biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
Objectivos
Menus
Deve ser criado um menu para cada um dos pontos anteriores e um menu
principal com botões para cada um deles;
Macros
Deve ser criada uma macro que abra o menu principal, assim que o Access
seja executado;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
67
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Publicação vs tipoPublicação
tipoPublicação 1
Os documentos da
biblioteca, designados por
publicações, têm associado
a si, um tipo de publicação
pertence
N
Publicação
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenho de uma Base de Dados para uma biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Categoria
tipoPublicação 1
Categoria
1
As publicações
enquadram-se numa
categoria
pertence
pertence
N
Publicação
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
68
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Editora
tipoPublicação 1
Categoria
Editora
1
1
As publicações,
quando aplicável,
podem ser editadas
por uma editora
pertence
pertence
N
Publicação
N
edita
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenho de uma Base de Dados para uma biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Autor
N
Categoria
Editora
1
1
pertence
pertence
obra
tipoPublicação 1
N
Autor
As publicações
podem ser
produzidas por um
ou mais autores
M
Publicação
N
edita
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
69
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Exemplar
Autor
Uma publicação
tem um conjunto
de exemplares
N
Editora
N
pertence
1
M
Publicação
N
1
tem
Categoria
1
pertence
obra
tipoPublicação 1
edita
N
Exemplares
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Biblioteca
Autor
Deve existir pelo
menos um exemplar
de cada publicação
em todas as
bibliotecas.
N
Editora
1
N
pertence
1
Biblioteca
M
Publicação
N
1
tem
Categoria
pertence
obra
tipoPublicação 1
edita
1
tem
N
N
Exemplares
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
70
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Leitor
Autor
A inscrição dos
leitores é válida
em qualquer uma
das bibliotecas.
N
Editora
N
pertence
1
M
Publicação
N
edita
1
Biblioteca
1
tem
Categoria
1
pertence
obra
tipoPublicação 1
N
N
tem
Exemplares
M
N
requisição
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Leitor
Bases de Dados
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Leitor vs tipoLeitor
Autor
Um leitor
pertence a um
determinado
tipo de leitor.
N
N
pertence
1
Biblioteca
M
Publicação
N
1
tipoLeitor
1
edita
1
tem
N
N
Exemplares
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
tem
Editora
1
tem
Categoria
pertence
obra
tipoPublicação 1
M
requisição
N
N Leitor
Bases de Dados
71
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenho de uma Base de Dados para uma biblioteca
Levantamento de requisitos
Desenho da Base de Dados
Modelo Lógico (modelo relacional)
Autor
Publicacao
Categoria
codPublicacao
Titulo
Idioma
numPags
imagemCapa
Formato
descricaoObra
numPublDisp
ISBN
depositoLegal
localPubl
codCategoria
codTipoPubl
codEditora
codCategoria
desCategoria
tipoPublicacao
codTipoPubl
desTipoPubl
Editora
codEditora
desEditora
Morada
Contacto
Email
Obra
codAutor
nome
Email
codAutor
tipoLeitor
codTipoLeitor
desTipoLeitor
prazoEntrega
codPublicacao
Exemplar
Leitor
Cota
Obs
dataAquisicao
dataPublicacao
numEdicao
possbRequisitar
Cd
Requisitado
codPublicacao
codBiblioteca
codLeitor
Nome
Morada
Contacto
Email
codTipoLeitor
Biblioteca
Requisicao
Cota
codLeitor
dataRequisicao
dataEntrega
Devolvido
codBiblioteca
Morada
Contacto
Email
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Microsoft SQL Server
2005
Ricardo Campos ([email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
72
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Sumário
Sumário
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server;
Interface;
Criar Bases de Dados;
Criar Tabelas;
Criar Índices;
Executar Queries;
Executar Store Procedures;
Realizar Backups
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
SQL Server 2005
SQL Server é um SGBD assente na arquitectura cliente/servidor, desenvolvido e
comercializado pela Microsoft e que corre exclusivamente nos sistemas
operativos Windows;
É fácil de usar;
É escalável, entende-se por isso o facto de poder ser instalado tanto num
computador portátil, num computador de secretária com um único
processador ou num servidor com vários processadores;
Oferece ferramentas de Business Intelligence
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
73
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Versões do Server 2005
Existem 6 versões disponíveis:
SQL Server 2005 Express Edition;
Excelente forma de começar a trabalhar com o SQL Server. Gratuito
(http://msdn.microsoft.com/vstudio/express/sql/download/). Entre as
suas limitações encontra-se o facto de só permitir bases de dados até
4 GB e trabalhar com um único processador.
SQL Server 2005 Workgroup Edition;
Uma óptima solução para pequenas empresas. Não existe limite para o
tamanho da base de dados, mas apenas permite trabalhar com dois
processadores e tem reduzidas funcionalidades ao nível de BIntelligence
SQL Server 2005 Developer Edition;
Desenhados especificamente para equipas de desenvolvimento que
pretendem desenvolver aplicações SQL Server;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Versões do Server 2005
SQL Server 2005 Standard Edition;
Destinado a médias empresas. Inclui funcionalidades relativas a
DataWarehouse. Suporte até 4 processadores. Logo abaixo da versão
Enterpresi é de todas a versão mais completa;
SQL Server 2005 Enterprise Edition;
De todas, esta é a solução mais completa, suportando um número
ilimitado de CPUs;
SQL Server 2005 Mobile Edition;
Apropriado para dispositivos móveis.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
74
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Iniciar o Server 2005
O acesso ao SQL Server Management Studio é feito através do menu Start –
Programs – Microsoft Sql Server 2005;
O SQL Server Management Studio pode ser usado para gerir para lá do SQL
Server 2005, as versões mais antigas: SQL Server 2000 e SQL Server 7
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Autenticação de Utilizadores
A definição de políticas de segurança são extremamente encorajadas uma vez
que evitam acessos indevidos e porque permitem especificar aos utilizadores
autorizados os respectivos privilégios.
Quando um utilizador tenta aceder um servidor SQL Server, pode ser
autenticado de duas maneiras: pela Autenticação do Windows ou pela
Autenticação do SQL Server:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
75
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Autenticação de Utilizadores
O tipo de autenticação é definido aquando da instalação do SQL Server. Para
modificar o tipo de autenticação é necessário seguir os seguintes passos:
Botão direito do rato no servidor que se quer modificar e seleccionar
propriedades;
Seleccionar Security;
Modificar a autenticação do servidor;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Autenticação de Utilizadores
Quando se selecciona a autenticação de servidor, deverá adicionar-se um
SQL Server Login. A adição deste login é independente do sistema
operativo e dos seus logins;
Se o sistema de autenticação for o do Windows, o SQL Server assume
uma relação de confiança com o Windows e assume que se o utilizador
pode entrar no sistema operativo também pode entrar na base de dados;
É de todo conveniente no entanto, atribuir a cada um dos utilizadores
(logins do windows) os respectivos privilégios o que também pode ser
feito no SQL Server Management Studio;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
76
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Interface do Microsoft SQL Server
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Registered Servers
Para registar servidores SQL Server é necessário ter activa a janela Registered –
Servers (Menu View – Registered Servers), menu através do qual é possível por
exemplo reiniciar servidor já existente, mandá-lo abaixo, etc…
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
77
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Registered Servers
Através do item new é possível registrar um novo servidor:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Registered Servers
Também é possível criar um novo grupo de servidores, bem como exportar e
importar informações de outros servidores, o que evita o registro manual;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
78
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Object Explorer
A janela Object Explorer, permite a conexão a qualquer um dos componentes do
servidor de SQL Server e inclusive efectuar operações com o servidor (vistas
anteriormente), bastando premir o botão direito do rato em cima do servidor.
Para trabalhar com cada um dos componentes do SQL Server basta expandir a
árvore. O botão direito do rato oferece opções próprias a cada objecto;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Object Explorer
Para trabalharmos com o Object Explorer é necessário ter uma conexão
estabelecida com o servidor (se fizemos o login logo no início da sessão essa
conexão já existe):
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
79
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Server Objects
Refere-se a um conjunto de objectos usados ao nível do servidor
Backup Devices
Incluem as tapes e os discos usados para fazer backup da base de dados.
Quando se procede a um backup deve-se designar o backup device que se
quer usar
Linked Servers
Permite trabalhar com outras bases de dados, sejam SQL Servers ou não
Server Triggers
Server Triggers são DDL (Data Definition Language) Triggers, executados
em resposta a uma modificação na estrutura da base de dados
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Replication e Management
Capacidade do sistema em fazer cópias da informação e
automaticamente colocá-la numa localização remota
O nó management contém ferramentas que ajudam
na gestão do SQL Server. Estas ferramentas incluem
a capacidade de visualizar os logs no servidor e o
Activity Monitor (com informações acerca das
conexões, etc…)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
80
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
Através do Object Explorer temos acesso ao painel de segurança, onde
podemos controlar os logins, adicionar e remover privilégios (server roles) e criar
credenciais;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
No Login é possível adicionar/remover utilizadores bem como atribuir server
roles:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
81
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
Server roles são privilégios predefinidos que não podem ser nem adicionados
nem removidos:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
Consideremos os seguintes server roles:
bulkadmin (Bulk Insert Administrators)
Pode executar instruções de Insert;
dbcreator (Database Creators)
Pode criar e alterar bases de dados;
diskadmin (Disk Administrators)
Pode gerir os ficheiros gravados no disco;
processadmin (Process Administrators)
Pode gerir os processos de SQL Server
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
82
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
securityadmin (Security Administrators)
Pode gerir os server logins;
serveradmin (Server Administrators)
Pode definir configurações do servidor;
setupadmin (Setup Administrators)
Pode gerir propriedades extra;
sysadmin (System Administrators)
Pode desempenhar qualquer actividade na instância do SQL Server. De facto,
se o um utilizador tem este privilégio concedido, tem autorização para efectuar
qualquer tarefa
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
Os privilégios que acabamos de estudar são designados por Predefined Server
Roles (Privilégios do servidor predefinidos) e são de âmbito geral.
Existem depois os Predefined Database Roles de âmbito mais específico, ou
seja, dizem respeito apenas a uma base de dados em específico:
db_accessadmin (Database Access Administrator)
Tem a capacidade de definir ID de utilizadores para
uma base de dados;
db_backupoperator (Database Backup Operator)
Podem realizar backups da base de dados;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
83
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
db_datareader (Database Data Reader)
Tem a capacidade de ver dados de qualquer tabela da base de dados;
db_datawriter (Database Data Writer)
Tem a capacidade de inserir, modificar ou eliminar dados de qualquer
tabela da base de dados;
db_ddladmin (Database Data Definition Language Administrator)
Podem criar, modificar, ou eliminar quaisquer
objectos de uma base de dados
db_denydatareader (Database Deny Data Reader)
Permite a seus membros mudar o esquema da base de
dados, no entanto, sem poder ver os dados da base de
dados;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
db_denydatawriter (Database Deny Data Writer)
Impede que seus membros alterem qualquer dado numa base de dados;
db_owner (Database Data Writer)
Podem executar qualquer tarefa de configuração ou manutenção em uma
base de dados;
public
Toda a base de dados quando é criada tem este privilégio
por definição e todos os utilizadores da base de dados
pertencem a esta categoria. Esta categoria é especialmente
útil se for necessário atribuir os mesmos privilégios a todos
os utilizadores da base de dados, ao mesmo tempo.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
84
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
Para atribuir a um utilizador privilégios sobre uma base de dados deve
fazer-se botão direito em cima de Database Roles – New Database Role:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
Até agora, já vimos como criar e gerir logins que são usados para controlar
o acesso ao SQL Server.
Vimos também como criar e gerir privilégios para os utilizadores no acesso à
base de dados, os quais são usados para controlar o acesso a bases de
dados individualmente;
Acontece que mesmo que um utilizador tenha um login e um acesso à base
de dados, ele pode estar impedido de executar determinadas operações:
Para atribuir essas permissões, deve fazer botão direito
do rato em cima da base de dados - properties
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
85
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Security
Depois seleccionar as respectivas permissões:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Bases de Dados
Ao instalar o SQL Server são criadas 4 bases de dados com os seguintes nomes
lógicos:
Master Database
É a base de dados de todas as bases de dados. Contém configurações
do sistema, definições de inicialização do SQL Server, das contas de
login
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
86
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Bases de Dados
Model Database
É a base de dados muito especial. Qualquer objecto que for colocado
nesta base de dados é automaticamente replicado para todas as bases
de dados posteriormente criadas. Com recurso a esta base de dados,
torna-se assim bastante fácil propagar tabelas, views, etc…
MSDB Database
Base de dados usada para manter backups, etc…
TempDB Database
Guarda objectos temporários, tais como tabelas temporárias e objectos
internos usados por exemplo para ordenação de registos;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Criar uma base de dados no SQL Server
É possível criar uma base de dados e inclusive especificar o dono da
base de dados:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
87
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Criar uma base de dados no SQL Server
O utilizador que cria uma base de dados é o dono da base de dados
[database owner]. Dentro dela, o dono é conhecido pelo nome especial
'dbo‘;
O dono da base de dados pode conceder permissões para outros
utilizadores de criar e excluir objectos dentro da base de dados;
O utilizador que cria um objecto (tabela, visão, etc.) na base de dados é o
dono desse objecto. O dono tem inicialmente todas as permissões no
objecto criado e pode também conceder essas permissões a outros
utilizadores se o desejar.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Generate Scripts
O Object Explorer permite a criação de scripts desde um simples objecto a uma
base de dados inteira;
Existe a opção de criar o script na:
Query Editor Window;
Ficheiro
Clipboard (funcionamento
similar ao do PrintScreen,
só temos que abrir, por
exemplo o notepad, e colar
o conteúdo (CTRL-V)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
88
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Criar tabelas no SQL Server
Para criar uma tabela:
Botão Direito em cima de Tables;
Introduzir o nome da coluna, o tipo, o tamanho e
se aceita ou não valores nulos;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Criar tabelas temporárias no SQL Server
A criação de tabelas temporárias no SQL Server é feita com recurso à
seguinte sintaxe (colocação de # ou ## antes no nome da tabela):
SELECT column_name, ..., column_name INTO #tabTemporária
FROM tabPermanente
WHERE...
A tabela fica guardada em:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
89
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Tipos de Dados
Tipo
Descrição
Tamanho
Bit
pode guardar o valor 1 ou 0
1 byte
Char
char(n) armazena um número fixo de caracteres. Por exemplo, uma
coluna do tipo char(30) tem sempre 30 caracteres. Se forem informados
menos, o restante é completado com espaços
Depende do tamanho do campo
Varchar
armazena até 8000 caracteres
2 bytes por caracter
NVarchar
armazena até 4000 caracteres
2 bytes por caracter
Decimal
permite armazenar dados exactos, sem perdas devidas a
arredondamento. Ao usar este tipo, é possível especificar uma precisão,
que indica quantos dígitos podem ser usados no total e uma escala, que
indica quantos dígitos podem ser usados à direita do ponto. Por exemplo,
decimal(9,2) permite guardar 7 dígitos antes do ponto decimal e 2 após,
num total de 9, assim o maior valor possível é 9999999,99;
Depende da precisão
Numeric
semelhante ao anterior
Depende da precisão
Float
armazenam dados numéricos, oferecendo precisão até 15 digitos
8 bytes
Real
uma versão reduzida de float
4 bytes
Image
informação binária da imagem e pode conter até 2,147,483,647 bits
Depende
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Tipos de Dados
Tipo
Descrição
Int
permite armazenar números inteiros entre -2.147.483.647 e
+2.147.483.647
4 bytes
SmallInt
permite armazenar números inteiros entre -32767 e +32767
2 bytes
Tinyint
permite armazenar números não-negativos de 0 a 255.
1 byte
Money
usado para valores monetários permite valores entre 922.337.203.685.477,5808 e +922.337.203.685.477,5807 (922 trilhões).
8 bytes
Smallmoney
permite valores entre - 214.748,3648 e +214.748,3647 (214 mil)
4 bytes
Text
o tipo text é usado para colunas com dados "memo", ou seja, com texto
de tamanho variável e permite armazenar até 2.146.483.647 caracteres
2 bytes
NText
ma versão reduzida do tipo Text que permite armazenar até
1.073.741.823 caracteres
1 byte
DateTime
o tipo datetime armazena valores contendo a data e hora, entre 1º de
janeiro de 1753 e 31 de dezembro de 9999
4 bytes
SmallDateTime
o tipo smalldatetime ocupa menos espaço e armazena datas e horas de
1º de janeiro de 1900 até 6 de junho de 2079
4 bytes
Timestamp
não pode ser alterada pelo utilizador. É definida automaticamente com a
data e hora actual quando a linha é inserida ou actualizada;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Tamanho
Bases de Dados
90
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Chave-Primária
Atribuir chave-primária;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Definir Chaves
Possibilidade de atribuir automaticamente (sem intervenção do utilizador)
um valor a uma chave, por exemplo um cliente:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
91
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Valores por Defeito
Valores que o SQL Server automaticamente coloca num determinado
campo. Um valor por defeito pode ser uma constante, uma função ou
NULL;
Por exemplo definir para que apareça sempre o número 7 ou a string ‘Ola’
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Computed Column
É possível criar uma coluna baseada em dados de outras colunas. O SQL
Server automaticamente actualiza a Computed Column quando as
colunas das quais depende forem actualizadas;
Um exemplo é o total, baseado no preço do produto e na quantidade;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
92
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Relações entre as tabelas (Chaves Estrangeiras)
Definir as relações (Relationships) entre as tabelas:
Por exemplo, se um campo da tabela for uma
chave estrangeira deve especificar-se tal
situação:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Relações entre as tabelas (Chaves Estrangeiras)
Estabelecer a relação:
As chaves podem ser visualizadas no object explorer:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
93
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Relações entre as tabelas (Chaves Estrangeiras)
Quando estamos a estabelecer a relação, podemos definir de acordo com a
Integridade Referencial, a acção “No Action” e “Cascade” para o comando
DELETE e UPDATE
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Relações entre as tabelas (Chaves Estrangeiras)
Se definirmos NO ACTION na opção DELETE e posteriormente tentarmos
apagar uma tabela da qual existem dependências o SQL Server devolve
um erro e a tabela não é apagada;
Já a definição de CASCADE para a opção DELETE, permitirá a eliminação
nas tabelas dependentes, das linhas afectadas pela eliminação da tabela
principal
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
94
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Relações entre as tabelas (Chaves Estrangeiras)
É possível definir relações entre as tabelas com recurso aos Database
Diagrams através de um ambiente gráfico (através dos diagramas é
possível testar novas estruturas para as tabelas, sem alterar a base de
dados, criar novos índices, tabelas e relacionamentos através deles como
referido)
Devem adicionar-se as tabelas e estabelecer as relações:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Definição de Regras
Limitam a gama de valores que o utilizador pode introduzir na coluna
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
95
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Definição de Regras
Outros exemplos:
DateEntered <= getDate(), limita o valor introduzido para uma data inferior
à actual;
LimiteCredito between 0 and 10000;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Modificar uma Tabela e Introduzir Valores
Já depois de definida a estrutura da tabela é possível modificá-la:
E introduzir valores através do item “Open Table”
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
96
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Definição de Índices
Índice [index] é um mecanismo que acelera bastante o acesso aos dados.
Consiste de uma estrutura de dados que contém ponteiros ordenados para
os dados. O SQL Server usa índices automaticamente em várias situações
para acelerar a pesquisa e actualização de dados, como por exemplo na
definição de restrições [constraints] PRIMARY KEY;
Índices aceleram a recuperação de linhas em consultas, mas também
aumentam a velocidade de actualizações e exclusões. Tal ocorre porque
o SQL Server deve encontrar uma linha, antes de poder actualizá-la ou
eliminá-la;
O optimizador é o componente do SQL Server que analisa as consultas
SQL e decide quando vale a pena utilizar um índice ou não. Às vezes,
mesmo quando um índice é definido, o optimizador resolve não utilizá-lo
por determinar que ele não ajudaria no desempenho. Por exemplo, não
vale a pena utilizar um índice que retorna uma percentagem muito grande
de linhas, pois levaria mais tempo analisando o índice do que o tempo
que ele economizaria filtrando os resultados;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Definição de Índices
O optimizador escolhe uma de duas alternativas ao fazer uma pesquisa: ou
varre a tabela ou usa o índice. Decide o que fazer baseado em:
Estimativa aproximada de quanto trabalho é necessário para usar o índice
ou não. Essa estimativa é baseada em informações estatísticas sobre o
índice, que dizem qual a distribuição dos dados. Uma vez que as
informações podem ficar desactualizadas, é necessário corrigi-las, através
da execução do comando UPDATE STATISTICS nome_da_tabela;
Se uma tabela é muito pequena, ou se o optimizador espera que seja
retornada uma grande percentagem de linhas, ele faz uma varredura;
Se na cláusula WHERE da consulta estão presentes colunas indexadas, é
bem provável que o optimizador resolva utilizar o índice.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
97
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Definição de Índices
É possível definir um índice quando estamos a criar uma tabela:
Carregar no item columns para definir quais as colunas que integram o
índice:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Executar uma Query
Botão direito do rato em cima da respectiva base de dados:
Ou no menu:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
98
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Executar uma Query
Depois de especificar a query SQL, resta apenas executá-la
Base de Dados seleccionada
Fazer um parse da query antes de a executar
permite validar se a mesma está bem escrita
Guardar resultados num ficheiro
Comentários
Os resultados na Grid:
Query SQL
Resultados em formato de texto
Visualizar as mensagens
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Executar uma Query
Determinadas queries (as mais simples) também podem ser feitas com
recurso a um ambiente gráfico
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
99
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Produzir Estatísticas
Sempre que se executar uma query é possível incluir estatísticas:
Depois de executar a
query é produzido
conjuntamente com os
resultados um painel
com informações
estatísticas:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Store Procedures
Um store procedure é um conjunto de comandos SQL que são compilados
e armazenados no servidor;
A vantagem de usar procedimentos armazenados é que eles podem encapsular
rotinas de uso frequente no próprio servidor, armazenadas na base de dados e
disponíveis para todas as aplicações, em vez de codificado várias vezes em cada
aplicação;
Definir o store procedure:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
100
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Store Procedures
Executar o Store Procedure:
Preencher o campo value no caso do store procedure solicitar a introdução
de valores (variável de entrada):
O store procedure vai produzir resultados de acordo com o definido;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Efectuar Backups
Um backup de uma base de dados é a operação de copiar os dados para
um dispositivo de backup;
Um dispositivo de backup pode ser um ficheiro ou por exemplo uma
unidade de fita;
Este procedimento pode ser feito a qualquer momento, sem ser necessário
parar o SQL Server, no entanto deve ser feito num horário de baixa
utilização uma vez que a operação provoca uma ligeira quebra de
performance perceptível ao utilizador;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
101
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Efectuar Backups
Para efectuar um backup é necessário o seguinte:
Seleccionar o servidor ao qual pertence a base de dados de que se quer
fazer backup;
Botão direito do rato em cima de management – backup;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Efectuar Backups
Deve-se especificar a localização física do ficheiro (para fitas por exemplo,
\\.\TAPE0 e para ficheiros em disco bd.bak), um nome para o backup, um
nome para a base de dados e o tipo de backup;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
102
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Efectuar Backups
O backup pode ser de 3 tipos:
Full
Backup da base de dados inteira;
Transaction Log
Como o log de transações contém apenas as modificações feitas aos
dados, se esse backup for restaurado, apenas essas modificações serão
aplicadas sobre os dados. Um backup do log de transacções leva muito
menos tempo para ser feito do que um backup de toda a base de dados.
Assim, numa base de dados que é modificada diariamente, pode-se fazer
diversos backups diários do log de transacções;
Differential
Esse tipo de backup é semelhante ao backup do log de transacções, com
a diferença de que só fará backup dos valores modificados desde o último
backup completo (de toda a base de dados)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Efectuar Backups
Differential - continuação
Ou seja, se uma informação foi modificada vinte vezes desde o último
backup, um backup do log de transações teria as 20 modificações feitas
nessa informação, enquanto que um backup diferencial teria apenas o
último valor armazenado;
Este tipo de backup gera ficheiros menores, apesar de demorar um pouco
mais de tempo para ser realizado que o backup do log de transações. Por
outro lado exige bem menos tempo para restauração.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
103
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Efectuar Backups
Outra possibilidade é ir directamente pela base de dados em que se quer fazer
backup:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Agendar um Backup
Para iniciarmos uma execução programada é necessário que o SQL Server
Agent esteja a correr. Para confirmarmos o estado do servidor basta ir ao
Menu Start – Programs – Microsoft SQL Server 2005 – Configuration Tools –
SQL Server Configuration Manager;
De volta ao SQL Server Management Studio, deveremos expandir o item
Management. Botão direito em cima do item – maintenance plan:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
104
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Agendar um Backup
O próximo passo passa por arrastar o item BackUp Database Task para a
área de trabalho;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Agendar um Backup
Configurar a janela, especificando qual a base de dados que se quer fazer
backup, se é para ir adicionando a um ficheiro já existente, etc…
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
105
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Microsoft SQL Server 2005
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Restaurar a Base de Dados
Para restaurar a base de dados:
Botão direito em cima do item Databases –
Restore Database;
Especificar qual a base de dados a recuperar
bem como o nome do ficheiro de backup:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Microsoft SQL Server 2005
Bases de Dados
O que é o SQL Server?
Iniciar o SQL Server
Interface
Criar Bases de Dados
Criar Tabelas
Criar Índices
Executar Queries
Executar Store Procedures
Backups
Restaurar a Base de Dados
Outra possibilidade é ir directamente pela base de dados que ser quer
restaurar:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
106
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional e
Linguagem SQL
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Sumário
Sumário
Álgebra Relacional
Operações Binárias;
Operações Unárias.
Linguagem SQL
Tipos de Linguagens;
SQL Embebido VS APIs
Definição de SQL;
Comandos DDL e Comandos DML;
Comandos SQL para administração de privilégios;
Sinónimos;
Store Procedures;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
107
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Operações Binárias e Unárias
Consultas em bases de dados não são mais do que operações de álgebra
relacional;
Assim, tal como na álgebra tradicional, os operadores possuem determinadas
propriedades;
Sabemos que 2 * 3 = 3 * 2. Isto significa, que quando necessitamos utilizar uma
expressão de álgebra relacional para chegar a um determinado resultado,
podemos fazê-lo através de mais do que uma forma, pois várias expressões
levam ao mesmo resultado;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Operações Binárias e Unárias
No Modelo Relacional a informação é representada através de relações (ou
tabelas). A Álgebra Relacional (concebida também por Codd) é um conjunto de
operações formais que operam sobre relações. No essencial a álgebra relacional
corresponde à álgebra de conjuntos, ou seja, é definida com base nos
operadores:
Binárias (operam sobre conjuntos)
União
Intersecção
Diferença
Divisão
Produto Cartesiano
Junção
Unárias (operam apenas sobre um conjunto)
Projecção
Selecção
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
108
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Operações Binárias
Divisão
União
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
União
R
S
A
B
C
A
B
C
a1
b1
c1
a1
b2
c3
a2
b2
c2
a2
b2
c2
a3
b3
c3
∪)
União (∪
A partir de duas relações iniciais, com esquemas compatíveis, resulta uma
relação com o mesmo esquema e sem tuplos duplicados.
Relações Compatíveis
Mesmo grau (número de atributos) e
atributos idênticos (i.e., tipos de
dados compatíveis).
R∪S=
A
B
C
a1
b1
c1
a2
b2
c2
a3
b3
c3
a1
b2
c3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
Divisão
União
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
União
Cliente
Empresa
Empresa
Morada
Cidade
Contacto
Empresa
Morada
Cidade
Contacto
Somos Ldª
Rua dos Coxos
Guarda
960000001
Somos Ldª
Rua dos Coxos
Guarda
960000001
Vanguarda
Rua dos Sábios
Guarda
960000002
Castelo
Rua do Castelo
Évora
960000005
Nabeiro SA
Rua de Aviz
Tomar
960000003
Nabeiro SA
Rua de Aviz
Tomar
960000003
Serra e Sol Ldª
Rua dos Mestres
Covilhã
960000004
Empresa ∪ Cliente =
SELECT * FROM Empresa
UNION
SELECT * FROM Cliente;
Empresa
Morada
Cidade
Contacto
Somos Ldª
Rua dos Coxos
Guarda
960000001
960000002
Vanguarda
Rua dos Sábios
Guarda
Nabeiro SA
Rua de Aviz
Tomar
960000003
Serra e Sol Ldª
Rua dos Mestres
Covilhã
960000004
Castelo
Rua do Castelo
Évora
960000005
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
109
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Intersecção
R
S
A
B
C
A
B
C
a1
b1
c1
a1
b2
c3
a2
b2
c2
a2
b2
c2
a3
b3
c3
Intersecção (∩)
A partir de duas relações iniciais, com esquemas compatíveis, resulta uma
relação com o mesmo esquema e cujos tuplos existem nas relações iniciais.
R∩S=
A
B
C
a2
b2
c2
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Intersecção
Cliente
Empresa
Empresa
Morada
Cidade
Contacto
Empresa
Morada
Cidade
Contacto
Somos Ldª
Rua dos Coxos
Guarda
960000001
Somos Ldª
Rua dos Coxos
Guarda
960000001
Vanguarda
Rua dos Sábios
Guarda
960000002
Castelo
Rua do Castelo
Évora
960000005
Nabeiro SA
Rua de Aviz
Tomar
960000003
Nabeiro SA
Rua de Aviz
Tomar
960000003
Serra e Sol Ldª
Rua dos Mestres
Covilhã
960000004
Empresa ∩ Cliente =
SELECT * FROM Empresa
INTERSECT
SELECT * FROM Cliente;
Empresa
Morada
Cidade
Contacto
Somos Ldª
Rua dos Coxos
Guarda
960000001
Nabeiro SA
Rua de Aviz
Tomar
960000003
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
110
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Diferença
R
S
A
B
C
A
B
C
a1
b1
c1
a1
b2
c3
a2
b2
c2
a2
b2
c2
a3
b3
c3
Diferença (-)
A partir de duas relações iniciais, com esquemas compatíveis, resulta uma
relação com o mesmo esquema com os tuplos das primeira relação que não
estejam presentes na segunda relação.
R-S=
A
B
C
a1
b1
c1
a3
b3
c3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Diferença
Cliente
Empresa
Empresa
Morada
Cidade
Contacto
Empresa
Morada
Cidade
Contacto
Somos Ldª
Rua dos Coxos
Guarda
960000001
Somos Ldª
Rua dos Coxos
Guarda
960000001
Vanguarda
Rua dos Sábios
Guarda
960000002
Castelo
Rua do Castelo
Évora
960000005
Nabeiro SA
Rua de Aviz
Tomar
960000003
Nabeiro SA
Rua de Aviz
Tomar
960000003
Serra e Sol Ldª
Rua dos Mestres
Covilhã
960000004
Em ORACLE:
SELECT * FROM Empresa
MINUS
SELECT * FROM Cliente;
Em Sql Server:
Empresa - Cliente =
Empresa
Morada
Cidade
Contacto
Vanguarda
Rua dos Sábios
Guarda
960000002
Serra e Sol Ldª
Rua dos Mestres
Covilhã
960000004
SELECT * FROM Empresa
EXCEPT
SELECT * FROM Cliente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
111
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Divisão
R
Divisão (÷)
S
A
B
B
a1
b1
b1
a2
b2
a3
b1
A divisão de uma relação R por uma relação S produz o quociente das duas
relações. O quociente:
Só contém os atributos de R que não fazem parte de S;
Os atributos que vão ser examinados correspondem à intersecção
das duas relações;
São procurados os conjuntos de registos em R que tem atributos
cujos valores são iguais a todos os que aparecem em S.
R÷S
A
a1
a3
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Divisão
A operação de divisão é útil para por exemplo, obter todos os nomes de
professores que dão aulas a todas as disciplinas que o Ricardo lecciona
Disciplinas
Professores
Disciplinas Ricardo
NomeProf
NomeDisciplina
NomeDisciplina
Ricardo
Bases de Dados
Bases de Dados
Bases de Dados
Hugo
Bases de Dados
Segurança em Redes Informáticas
Segurança em Redes Informáticas
Ricardo
Segurança em Redes
Informáticas
Matemática e Estatística
Paulo
Matemática e Estatística
Hugo
Segurança em Redes
Informáticas
Célia
Bases de Dados
Célia
Matemática e Estatística
NomeDisciplina
Nome
Professores ÷ Disciplinas Ricardo:
Ricardo
Hugo
select nomeprof from
Professores p, Disciplinas Ricardo d
where
p.NomeDisciplina = d.NomeDisciplina
group by nomeprof
having count(*) > 1
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
112
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Produto Cartesiano
R
T
A
B
C
D
E
a1
b1
c1
d1
e1
a2
b2
c2
d2
e2
a3
b3
c3
Produto Cartesiano (-)
O esquema resultante é a “soma” das tabelas base, através da combinação
das duas relações.
RxT=
A
B
C
D
E
a1
b1
c1
d1
e1
a2
b2
c2
d1
e1
a3
b3
c3
d1
e1
a1
b1
c1
d2
e2
a2
b2
c2
d2
e2
a3
b3
c3
d2
e2
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Produto Cartesiano
Factura
Cliente
codCliente
Morada
Contacto
ID_Cliente
Factura
1022
Dias da Silva
910000000
1022
101
1025
Av. De Tóquio
910000001
1025
321
Cliente x Factura =
SELECT *
FROM Cliente, Factura;
codCliente
Morada
Contacto
ID_Cliente
Factura
1022
Dias da Silva
910000000
1022
101
1022
Dias da Silva
910000000
1025
321
1025
Av. De Tóquio
910000001
1022
101
1025
Av. De Tóquio
910000001
1025
321
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
113
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Álgebra Relacional
Linguagem SQL
Operações Unárias
Projecção
Selecção
Junção ou Join
R
T
A
B
C
A
E
a1
b1
c1
a1
e1
a2
b2
c2
a2
e2
a3
b3
c3
a1
e3
a4
b4
c4
∞)
Junção ou Join (∞
Combinação de tuplos de duas relações que partilhem um atributo comum. As
combinações de tuplos resultantes partilham os mesmos valores nos atributos
de junção.
R∞T =
A
B
C
A
E
a1
b1
c1
a1
e1
a1
b1
c1
a1
e3
a2
b2
c2
a2
e2
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Junção ou Join
Factura
Cliente
codCliente
Morada
Contacto
ID_Cliente
Factura
1022
Dias da Silva
910000000
1022
101
1023
Praça da Monarquia
910000002
1023
102
1024
Rua do Sofá
910000004
1022
103
1025
Av. De Tóquio
910000001
Cliente ∞ Factura =
SELECT *
FROM Cliente, Factura
WHERE codCliente = ID_Cliente;
codCliente
Morada
Contacto
ID_Cliente
Factura
1022
Dias da Silva
910000000
1022
101
1022
Dias da Silva
910000000
1022
103
1023
Praça da Monarquia
910000002
1023
102
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
114
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Projecção
R
A
B
C
a1
b1
c1
a2
b2
c2
a3
b3
c3
Projecção (π)
Operador que a partir de uma lista de atributos, cria uma nova relação cujo
esquema é um sub-esquema da relação original. Se na relação resultante
surgirem tuplos duplicados, estes serão removidos.
Projecção
B
C
Nas implementações em SQL, a remoção
de tuplos duplicados é feita com recurso
ao operador DISTINCT
b1
c1
b2
c2
b3
c3
πB,C(R) =
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Projecção
Factura
codFactura
CodCliente
Data
codEmpregado
Valor
112233
1024
05/05/2007
123
135000€
112234
4319
05/05/2007
451
98000€
112235
2055
05/07/2007
451
244000€
Projecção 1
CodCliente
SELECT codCliente
1024
FROM Factura;
4319
2055
Projecção 2
CodCliente
Valor
SELECT codCliente, Valor
1024
135000€
FROM Factura;
4319
98000€
2055
244000€
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
115
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Selecção
R
A
B
C
a1
b1
c1
a2
b2
c2
a3
b3
c3
Selecção (σ)
Operador que actua sobre uma relação e que, através de uma condição
lógica, filtra tuplos existentes na relação, mantendo o seu esquema.
σA ∈ {a1,a2}(R) =
A
B
C
a1
b1
c1
a2
b2
c2
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Operações Binárias
União
Divisão
Intersecção
Produto Cartesiano
Junção
Diferença
Operações Unárias
Projecção
Selecção
Selecção
Factura
codFactura
CodCliente
Data
codEmpregado
Valor
112233
1024
05/05/2007
123
135000€
112234
4319
05/05/2007
451
98000€
112235
2055
05/07/2007
451
244000€
Selecção e Restrição
SELECT codCliente
CodCliente
FROM Factura
1024
WHERE Valor > 100000
2055
Restrição
SELECT *
codFactura
CodCliente
Data
codEmpregado
Valor
FROM Factura
112233
1024
05/05/2007
123
135000€
WHERE Valor > 100000
112235
2055
05/07/2007
451
244000€
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
116
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Linguagens Procedimentais vs Declarativas
Duas classes de linguagens:
Procedimental: o utilizador especifica quais os dados que pretende e
como obtê-los;
O PL/SQL é a linguagem procedimental mais utilizada e apresenta
facilidades acrescidas na manipulação de dados;
Declarativa: o utilizador especifica quais os dados que pretende sem
especificar a maneira como os vai obter, ou seja, enquanto as linguagens
de procedimentos acedem directamente às estruturas de informação
armazenadas em discos, as linguagens declarativas limitam-se a
comunicar com o SGBD, sendo que este se encarrega então de executar
o código necessário para essa tarefa.
A SQL (Structured Query Language) é a linguagem de consulta mais
utilizada, que especifica a forma do resultado e não o caminho para
chegar a ele;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Linguagens Procedimentais vs Declarativas
Procedimental
"Para cada um dos vendedores, da tabela vendedores, com mais de 10
anos de casa, determine na tabela de vendas todas as vendas destes
vendedores. A união de todas estas vendas será o resultado final do
problema."
Declarativa
“Quero saber todas as vendas feitas por vendedores com mais de 10
anos de casa."
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
117
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL embebido vs APIs
SQL foi criada em 1986 (revista em 1989 e 1992);
Ao contrário das linguagens de procedimentos, a linguagem SQL é uma
linguagem declarativa. O programador, em vez de indicar os passos que devem
ser executados para realizar uma tarefa, indica o objectivo que pretende atingir.
As aplicações geralmente acedem a bases de dados por intermédio de:
Extensões às linguagens (Pascal, C, Fortran, Cobol, etc…) permitindo
SQL embebido;
APIs (explo: ODBC/JDBC) que possibilitam o envio de consultas SQL para
a base de dados. As APIs introduzem uma camada de abstracção entre as
aplicações e os SGBDs.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL Embebido
Um pré-processador converte as declarações SQL em APIs;
Depois um compilador é usado para compilar o código.
Comandos
Conexões à base de dados
EXEC SQL CONNECT
Declarações de variáveis
EXEC SQL BEGIN (END) DECLARE SECTION
Declarações
EXEC SQL Statement;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
118
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
APIs (Application Program Interface)
As APIs são uma alternativa ao SQL embebido;
Em vez de modificar o compilador é adicionada uma biblioteca com chamadas
à base de dados (API);
O Driver aceita as chamadas API e traduze-las para código especifico do SGBD;
Tal permite uma abstracção entre as aplicações e os SGBDs (neutrais), ou seja, o
driver utilizado varia de acordo com o SGBD definido;
ODBC (Open Database Connectivity)
DB 2
JDBC
ODBC
Aplicação
JDBC
Sybase
SQL
ORACLE
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
APIs - ODBC
ODBC (Open Database Connectivity)
É um API standard utilizado para comunicar com o servidor de bases de
dados;
Abre uma conexão com a base de dados;
Envia queries;
Devolve resultados.
As bases de dados que suportam ODBC disponibilizam um driver para
estabelecer comunicação com o programa cliente.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
119
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
APIs - JDBC
JDBC: Java API (classes e interfaces em java.sql package).
Aplicação (inicia e termina conexões, submete declarações SQL e
devolve resultados, tudo através da API JDBC);
Driver Manager (carrega o driver JDBC);
Driver (conecta à data source, transmite pedidos e devolve os
resultados);
Data Source (processa, vindas do Driver, as declarações SQL e
devolve os resultados).
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Duas vertentes da Linguagem SQL
Ao contrário das linguagens de procedimentos, a linguagem SQL é uma
linguagem declarativa. O programador, em vez de indicar os passos que devem
ser executados para realizar uma tarefa, indica o objectivo que pretende atingir.
A linguagem SQL tem duas vertentes:
DDL (Data Definition Language)
O SQL possui um conjunto de comandos para criação e alteração da
estrutura da base de dados (tabelas, chaves estrangeiras, regras de
integridade referencial e views);
A compilação dos comandos em DDL é armazenada no dicionário de dados
(que guarda dados sobre dados metadados). O compilador de DDL gera
um conjunto de tabelas:
create table account(
account-number char(10),
balance integer);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
120
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Duas vertentes da Linguagem SQL
DML (Data Manipulation Language)
A vertente DML é uma implementação da Álgebra Relacional que permite
aceder (efectuar interrogações) e manipular (alterar, anular ou inserir
registos em tabelas) os dados.
Explo: encontrar o nome do cliente com codCliente = 7
select cliente.nome
from cliente
where cliente.codCliente= ‘7’
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Comandos DDL
CREATE TABLE
DROP TABLE
ALTER TABLE
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
121
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE TABLE
O comando CREATE TABLE permite ao utilizador criar uma nova tabela.
Para cada atributo da tabela é definido um nome, um tipo e algumas
restrições:
CREATE TABLE <nome_tabela> (<nome_coluna1> <tipo_coluna1> <NOT NULL>,
<nome_coluna2> <tipo_coluna2> <NOT NULL>,
<nome_colunan> <tipo_colunan> <NOT NULL>);
CREATE TABLE empregados (nome
char(30)
NOT NULL,
NIF
integer
NOT NULL,
salario
decimal(7,2)
NOT NULL);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE TABLE
As constraints (restrições) são regras a que os valores de uma ou mais colunas
devem obedecer e que podem ser especificadas conjuntamente como comando
create table
NOT NULL
A constraint NOT NULL é a restrição de uso mais generalizado, pois impede
a introdução de valores nulos na coluna;
CREATE TABLE teste (Id Integer
NOT NULL,
Nome char(60) NOT NULL);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
122
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE TABLE
CHECK
A constraint CHECK() permite realizar a validação dos dados introduzidos na
coluna, através da especificação de uma condição.
CREATE TABLE teste (Id Integer
NOT NULL,
Nome char(60) NOT NULL CHECK (Nome NOT LIKE ‘%Regina%’),
Idade Integer NOT NULL CHECK (Idade BETWEEN 0 and 150),
Sexo char
NOT NULL CHECK (Sexo IN (‘M’, ‘F’)),
Data_nasc
Datetime,
Data_adm
Datetime,
CHECK (Data_adm > Data_nasc));
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE TABLE
UNIQUE
A constraint UNIQUE permite indicar que os valores dessa coluna não se
podem repetir. Para garantir isso os SGBDs criam sobre cada uma das
colunas UNIQUE, um índice único;
CREATE TABLE teste (Id Integer
PRIMARY KEY,
Nome char(60) UNIQUE,
Telefone CHAR(15),
BI Integer
UNIQUE);
Ou
CREATE TABLE teste (Id Integer
PRIMARY KEY,
Nome char(60),
Telefone CHAR(15),
BI Integer,
UNIQUE (nome, BI));
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
123
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE TABLE
PRIMARY KEY
A constraint PRIMARY KEY (utilizada para indicar a chave primária de uma
tabela) é equivalente às cláusulas NOT NULL + UNIQUE juntas, ie, o
conteúdo da(s) colunas(s) não pode ser nulo e não pode admitir repetições;
Numa tabela apenas pode existir uma PRIMARY KEY, enquanto podem
existir várias ocorrências da cláusula UNIQUE
CREATE TABLE teste (Id Integer
PRIMARY KEY,
Nome char(60) UNIQUE,
Telefone CHAR(15),
Se a chave primária for
constituída por vários
campos: CREATE TABLE teste (Id Integer
BI Integer
UNIQUE);
NOT NULL,
Nome char(60) NOT NULL,
Telefone CHAR(15),
BI Integer
NULL,
PRIMARY KEY (id, nome));
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE TABLE
REFERENCES
A constraint REFERENCES permite fazer a validação das chaves estrangeiras,
ie, não se podem introduzir nos campos referenciados como chave estrangeira,
valores que não existam na tabela onde os campos são chave primária;
CREATE TABLE pessoa (
ID
NUMERIC
PRIMARY KEY,
Nome
CHAR(30)
NOT NULL,
Idade
Integer
NOT NULL
Salario
NUMERIC(10,2)
CHECK (idade BETWEEN 0 and 150),
NOT NULL
CHECK (salario > 0),
Telefone
CHAR(12)
NULL,
Qualquer valor
introduzido na coluna
cod_postal da tabela
Pessoa será validado
na coluna Codigo da
tabela Postal
cod_postal NUMERIC(4)
REFERENCES postal(codigo));
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
124
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE TABLE
Criação de uma tabela a partir de outra tabela:
SELECT nome, numEleitor into amostra
FROM eleitor
WHERE numEleitor <= 2000;
É possível criar também tabelas temporárias as quais são eliminadas
uma vez terminada a sessão onde foram criadas;
Existem tabelas temporárias locais e globais. As locais (coloca-se um #
antes do nome da tabela) apenas podem ser vistas na sessão onde
foram criadas e as globais (coloca-se um ## antes do nome da tabela)
podem ser vistas a partir de qualquer sessão:
SELECT column_name, ..., column_name INTO #tabTemporária
FROM tabPermanente
WHERE...
SELECT *
FROM #tabPermanente
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
DROP TABLE
O comando DROP TABLE permite a exclusão de uma tabela
DROP TABLE <nome_tabela>;
DROP TABLE empregados;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
125
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
ALTER TABLE
O comando ALTER TABLE permite que o utilizador faça a inclusão de novos
atributos numa tabela. A restrição NOT NULL não é permitida. Assim que se
insere um novo atributo na tabela, o valor para o mesmo em todas as linhas
será NULL
ALTER TABLE <nome_tabela> add <nome_coluna> <tipo_coluna> drop column <nome_coluna>;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE INDEX
Existem 3 formas possíveis de criar índices:
Com a instrução CREATE INDEX;
Aquando da criação da tabela através da instrução CREATE TABLE e
da cláusula CONSTRAINT;
Com a instrução ALTER TABLE usando a cláusula ADD CONSTRAINT;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
126
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE INDEX
A sintaxe da instrução CREATE INDEX é a seguinte:
CREATE [UNIQUE] INDEX indice
On tabela (campo1 [ASC|DESC], campo2 [ASC|DESC])
[WITH {PRIMARY | DISALLOW NULL| IGNORE NULL}]
Índice corresponde ao nome do índice a ser criado;
Campo1, campo2 representam o nome dos campos sobre os quais vai ser
construído o índice;
UNIQUE não permite que o índice tenha valores duplicados;
DESC ou ASC permitem criar índices por ardem descendente ou ascendente
respectivamente;
WITH define algumas regras de validação dos dados do índice:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE INDEX
Com a opção PRIMARY o campo (ou campos) envolvido é designado como
PRIMARY KEY:
Considere-se a seguinte tabela:
Clientes (codCliente, nome, morada, numContribuinte)
CREATE INDEX IndiceChavePrimaria
ON CLIENTES ([codCliente])
WITH PRIMARY;
Com a opção DISALLOW NULL não é permitido que, na criação de novos
registos, o campo (ou campos) indexado contenha valores nulos.
CREATE UNIQUE INDEX Contribuinte
ON CLIENTES ([numContribuinte])
WITH DISALLOW NULL;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
127
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
VIEWS
O que é uma vista?
Janela através da qual os dados podem ser vistos ou alterados;
Uma vista deriva de outra tabela (ou vista);
Uma vista é uma tabela virtual i.e., não tem existência física embora
apareça ao utilizador como se o tivesse;
Uma vista não é mais do que um comando SELECT
Uma vista não possui dados próprios; os dados são manipulados na
tabela base subjacente;
Note-se que o resultado de uma execução de uma view (os registos que
ela devolve) depende dos registos armazenados no momento nas tabelas
de suporte à view.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
VIEWS
Utilidades
Restringir o acesso à base de dados mostrando apenas parte dos dados;
Simplificar a consulta dos dados, substituindo consultas complexas
envolvendo várias tabelas por consultas simples sobre a vista;
Permitir que os mesmos dados sejam visualizados de diferentes maneiras
por diferentes utilizadores.
Tipos de Vistas
Vistas simples
Derivam de uma só tabela e não contém funções nem grupos de dados;
Vistas complexas
Derivam de várias tabelas e contém funções nem grupos de dados;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
128
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE VIEW
As views não podem conter a cláusula ORDER BY e apenas permitem a
inserção, remoção e alteração de registos caso não contenham as cláusulas
GROUP BY e UNION.
CREATE VIEW Clientes_Lisboa (BI, Nome)
AS Select BI, Nome FROM Cliente
Where Localidade = 'Lisboa'
WITH CHECK OPTION;
CREATE VIEW DistNotas (Disciplina, Minimo, Maxima, Media)
AS
SELECT D.NOME, MIN(NOTA), MAX(NOTA), AVG(NOTA)
FROM DISCIPLINA D, AD
WHERE D.CODIGO = AD.CODIGO
GROUP BY NOME;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE DATABASE LINKS
CREATE DATABASE LINKS
Ligação remota a uma base de dados.
Equivalência ao modelo de base de dados distribuída de forma
explícita (links disponíveis em USER_DB_LINKS
USER_DB_LINKS).
CREATE [PUBLIC] DATABASE LINK <nome> CONNECT TO <utilizador>
IDENTIFIED BY <password> USING <servico>
create database link lx connect to vendedor_1
identified by vende using oravendas_dblx;
desc vendas@lx;
select * from vendas@lx;
create synomym vendas_lisboa for vendas@lx;
drop database link lx;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
129
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
CREATE SNAPSHOT
CREATE SNAPSHOT
Cópia integral ou parcial de tabela remota;
USER_SNAPSHOTS, USER_REGISTED_SNAPSHOTS,
USER_SNAPSHOTS_LOGS e
USER_SNAPSHOTS_REFRESH_TIME.
CREATE SNAPSHOT <nome>
[ REFRESH [ FAST | COMPLETE | FORCE ]
[ START WITH <data>][ NEXT <expr_data>]
[ WIDTH { PRIMARY KEY | ROWID } ]
] as <query>;
create snapshot clientes_lx as select * from clientes@lx;
create snapshot vendas_lx refresh complete
start with to_date(‘2004-01-01’,’YYYY-MM-DD’)
next to_date(‘2004-01-01’,’YYYY-MM-DD’) + 15 WITH ROWID
as select * from vendas@lx;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Comandos DML
SELECT
UPDATE
DELETE
INSERT
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
130
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SELECT
Um comando SQL típico para selecção de linhas obedece à seguinte
estrutura (em que a cláusula SELECT corresponde à projecção, a cláusula
FROM ao produto cartesiano e a cláusula WHERE à selecção):
SELECT campos a seleccionar
FROM tabelas onde constam os campos indicados em Select
WHERE expressão lógica que indica quais as linhas que pretendemos seleccionar
ORDER BY campo pelo qual a listagem virá ordenada;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SELECT
Lista o nome e morada de uma tabela de clientes, mas apenas os clientes
cujo saldo é superior a 2500€ (ordenado por nome):
SELECT nome, morada
FROM cliente
WHERE cliente.saldo > 2500
ORDER BY nome;
Order by
Caso se indique a ordenação do resultado de
um select por mais do que uma coluna, a
ordenação é feita pela 1.ª coluna e entre
valores iguais é ordenada pela 2.ª coluna
Devolve duas colunas em que a segunda corresponde ao produto das
colunas quantidade e preço:
SELECT Produto, Quantidade * Preço FROM Item;
Podem ser atribuídos aliases às colunas. Por exemplo o comando anterior
se escrito da seguinte forma, permite dar um nome – Total - à segunda
coluna devolvida:
SELECT Produto, Quantidade * Preço AS Total FROM Item;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
131
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SELECT
Visualizar todos os campos de uma tabela:
SELECT * FROM Item;
Eliminar duplicados na listagem obtida, utiliza-se a cláusula DISTINCT
(elimina linhas duplicadas):
SELECT DISTINCT CodPostal FROM Cliente; (devolve os códigos postais existentes)
Caso se pretenda listar dois atributos com o mesmo nome
(correspondentes a duas tabelas referidas na cláusula FROM) é necessário
preceder o nome do campo pelo nome da tabela de onde ele é originário:
SELECT cliente.nome, empregado.nome
FROM cliente, empregado;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SELECT
Visualizar algumas linhas de uma tabela:
SELECT TOP 3 * FROM Item;
Armazenar o resultado em variáveis (quando o comando devolve apenas
uma linha)
SELECT Max(Quantidade) AS Maximo FROM ITEM;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
132
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
FROM
Na cláusula FROM indicam-se os nomes das tabelas envolvidas na
interrogação, separadas por vírgulas.
Quando existe mais que uma tabela o SQL executa automaticamente um
produto cartesiano entre as tabelas.
Por exemplo, o seguinte comando executa um produto cartesiano entre as
tabelas Cliente e Localidade, devolvendo todos os campos (das duas
tabelas):
SELECT * FROM Cliente, Localidade;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
FROM
À semelhança dos sinónimos dos atributos, é possível atribuir aliases às
tabelas (os sinónimos nas tabelas são relevantes nas subquerys):
SELECT * FROM Cliente AS Cliente_Empresa;
Existe uma tabela de sistema que apenas contém uma linha denominada
DUMMY / DUAL. Ela pode ser utilizada quando pretendemos listar uma
expressão que não é obtida a partir de nenhuma tabela.
SELECT COS(1) FROM DUMMY; (Devolve o cosseno de 1)
SELECT ‘Olá Mundo!!’ FROM dual;
SELECT 1+1 FROM dual;
SELECT LOWER(‘MaisUsCULAS’) FROM dual;
No SQL Server não é necessário especificar o nome da tabela;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
133
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
WHERE
WHERE
Na cláusula WHERE pode constar qualquer expressão lógica. A expressão
é avaliada linha a linha, isto é, para cada linha o SQL avalia o valor da
expressão, caso seja verdadeira devolve a linha.
Os principais operadores utilizados na cláusula WHERE são:
=, <, >, >=, <=, <>, AND, OR, NOT, IN, LIKE, BETWEEN e ISNULL.
O operador IN é verdadeiro quando um elemento faz parte de um conjunto.
O operador ISNULL permite lidar com valores NULL.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
WHERE
Alguns exemplos:
SELECT * FROM Cliente WHERE CodPostal > 1000 AND CodPostal < 2000;
SELECT * FROM Cliente WHERE (CodPostal > 1000 AND CodPostal < 2000) OR CodPostal = 3000;
SELECT * FROM CLIENTE WHERE CodPostal BETWEEN 1000 and 2000;
SELECT * FROM CLIENTE WHERE Nome LIKE ‘R%’ (todos os clientes começados por R)
SELECT * FROM Cliente WHERE Nacionalidade IN (‘Portuguesa’, ‘Brasileira’); (todos os clientes
portugueses ou brasileiros)
SELECT * FROM Cliente WHERE Nacionalidade NOT IN (‘Portuguesa’, ‘Brasileira’); (todos os clientes
excepto os portugueses e brasileiros)
SELECT * FROM Cliente WHERE Nacionalidade IS NOT NULL; (todos os clientes com nacionalidade
conhecida)
SELECT * FROM Cliente, CódigoPostal WHERE Cliente.CodPostal = CódigoPostal.CodPostal;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
134
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Junção de tabelas
O Join (ligação) entre Tabelas permite extrair, num único SELECT,
informação contida em diferentes tabelas;
A junção entre tabelas faz-se colocando na cláusula FROM o conjunto das
tabelas que se pretende juntar;
Equi-Join;
Produto Cartesiano (Cross Join);
Left Join;
Right Join;
Self Join;
Union
Union ALL;
Intersect;
Minus / Except;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Junção de tabelas
Equi-Join
Estamos perante um Equi-Join quando todas as colunas das tabelas são
apresentadas e a ligação entre as tabelas é feita através de uma igualdade
(duas colunas de conteúdos exactamente iguais)
Factura
Cliente
codCliente
Morada
Contacto
ID_Cliente
Factura
1022
Dias da Silva
910000000
1022
101
1025
Av. De Tóquio
910000001
1025
321
SELECT *
FROM Cliente, Factura
WHERE codCliente = ID_Cliente;
Cliente EquiEqui-Join Factura =
codCliente
Morada
Contacto
ID_Cliente
1022
Dias da Silva
910000000
1022
101
1025
Av. De Tóquio
910000001
1025
321
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Factura
Bases de Dados
135
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Junção de tabelas
No Equi-Join, o conteúdo das colunas codCliente e ID_Cliente é
exactamente igual, devido à condição de junção colocada no SELECT:
codCliente = ID_Cliente.
Não faz no entanto muito sentido que na junção das tabelas se obtenham
duas colunas com a mesma informação
Por isso, quando se faz a junção das tabelas, é comum seleccionar as
colunas sem que exista repetição de dados:
SELECT Cliente.*, Factura
FROM Cliente, Factura
WHERE codCliente = ID_Cliente;
O Inner Join corresponde a uma outra designação para o tipo de Join
habitual em que se juntam tabelas, ligando-as através da Chave Primária
de uma e da Chave Estrangeira da outra;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Junção de tabelas
Produto Cartesiano
A junção de duas ou mais colunas faz-se através das chaves estrangeiras
na cláusula Where. Caso não se faça a junção, o resultado é o produto
cartesiano das duas tabelas, associando a cada linha da tabela Cliente o
conjunto das linhas da tabela Factura;
O número total de registos que resulta do SELECT anterior é igual a 2 * 2 = 4
Cliente
SELECT *
codCliente
Morada
Contacto
1022
Dias da Silva
910000000
1025
Av. De Tóquio
910000001
Factura
ID_Cliente
Factura
1022
101
1025
321
FROM Cliente, Factura;
Cliente x Factura =
codCliente
Morada
Contacto
ID_Cliente
Factura
1022
Dias da Silva
910000000
1022
101
1022
Dias da Silva
910000000
1025
321
1025
Av. De Tóquio
910000001
1022
101
1025
Av. De Tóquio
910000001
1025
321
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
136
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Tipos de Linguagens
Álgebra Relacional
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Linguagem SQL
Junção de tabelas
Outer Join
Num Inner Join apenas são apresentados os registos em que exista ligação
entre as tabelas;
O papel do Outer Join é estender este conceito, permitindo que a totalidade
das linhas de uma tabela seja obtida, ainda que não exista o
correspondente valor na outra tabela a que está ligada pela junção
O Outer Join pode ser realizado à esquerda ou à direita;
Considerem-se as seguintes tabelas:
Factura
Cliente
codCliente
Morada
Contacto
ID_Cliente
Factura
1022
Dias da Silva
910000000
1022
101
1025
Av. De Tóquio
910000001
1025
321
2099
Bairro do Amor
910000002
1030
900
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Tipos de Linguagens
Álgebra Relacional
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Linguagem SQL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Junção de tabelas
Left Join
É seleccionado todo o conteúdo da tabela da esquerda e respectiva ligação
à tabela da direita;
SELECT *
FROM Cliente LEFT JOIN Factura
ON codCliente = ID_Cliente;
Cliente RIGHT Join Factura =
codCliente
Morada
Contacto
ID_Cliente
Factura
1022
Dias da Silva
910000000
1022
101
1025
Av. De Tóquio
910000001
1025
321
2099
Bairro do Amor
910000002
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
137
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Tipos de Linguagens
Álgebra Relacional
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Linguagem SQL
Junção de tabelas
Right Join
É seleccionado todo o conteúdo da tabela da direita e respectiva ligação à
tabela da esquerda;
SELECT *
FROM Cliente RIGHT JOIN Factura
ON codCliente = ID_Cliente;
Cliente Right Join Factura =
codCliente
Morada
Contacto
ID_Cliente
1022
Dias da Silva
910000000
1022
Factura
101
1025
Av. De Tóquio
910000001
1025
321
1030
900
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Junção de tabelas
Vivem AS tx x Vivem AS ty =
Self Join
Variante do Inner Join em que se
comparam duas colunas da mesma tabela
Determinar pessoas que vivem na mesma
cidade:
Vivem
Nome
António
Cidade
Lisboa
João
Porto
Pedro
Coimbra
Zé
Lisboa
Rui
Coimbra
SELECT tx.nome, ty,nome
Tx.Nome
Tx.Cidade
Ty.nome
Ty.cidade
António
Lisboa
António
Lisboa
António
Lisboa
João
Porto
António
Lisboa
Pedro
Coimbra
António
Lisboa
Zé
Lisboa
António
Lisboa
Rui
Coimbra
João
Porto
António
Lisboa
João
Porto
João
Porto
João
Porto
Pedro
Coimbra
João
Porto
Zé
Lisboa
João
Porto
Rui
Coimbra
……..
……..
……..
……..
Rui
Coimbra
António
Lisboa
WHERE Tx.Cidade = Ty.Cidade
Rui
Coimbra
João
Porto
Group by tx.nome
Rui
Coimbra
Pedro
Coimbra
Having count(*) > 1
Rui
Coimbra
Zé
Lisboa
Rui
Coimbra
Rui
Coimbra
FROM
Vivem AS Tx, Vivem As Ty
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
138
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Junção de tabelas
Tx.Nome
Tx.Cidade
Ty.nome
Ty.cidade
António
Lisboa
António
Lisboa
António
Lisboa
João
Porto
António
Lisboa
Pedro
Coimbra
António
Lisboa
Zé
Lisboa
António
Lisboa
Rui
Coimbra
João
Porto
António
Lisboa
João
Porto
João
Porto
Tx.Nome
Tx.Cidade
Ty.nome
João
Porto
Pedro
Coimbra
António
Lisboa
António
Lisboa
João
Porto
Zé
Lisboa
António
Lisboa
Zé
Lisboa
SELECT tx.nomea, ty,nome
FROM
Vivem AS Tx, Vivem As Ty
WHERE Tx.Cidade = Ty.Cidade
Ty.cidade
João
Porto
Rui
Coimbra
Pedro
Coimbra
Pedro
Coimbra
……..
……..
……..
……..
Pedro
Coimbra
Rui
Coimbra
Rui
Coimbra
António
Lisboa
Zé
Lisboa
António
Lisboa
Rui
Coimbra
João
Porto
Zé
Lisboa
Zé
Lisboa
Rui
Coimbra
Pedro
Coimbra
Rui
Coimnra
Pedro
Coimbra
Rui
Coimbra
Zé
Lisboa
Rui
Coimnra
Rui
Coimnra
Rui
Coimbra
Rui
Coimbra
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Junção de tabelas
Tx.Nome
Tx.Cidade
Ty.nome
António
Lisboa
António
Ty.cidade
Lisboa
António
Lisboa
Zé
Lisboa
Pedro
Coimbra
Pedro
Coimbra
Pedro
Coimbra
Rui
Coimbra
Zé
Lisboa
António
Lisboa
Zé
Lisboa
Zé
Lisboa
Rui
Coimnra
Pedro
Coimbra
Rui
Coimnra
Rui
Coimnra
SELECT tx.nome, ty,nome
FROM
Vivem AS Tx, Vivem As Ty
WHERE Tx.Cidade = Ty.Cidade
Tx.Nome
Ty.nome
António
António
António
Zé
Pedro
Pedro
Pedro
Rui
Zé
António
Zé
Zé
Rui
Pedro
Rui
Rui
Tx.Nome
SELECT distinct tx.nome
FROM
Vivem AS Tx, Vivem As Ty
WHERE Tx.Cidade = Ty.Cidade
Group by tx.nome
António
Pedro
Zé
Rui
Having count(*) > 1
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
139
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Junção de tabelas
UNION
A União não é propriamente uma ligação entre tabelas. A Union permite juntar
o conteúdo de múltiplos comandos SELECT
Numa Union, o nome das colunas apresentado no resultado é o nome das
colunas seleccionadas na primeira instrução SELECT;
Cada SELECT pode conter a sua própria cláusula WHERE, no entanto só
poderá existir uma única cláusula ORDEY BY (no último SELECT), sendo a
ordenação aplicada a todo o resultado;
Devolve os nomes dos clientes e fornecedores:
SELECT Nome FROM Cliente
UNION
SELECT Nome FROM Fornecedor;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Junção de tabelas
UNION ALL
Por defeito uma UNION remove sempre linhas duplicadas;
Se em vez de Union, utilizarmos o operador UNION ALL, os duplicados não
são retirados da selecção;
Caso não pretendamos eliminar nomes duplicados:
SELECT Nome FROM Cliente
UNION ALL
SELECT Nome FROM Fornecedor;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
140
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Junção de tabelas
INTERSECT
A intersecção de dois conjuntos é o resultado dos objectos que existem no
conjunto A e no conjunto B:
Devolve os nomes dos clientes que também são fornecedores:
SELECT Nome FROM Cliente
INTERSECT
SELECT Nome FROM Fornecedor;
MINUS / EXCEPT
O operador Except (correspondente à operação Diferença da álgebra
relacional) devolve os registos que resultam do primeiro SELECT e que
não aparecem no segundo;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
GROUP BY e HAVING
Recorrendo apenas às cláusulas anteriores não é possível, por exemplo,
efectuar certas operações estatísticas (somatórios, médias, etc.).
Tal acontece porque as operações de agregação (que envolvem vários
registos) não poderem ser calculadas linha a linha.
Por exemplo, o comando para listar os códigos postais associados a mais do
que dois clientes não pode ser efectuado tal como de seguida se apresenta:
SELECT CodPostal FROM Cliente WHERE COUNT(CodPostal) > 2
O comando é incorrecto porque a cláusula WHERE é testada linha a linha e,
numa linha não é possível obter o total de códigos postais.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
141
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
GROUP BY e HAVING
As cláusulas GROUP BY e HAVING permitem manipular valores agregados.
A cláusula GROUP BY permite a definição de grupos que irão ser tratados
com as funções de agregação;
Group by
Se um comando SELECT contiver a cláusula
GROUP BY, então todas as colunas
seleccionadas no SELECT têm que estar
presentes na cláusula Group by
A cláusula HAVING é equivalente à cláusula WHERE só que o seu argumento
são expressões lógicas relativas aos agrupamentos criados pela cláusula
GROUP BY.
Utiliza-se a cláusula WHERE sempre que se pretendem restringir os registos a
considerar na selecção. A cláusula HAVING serve para restringir os grupos que
foram formados depois de aplicada a restrição da cláusula WHERE (na qual não
se podem utilizar funções de agregação);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
GROUP BY e HAVING
A cláusula GROUP BY agrupa os clientes por código postal e a cláusula
HAVING selecciona os grupos cujo número de elementos é superior a dois:
SELECT CodPostal FROM Cliente
GROUP BY CodPostal HAVING COUNT(CodPostal) > 2;
em contraponto com:
SELECT CodPostal FROM Cliente WHERE COUNT(CodPostal) > 2
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
142
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
SQL embebido VS APIs
Definição de SQL
Comandos DDL
GROUP BY e HAVING
O seguinte comando lista, para cada código postal, o número de clientes
que a ele estão associados (desde que exista mais do que um cliente):
SELECT CodPostal, COUNT(CodPostal) FROM Cliente
GROUP BY CodPostal HAVING COUNT(CodPostal) > 1;
CodPostal = 1500 (Total:2)
Cliente
Número
Nome
CodPostal
001
João
1500
Número
Nome
CodPostal
Nova tabela temporária
001
João
1500
CodPostal
COUNT(CodPostal)
056
Luis
1500
1500
2
2100
2
1300
1
CodPostal = 2100 (Total:2)
013
Ana
2100
Número
Nome
CodPostal
056
Luis
1500
013
Ana
2100
001
Paula
2100
001
Paula
2100
011
Nuno
1300
CodPostal = 1300 (Total:1)
Número
Nome
CodPostal
011
Nuno
1300
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Resultado Final
CodPostal
COUNT(CodPostal)
1500
2
2100
2
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Agregação
As funções de agregação retornam resultados (um número) após a
efectivação de cálculos baseados em múltiplas linhas. Basicamente
combina múltiplas linhas num só número;
Nome
AVG
Count
MAX
MIN
SUM
Descrição
Média de um grupo de valores
Conta o número total de linhas de um dado conjunto
Retorna o valor máximo de uma coluna
Retorna o valor mínimo de uma coluna
Faz a soma dos valores de uma dada coluna
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
143
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Agregação
Retorna o total de registos de clientes:
SELECT COUNT(*) FROM Cliente;
Devolve o total de clientes com o código postal conhecido:
SELECT COUNT(CodPostal) FROM Cliente;
O segundo comando é equivalente ao seguinte:
SELECT COUNT(*) FROM Cliente WHERE CodPostal IS NOT NULL;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Agregação
O comando que de seguida se apresenta retorna o maior bilhete de identidade
existente:
SELECT MAX(Bi) FROM Cliente;
Caso pretendêssemos visualizar o nome desse cliente, não poderíamos
simplesmente acrescentar o atributo nome à cláusula SELECT. Sempre que
existe uma função de agregação na cláusula SELECT, todos os restantes
atributos da cláusula têm que estar incluídos na cláusula GROUP BY:
SELECT MAX(Bi), NOME FROM Cliente GROUP BY Nome;
No entanto, o resultado do comando seria a listagem de todos os nomes com a
indicação do BI associado a cada nome. As Subqueries resolvem este problema.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
144
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Row-Level
Enquanto as funções de agregação operam em múltiplas linhas retornando um
valor, as funções row-level trabalham com linhas (uma a uma);
Nome
ABS
CEILING
FLOOR
ISNULL
NULLIF
ROUND
Descrição
Retorna um valor absoluto
Retorna o valor inteiro mais à direita
Retorna o valor inteiro mais à esquerda
Retorna o valor verdadeiro se o campo contiver o valor nulo
Retorna nulo se uma dada condição ocorrer numa expressão
Arredonda os números para um número específicado de
casas decimais
STR
Converte um número para um caracter
SQRT
Retorna a raiz quadrada de valores positivos
SQUARE Retorna o quadrado de um número
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Row-Level
Uma função row-level pode ser usada para realizar operações aritméticas numa
coluna. Por exemplo se quisermos visualizar o código postal e adicionar-lhe o
valor de 1000:
SELECT codPostal, codPostal + 1000 as CodPostal1000
FROM Cliente;
A função round arredonda os números para um dado número de casas decimais:
SELECT codPostal, round((codPostal/45),2) AS arred
FROM Cliente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
145
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Row-Level
O NULL presente numa linha, provoca que a devolução de um calculo seja
sempre NULL. Para evitar essa situação é possível usar a função ISNULL,
determinando que os nulos ajam como zeros ou qualquer outro valor especificado:
SELECT nome, ISNULL (codpostal, 0) + 1000
FROM Cliente;
A função NULLIF retorna NULL se expressão1 = expressão2. Se as expressões
não forem iguais, nesse caso a expressão1 é devolvida. Por exemplo se
quisermos ver se o código postal = 6200
SELECT nome, codpostal = NULLIF (codPostal, 6200)
FROM Cliente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Strings
Existem definidas um conjunto de funções que operam sobre strings:
Nome
Descrição
CHARINDEX Retorna a posição inicial de um padrão especificado
LEFT
Retorna com base numa string o conjunto de caracteres
(especificado) mais à esquerda
LEN
Retorna o tamanho de uma string
LIKE
Faz uma comparação de acordo com um determinado
padrão
LOWER
Devolve uma string em minúsculas
RIGHT
Retorna com base numa string o conjunto de caracteres
(especificado) mais à direita
RTRIM
Remove espaços brancos à direita
SUBSTRING Retorna parte de uma string
UPPER
Devolve uma string em maiúsculas
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
146
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Strings
A manipulação de strings requere muitas das vezes a concatenação com outras
strings. Suponha-se que queremos concatenar cada um dos nomes da tabela
clientes com a palavra Esq:
SELECT nome + ‘Esq’
FROM Cliente;
Suponha-se agora que queremos adicionar à esquerda (ou à direita) de nome
um conjunto de pontos
SELECT (‘……’ + nome)
FROM Cliente;
Suponha-se que queremos retornar parte de uma string (as strings em SQL
Server são numeradas a partir do 1):
SELECT nome, SUBSTRING (nome, 2, 4)
FROM Cliente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Strings
A função Left devolve os valores mais à esquerda da string
SELECT nome, LEFT (nome, 3)
FROM Cliente;
A função LTRIM remove os espaço em branco à esquerda
SELECT LTRIM (‘
Ricardo’)
/* Note-se que não houve necessidade de utilizar a clausula from */
A função CHARINDEX a posição inicial que cumpra um determinado padrão.
Por exemplo, se quisermos encontrar a primeira letra o:
SELECT CHARINDEX (‘o‘, nome)
FROM cliente
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
147
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Strings
Para devolver todos os nomes da tabela cliente em maiúsculas:
SELECT UPPER(nome)
FROM Cliente;
Para devolver o tamanho (em termos de caracteres) de uma dada string
SELECT LEN(nome)
FROM Cliente;
A utilização de caracteres em conjunção com a função like (admite o operador
NOT). Por exemplo todos os nomes começados por R
SELECT nome
FROM Cliente
WHERE nome LIKE ‘R%’
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Strings
Para encontrar um determinado carácter utiliza-se []. Por exemplo, para
encontrar todos os nomes da tabela Cliente que comecem com R ou P e que
terminem em icardo
SELECT nome
FROM Cliente
WHERE nome LIKE ‘[RP]icardo’
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
148
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Strings
WildCards
Pesquisa
‘a%s’
Descrição
Qualquer string começada
obrigatoriamente por a e
terminada por s
‘a_s’
String formada por 3 caracteres,
começada por a e terminada por s
‘al%’
String começada obrigatoriamente
por al
‘[abc]%’
Qualquer string começada
obrigatoriamente por a, b ou c
‘[0-9]%[abc]’ String começada por um dígito e
terminada pelo caracter a, b ou c
‘Al[m-r]%’
String começada por Al. O 3.º
caracter terá que estar entre m e r
(m,n,o,p,q,r). Depois pode
aparecer qualquer string
Exemplo
As, almas, aBs, aas,
aAs
aBs, aAs, aas, ass
Al, all, alface,
almodovar
Arvore, bola, cão
99778a, 8b
Almodovar,
Alpendre,
alma,
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Data
A utilização dos tipos DATETIME e SMALLDATETIME permite a utilização de
um conjunto de funções:
Nome
DATEADD
DATEDIFF
DATEPART
DAY
GEtdATE
MONTH
SET DATEFORMAT
YEAR
Descrição
Adiciona uma parte específica da data
Retorna a diferença entre duas datas
Retorna uma parte específica da data solicitada
Extrai o dia de uma data
Retorna a data e a hora do sistema
Extrai o mês de uma data
Modifica o formato no qual o SQL Server lê as datas.
Extrai o ano de uma data
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
149
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Data
Vamos primeiro criar uma tabela
CREATE TABLE DateTable
(aniversario SMALLDATETIME,
dataEntradaEscola SMALLDATETIME,
nome VARCHAR(20))
Inserir valores na tabela:
INSERT INTO DateTable VALUES ('10-oct-01', '12/01/2006', ‘Ricardo')
Observe-se a forma como os valores ficam dispostos
SELECT *
FROM DateTable
A função DATEADD adiciona 2 dias ao aniversário (onde dd é dia, mm mês e yy
ano:
SELECT nome, DATEADD(dd, 2, aniversario)
FROM DateTable
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Data
A função DATEDIFF devolve a diferença entre duas datas:
SELECT nome, DATEDIFF (yy, aniversario, dataentradaescola)
FROM DateTable
A função DATEPART devolve uma parte específica da data:
SELECT nome, DATEPART (mm, aniversario)
FROM DateTable
A função DAY devolve o dia de um determinado mês
SELECT nome, DAY (aniversario)
FROM DateTable
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
150
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Funções de Data
A função GETDATE devolve a data e a hora actual do sistema:
SELECT GETDATE()
Inserir valores na tabela com recurso a funções:
INSERT INTO DateTable VALUES (GETDATE(), GETDATE( )+1, ‘Ana')
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Outras Funções
Este slide fala de outras funções de carácter bastante útil que ajudam a
seleccionar linhas a partir de um conjunto grande de resultados:
Nome
Descrição
DISTINCT Omite linhas duplicadas
PERCENT Retorna uma determinada percentagem de registros
de acordo com um valor especificado
TOP
Retorna um número específico de registros do início
dos resultados
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
151
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Outras Funções
Suponhamos que queremos devolver os dois primeiros nomes da tabela clientes:
SELECT TOP 2 nome
FROM cliente
Suponhamos agora que queremos devolver os dois primeiros nomes da tabela
clientes que “caiam” dentro da seguinte cláusula: “codpostal ordenado por
ordem ascendente”:
SELECT TOP 2 nome
FROM cliente
ORDER BY codPostal ASC
Uma vez que não existe o comando BOTTOM podemos simulá-lo:
SELECT TOP 2 nome
FROM cliente
ORDER BY codPostal DESC
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Outras Funções
Percent devolve uma determinada percentagem que caiem dentro de uma
determinada condição. Por exemplo a próxima query devolve 10% dos nomes da
tabela cliente baseada na ordenação dos nomes
SELECT TOP 10 PERCENT nome
FROM cliente
ORDER BY nome ASC
Tal como já vimos, a função Distinct omite linhas duplicadas. Assim se não
quisermos devolver nomes duplicados (caso eles existam):
SELECT DISTINCT nome
FROM cliente
A função pode funcionar com funções de agregação:
SELECT COUNT(DISTINCT nome)
FROM cliente
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
152
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Subqueries
Uma das características do comando SELECT reside no facto do comando
não devolver dados, linhas ou colunas, mas….uma tabela;
Isto é particularmente visível no facto de serem sempre atribuídos nomes às
colunas resultantes de um SELECT;
Sendo o resultado de qualquer comando SELECT uma tabela, podemos
então utilizar os resultados devolvidos nessa tabela e incorporá-los noutro
comando SELECT que deles necessite;
Em termos práticos, uma subquery é um comando SELECT dentro de um
comando SELECT e normalmente liga-se a outro através da cláusula
WHERE.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Subqueries
Considere o seguinte modelo relacional:
Alunos (numAluno, nome, morada, sexo);
Disciplinas (codDisciplinas, designação, créditos);
Exames (numAluno, codDisciplinas, data, nota, local).
Obter a nota máxima alcançada pelos alunos independentemente da
disciplina:
SELECT MAX (EXAMES.Nota) AS NOTA_MAXIMA
FROM Exames;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
153
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Subqueries
Suponha-se que da execução da tabela anterior obtemos o valor de 16.
Admita-se agora que pretendíamos obter uma tabela com os nomes dos
alunos que tinham obtido essa nota máxima
SELECT ALUNOS.nome, EXAMES.nota
FROM ALUNOS, EXAMES
WHERE ALUNOS.numAluno = EXAMES.numAluno and EXAMES.nota = 16
O inconveniente da query anterior resulta do facto de ter de se incluir o
valor fixo 16, o que provoca grande inflexibilidade.
Uma solução mais elegante passa por criar uma subquery, utilizando o
resultado da query que retorna o valor da nota máxima como input para
a query que selecciona os alunos que obtiveram essa nota máxima:
SELECT DISTINCT ALUNOS.nome, EXAMES.nota
FROM ALUNOS, EXAMES
WHERE ALUNOS.numAluno = EXAMES.numAluno and
EXAMES.nota = (SELECT MAX(EXAMES.nota) AS NOTA_MAXIMA FROM EXAMES);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Subqueries
As subqueries também podem ser colocadas nas cláusula SELECT.
Devolve, para cada cliente, o total de facturas associadas:
SELECT Nome, (SELECT COUNT(*) FROM Factura
WHERE Factura.BI = Cliente.BI)
FROM Cliente;
As subqueries também podem ser colocadas nas cláusula FROM.
SELECT DISTINCT Nome
FROM (Select * From Cliente) as Cliente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
154
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Subqueries
Ao utilizar os operadores, o resultado do SELECT interior deverá devolver
apenas uma única linha, de tal forma que a comparação possa ser realizada.
Caso contrário obtém-se um erro;
A forma como os sistemas executam as Queries depende do tipo de Query em
que se está em presença. Estas podem classificar-se como Correlacionadas ou
Não-Correlacionadas;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Subqueries Não-Correlacionadas
Numa query não-correlacionada o SELECT interior não depende do SELECT
exterior:
SELECT Nome
FROM pessoa
WHERE salario = (SELECT min(salario)
FROM pessoa)
Neste caso, como o SELECT interior não depende do SELECT exterior, é
executado em 1.º lugar e apenas uma única vez;
Assim, o SELECT exterior depende do resultado devolvido pelo SELECT
interior. O sentido da execução é de dentro para fora, ou seja, em primeiro
lugar é executada a query interior;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
155
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Subqueries Correlacionadas
Numa query correlacionada o SELECT interior depende dos dados que lhe são
fornecidos pelo SELECT exterior, o qual reduz o conjunto de registos
considerados no SELECT interno:
SELECT Nome, salario
FROM pessoa P
WHERE salario < (SELECT sum(valor)
FROM comissao C
WHERE C.id = P.id) * 15
Neste caso, para cada Pessoa estudada no SELECT exterior, é executado o
SELECT interior calculando o total das comissões que estão associadas ao Id a
que pertence o salário;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Subqueries Correlacionadas e Não-Correlacionadas
Resumo:
Sentido da Execução
Dependência da
Query Interior
Execução da Query
Interior
Query Não-Correlacionada
Do Interior para o Exterior
Não depende da query
exterior
Uma única vez
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Query Correlacionada
Do Exterior para o
Interior
Depende da query
exterior
Tantas vezes quantas as
executadas pela query
exterior
Bases de Dados
156
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
IN
O operador IN (que pode incluir o operador NOT) é normalmente utilizado nas
subqueries. Devolve verdade quando um elemento pertence a um conjunto.
Obter a lista dos alunos que fizeram exame à disciplina 1. Existem pelo
menos duas formas de executar esta query:
SELECT ALUNOS.numAluno
FROM ALUNOS, EXAMES, DISCIPLINAS
WHERE ALUNOS.numAluno = EXAMES.numAluno and EXAMES.codDisciplinas =
Disciplinas.codDisciplinas and Disicplinas.codDisciplinas = ‘1’;
A alternativa consiste em criar uma subquery utilizando o predicado IN.
Cria-se uma query destinada a retornar uma tabela com o número dos
alunos que tenham feito exame à disciplina 1:
SELECT EXAMES.numAluno
FROM EXAMES, DISCIPLINAS
WHERE EXAMES.codDisciplinas = DISCIPLINAS.codDisciplinas and DISCIPLINAS.codDisciplinas = ‘1’;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
IN
A lista retornada por esta query pode ser utilizada como input para uma
query que seleccione o nome dos alunos da tabela ALUNOS com base
no seguinte: só serão seleccionados os alunos que façam parte da lista
(IN) da query anterior:
SELECT ALUNOS.nome
FROM ALUNOS
WHERE ALUNOS.numAluno IN (SELECT EXAMES.numAluno FROM EXAMES, DISCIPLINAS
WHERE EXAMES.codDisciplinas = DISCIPLINAS.codDisciplinas and
DISCIPLINAS.codDisciplinas = ‘1’);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
157
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
NOT IN
Pretende-se obter a lista com o nome dos alunos que tenham realizado
exame a pelo menos uma disciplina:
SELECT ALUNOS.nome
FROM ALUNOS
WHERE ALUNOS.numAluno IN (SELECT EXAMES.numAluno FROM EXAMES);
Para obter a lista com o nome dos alunos que não fizeram exame a
nenhuma disciplina:
SELECT ALUNOS.nome
FROM ALUNOS
WHERE ALUNOS.numAluno NOT IN (SELECT EXAMES.numAluno FROM EXAMES);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
EXISTS
O operador EXISTS (que pode incluir a palavra NOT) devolve verdade
caso a subquery retorne pelo menos uma linha e falso se a subquery é
vazia.
Quando se utiliza o operador EXISTS os nulos contam, porque os nulos
existem embora não correspondam a nenhum dado concreto.
Considere-se que se pretendia obter uma listagem com os nomes dos
alunos que realizaram exame no local UBI
SELECT DISTINCT ALUNOS.nome
FROM ALUNOS, EXAMES
WHERE EXAMES.numAluno = ALUNOS.numAluno and EXAMES.local = ‘UBI’;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
158
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
EXISTS
Uma alternativa é utilizar o operador EXISTS (para toda a linha
retornada na subquery, portanto retorna True, Alunos.nome vai ser
impresso)
SELECT ALUNOS.nome
FROM ALUNOS WHERE EXISTS (SELECT * FROM EXAMES WHERE EXAMES.numAluno =
ALUNOS.numAluno and EXAMES.local = ‘UBI’);
O operador EXISTS apenas selecciona as linhas da tabela que fazem
com que a sub-query correspondente retorne linhas, ou seja,
SELECT…EXISTS corresponde a SELECT….WHERE TRUE
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos SQL para Privilégios
Sinónimos
Store Procedures
EXISTS
Quando se usa este operador a query interna costuma referir-se à query
externa. Deste modo, é um operador muito lento pois para cada linha da
query externa tem de calcular o resultado da query interna. Por exemplo
para a quey anterior:
SELECT ALUNOS.nome
FROM ALUNOS WHERE EXISTS (SELECT * FROM EXAMES WHERE EXAMES.numAluno =
ALUNOS.numAluno and EXAMES.local = ‘UBI’);
Teriamos o seguinte loop:
LOOP1: For each row in Alunos A DO
LOOP2: For each row in EXAMES E DO
IF (E.numAluno = A.numAluno) THEN
IF (E.local = ‘UBI') THEN TRUE
END LOOP2;
IF TRUE, THEN student row is SELECTed
END LOOP1;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
159
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
ALL e ANY
Os operadores ALL (todos) e ANY (pelo menos um) também são
frequentes nas subqueries.
Admita-se que se pretende obter uma listagem com o nome dos alunos
que tenham obtido alguma nota superior a 12.
SELECT ALUNOS.nome
FROM ALUNOS
WHERE ALUNOS.numAluno = ANY (SELECT EXAMES.numAluno FROM EXAMES WHERE
EXAMES.nota > 12);
A query seguinte vai retornar o número e o nome do aluno que obteve a
classificação mais elevada, utilizando o predicado ALL:
SELECT ALUNOS.numAluno, ALUNOS.nome
FROM ALUNOS
WHERE ALUNOS.numAluno = ALL (SELECT EXAMES.numAluno FROM EXAMES WHERE
EXAMES.nota = (SELECT MAX (EXAMES.nota) FROM EXAMES));
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
UPDATE
Um comando UPDATE para alteração de linhas obedece à seguinte
estrutura:
UPDATE tabela a alterar
SET coluna a alterar = expressão
WHERE expressão lógica que indica quais as linhas que pretendemos alterar
Transforma a designação da disciplina de Informática para Inf:
UPDATE Disciplinas SET designação = ‘INF’
WHERE designação = ‘Informática’;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
160
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
DELETE
Um comando DELETE para anulação de linhas obedece à seguinte
estrutura:
DELETE FROM tabela a anular
WHERE expressão lógica que indica quais as linhas que pretendemos alterar
Apaga os códigos postais 1200:
DELETE FROM CódigoPostal
WHERE CodPostal = ‘2300’;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
TRUNCATE
Para eliminar todas as linhas de uma dada tabela (mantendo a sua
estrutura), utiliza-se o comando TRUNCATE em vez do DELETE,
uma vez que o primeiro é bastante mais rápido:
TRUNCATE TABLE CódigoPostal;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
161
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
INSERT
Através do comando INSERT podem-se inserir uma ou várias linhas em
simultâneo. Para inserir uma linha um comando INSERT obedece à
seguinte estrutura:
INSERT INTO tabela a inserir (colunas onde vão ser inseridos os valores)
VALUES (valores a inserir)
Para inserir um conjunto de linhas, um comando INSERT obedece à seguinte
estrutura:
INSERT INTO tabela a inserir (colunas onde vão ser inseridos os valores)
SELECT valores a inserir
FROM ...
INSERT INTO ALUNOS (numAluno, nome, morada, sexo) VALUES (9809, ‘Paula’, ‘Rua E’, ‘F’);
INSERT INTO Alunos (numAluno, nome, morada, sexo)
SELECT 4398, nome, morada, NULL FROM Cliente where nome = ‘Isabel’;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
INSERT
Suponha-se que temos um ficheiro de texto preenchido com um conjunto
de valores que queremos inserir numa tabela:
3422, 3, 6/10/2007, 9€
3423, 8, 6/10/2007, 3,5€
3424, 1, 6/10/2007, 12,25€
Essa situação é por exemplo possível no SQL Server com recurso ao
comando Bulk Insert:
BULK Insert Vendas FROM ‘C:\ficheiro.txt’
WITH (DATAFILETYPE = ‘char’, FIELDTERMINATOR = ‘,’)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
162
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Comandos SQL para administração de privilégios
O acesso aos objectos é controlado através de privilégios:
-Direito a ligar-se à base de dados;
-Direito a criar tabelas;
-Direito a visualizar tabelas de outros utilizadores……
Privilégios de sistema (administrador e aos programadores)
Privilégio para executar determinada acção ou para aceder/manipular
determinado tipo de objecto (direito a criar tabelas, apagar linhas de
qualquer tabela, etc…)
Privilégios de objecto (utilizadores finais)
Privilégio para executar determinada acção sobre um objecto específico
(apagar linhas da tabela Eleitor, inserir registos na tabela Sócio, etc…)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
GRANT (concede privilégios)
GRANT privilégios ON objecto TO utilizador
Privilégios
Objecto
SELECT
Dados numa tabela ou vista
INSERT
Registos numa tabela ou vista
UPDATE
Registos ou colunas numa tabela ou vista
DELETE
Registos numa tabela ou vista
ALTER
Definição de colunas numa tabela
INDEX
Índice para uma tabela
REFERENCES Referências a uma tabela
ALL
Todos os privilégios
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
163
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
GRANT (concede privilégios)
Conceder a Filipe o privilégio de executar SELECT na tabela Eleitor:
GRANT
SELECT
ON
ELEITOR
TO
FILIPE;
Conceder a Filipe o privilégio de executar colunas específicas:
GRANT
UPDATE (NOME, MORADA)
ON
ELEITOR
TO
FILIPE;
Conceder privilégios de INSERT e UPDATE a dois utilizadores:
GRANT
INSERT, UPDATE
ON
ELEITOR
TO
FILIPE, SOUSA;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
GRANT (concede privilégios)
Quando um utilizador recebe um privilégio não recebe, autorização para
passar esse privilégio a outros. A cláusula WITH GRANT OPTION confere
autorização para passar o privilégio recebido:
GRANT
SELECT
ON
ELEITOR
TO
FILIPE
WITH
GRANT OPTION;
Permite ao dono de uma tabela conceder acesso a todos os utilizadores
com um único comando:
GRANT
SELECT
ON
ELEITOR
TO
PUBLICO;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
164
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
REVOKE (retira privilégios)
REVOKE privilégios ON tabela/vista FROM utilizadores
Retira a Filipe todos os privilégios sobre a tabela Eleitor:
REVOKE
ALL
ON
ELEITOR
FROM
FILIPE;
Retira a todos os utilizadores o privilégio Insert na tabela Eleitor:
REVOKE
INSERT
ON
ELEITOR
FROM
PUPLIC;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Utilização de Sinónimos
Uma possibilidade de nos referirmos a uma tabela, é através de aliases com
já vimos anteriormente:
SELECT c.dname FROM cliente c
Acontece que os aliases não são permanentes uma vez que não existem
após a execução da query;
Assim, uma forma alternativa de nos referirmos a uma tabela é através da
utilização de sinónimos os quais estão disponíveis até serem apagados;
Sinónimos são normalmente nomes pequenos que podem ser usados em
vez do nome da tabela:
CREATE SYNONYM synonym_name
FOR Table_name
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
165
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Utilização de Sinónimos
Por exemplo, para criar um sinónimo para a tabela cliente com o nome C:
CREATE SYNONYM c
FOR Cliente
Para seleccionar os valores da tabela Cliente:
SELECT *
FROM c
Para eliminar um sinónimo:
DROP SYNONYM c
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Definição de Store Procedures
Os Stored Procedures (SP) são procedimentos SQL compilados e
armazenados junto da base de dados. Trata-se da forma mais eficiente
de executar comandos SQL;
Para além dos comandos SQL é possível utilizar as habituais primitivas de
controlo (If, While), os habituais operadores lógicos e variáveis. Trata-se no
entanto de uma linguagem simples que não substitui as linguagens
procedimentais (C, Java, etc.);
É possível passar parâmetros para um SP, assim como um SP retornar
valores (nomeadamente o resultado de comandos SELECT). Os SP podem
ser chamados dentro de um comando SELECT ou a partir de uma linguagem
procedimental (através da primitiva CALL).
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
166
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Definição de Store Procedures
create procedure dba.getPubAno(in Par_Ano integer)
result(ISBN integer,Titulo long varchar)
begin
select ISBN,Titulo from Pub where Data = Par_Ano
end
O seguinte comando retorna as publicações de 2000:
CALL getPubAno(2000);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
PL/SQL
Linguagem procedimental proprietária da oracle, com facilidades acrescidas
na manipulação de dados.
Compilado e executado local ou remotamente
Estrutura base de um bloco PL/SQL:
Secção declarativa.
Secção de execução.
Secção de tratamento de excepções.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
167
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
T_SQL (Transact SQL)
A ANSI (American National Standards Institute) é a organização que define
e mantém o SQL como uma linguagem standard. Existem no entanto
algumas diferenças entre o standard e as reais necessidades, razão pela
qual a maioria dos fornecedores de SGBDs incluiu extensões proprietárias
ao standard;
O Transact-SQL é linguagem específica do SQL Server usada para
estender as funcionalidades do SQL, e possui, para lá dos comandos de
manipulações de dados, tais como Select, Insert e Update, os comandos
que lhe permitem construir store procedures
Vamos acrescentar à base de dados onde se encontra a tabela Alunos o
seguinte store procedure:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
T_SQL (Transact SQL)
IF @contagem != 0
begin
CREATE PROCEDURE BuscaPessoa
@nome varchar(50)
AS
declare @pesquisa varchar(50)
select @mensagem =
convert(varchar,@contagem) +
' pessoas encontradas'
print @mensagem
declare @contagem int
select nome, morada, sexo
select @pesquisa = '%' + @nome + '%'
from Alunos
select @contagem = count(*)
where Nome LIKE @pesquisa
from Alunos
where Nome like @pesquisa
order by Nome
end
ELSE
declare @mensagem varchar(100)
begin
select @mensagem =
'Não foi encontrado "'+@nome+'"'
print @mensagem
end
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
168
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
T_SQL (Transact SQL)
A execução do store procedure vai solicitar um nome para pesquisa. É
produzido um resultado e uma mensagem de acordo com o valor
introduzido:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Triggers
Os triggers são procedimentos armazenados junto da base de dados que
são associados a eventos que ocorrem nas tabelas;
Através dos triggers o motor de base de dados reage automaticamente quando
esses eventos (alterações dos dados nas tabelas) ocorrem;
A forma como reagem é definida pelo procedimento associado ao trigger (um
trigger apenas pode estar associado a um evento de uma tabela);
Os eventos aos quais podem se associar os triggers: Insert, Update, Delete e
Update Of (para cada um deles é necessário discriminar se o evento ocorre
antes ou depois da operação terminar);
Os triggers podem ainda ser row-level ou statement-level. Os triggers rowlevel ocorrem após cada linha da tabela ser alterada (anulada ou inserida). Os
triggers statement-level ocorrem após uma operação sobre a tabela ser
concluída (por exemplo, após um conjunto de registos ser inserido).
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
169
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Triggers
O procedimento associado ao trigger obedece no essencial à mesma sintaxe
que os SP.
Vamos primeiro criar as tabelas para o exemplo:
create table factura
(NumFactura numeric(10) primary key,
ValorTotal numeric(10,2) default (0) )
create table produto
(codProduto int primary key,
preco real default (0) )
create table ItemFactura
(NumFactura numeric(10) foreign key references factura,
CodProduto int foreign key references produto,
Qtd int not null check (Qtd > 0),
primary key (NumFactura,CodProduto)
)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Álgebra Relacional
Linguagem SQL
Bases de Dados
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Triggers
Exemplo: Quando for excluída uma factura (tabela factura) todos os seus
itens (tabela ItemFactura) serão excluídos:
create trigger ExclusaoFactura
on Factura for delete
as
delete from ItemFactura
where NumFactura in (select NumFactura from deleted)
Na exclusão, as linhas da tabela são removidas e colocadas na tabela
virtual deleted, que tem a mesma estrutura da tabela principal. Um
gatilho para exclusão pode consultar deleted para saber quais as linhas
excluídas.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
170
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Definição de SQL
Comandos DDL
Comandos DML
Comandos SQL para Privilégios
Sinónimos
Store Procedures
Triggers
Exemplo: Sempre que for incluído um item (tabela ItemFactura) a coluna
valorTotal da factura (tabela factura) deverá ser actualizada:
create trigger InclusaoItemFactura
on ItemFactura for insert
as
if not exists (select * from
inserted, Factura
where inserted.NumFactura =
Factura.NumFactura)
update Factura
set ValorTotal = ValorTotal
+ (select i.Qtd * p.Preco
from produto p, inserted i
where p.CodProduto = i.CodProduto)
where NumFactura = (select NumFactura from inserted)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Transacções, Recuperação
e Optimização
Ricardo Campos ([email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
171
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Sumário
Sumário
Transacções, Recuperação e Optimização
Definição de Transacção;
Tipos de Transacção;
Concorrência de Transacções;
Definição de Recuperação e Tolerância a Falhas;
Mecanismos de Recuperação;
Tipos de Falhas;
Definição de Índices;
Considerações sobre os índices;
Estrutura Interna de um Índice;
Monitorização;
Hashing;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Definição de Transacção
Uma transacção consiste num conjunto de acções originadas por um utilizador
ou aplicação que, como um todo, acedem a uma base de dados para
consultar ou modificar o seu conteúdo;
Trata-se de uma unidade de trabalho que só pode ser executada na totalidade;
A componente de gestão de transacções garante que a base de dados se
mantém num estado consistente (correcto) apesar de falhas no sistema (explo:
falta de energia eléctrica, problemas com o sistema operativo) e de
transacções falhadas;
CONTA
A
CONTA
B
Débito 100
Crédito 100
BD
Inconsistente
Falha no sistema
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
172
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Características da Transacção
A transacção exibe as seguintes características:
Atomicidade
Grupo indivisível (todas ou nenhuma).
Integridade
Passar de um estado de integridade para outro.
Isolamento
Uma transacção deve ser executada como se fosse única. Ou seja, num
ambiente concorrente não pode haver interferências entre as
transacções. O resultado final deve ser equivalente a uma execução em
série (não concorrente).
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Comandos de Transacção
COMMIT – actualização permanente na BD das alterações efectuadas desde o
ultimo commit ou início de transacção. O COMMIT torna definitivas as
transacções efectuadas durante a transacção.
ROLLBACK – desfaz todas as alterações desde o último commit ou início de
transacção.
ROLLFORWARD – refaz tudo como estava anteriormente
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
173
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Flat Transactions
Existe apenas um nível de controlo:
BEGIN TRANSACTION
…………
<operações sobre bases de dados>
…………
END TRANSACTION
/* faz o COMMIT da transacção */
O End Transaction faz automaticamente o COMMIT.
Caso a transacção termine abruptamente antes do End Transaction é feito
automaticamente o ROLLBACK, o que nem sempre é adequado. Por
exemplo, se estiver a ser feito o Update a milhares de registos, caso a
transacção falhe a meio, o ROLLBACK desfaz tudo desde o início.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Save Points (rollback / rollforward)
Existem pontos temporários (save points) até onde uma transacção poderá
desfazer (rollback)/ refazer(rollforward) em casos de falha.
Os savepoints guardam as alterações efectuadas até esse ponto da execução
da transacção. Usado para dividir uma transacção em partes mais pequenas.
BEGIN TRANSACTION
….
<operações sobre a base de dados>
….
SAVE POINT <x>
….
<operações sobre a base de dados>
….
SAVE POINT <y>
….
<operações sobre a base de dados>
….
END TRANSACTION
/* Faz o COMMIT da transacção */
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
174
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Save Points (rollback / rollforward)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Save Points (rollback / rollforward)
Os savepoints não terminam a transacção, apenas guardam as alterações
efectuadas. Desta forma, antes do commit, é possível recuar até qualquer
ponto da transacção (savepoint) e reiniciar a partir daí.
Em relação às Flat Transactions, o ROLLBACK desfaz menos, mas a
transacção exige mais recursos (memória e processamento).
Úteis em transacções muito longas.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
175
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Save Points (rollback / rollforward)
INSERT INTO ELEITOR (BI, NOME, MORADA, NumELEITOR)
VALUES (4537687, Ricardo, RuaA, 123);
SAVEPOINT INSERÇÃO_CONCLUIDA;
UPDATE ELEITOR
SET NOME = “Ricardo Nuno”, BI=4537688;
ROLLBACK TO INSERÇÃO_CONCLUIDA
(anula comando da actualização)
UPDATE ELEITOR
SET NOME = “Ricardo Nuno”, BI=4537688
WHERE NumELEITOR = 123);
COMMIT;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Chained Transactions (commit point)
As chained transactions são similares às transacções com savepoints. No
entanto, enquanto um savepoint marca apenas um ponto intermédio, a partir da
qual é possível refazer a transacção ou até onde a transacção pode ser desfeita,
nas chained transactions estes pontos correspondem a commits, formando uma
só transacção com vários commits intermédios.
BEGIN TRANSACTION
….
<operações sobre a base de dados>
….
COMMIT POINT
….
<operações sobre a base de dados>
….
COMMIT POINT
….
<operações sobre a base de dados>
….
END TRANSACTION
/* Faz o COMMIT final */
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
176
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Chained Transactions (commit point)
Apesar das transacções com savepoints permitirem um maior controlo e
uma maior flexibilidade sobre a amplitude dos processos de rollback e
rollforward, uma falha na transacção significa sempre o desfazer de toda a
transacção.
Pelo contrário as chained transactions, apesar de não serem tão flexíveis nos
processos de rollback e rollforward, em situações de falha evitam perder toda a
transacção, mantendo todo o trabalho realizado até ao último ponto de commit.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Nested Transactions
É o tipo de transacção mais flexível.
Nested transaction é uma hierarquia de transacções.
As subtransacções ou são flat transactions ou nested transactions.
Cada uma destas subtransacções passa a ser uma transacção por si só,
podendo ser finalizada ou desfeita autonomamente em relação às outras
transacções.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
177
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Execução em Série e Execução Concorrente de Transacções
As transacções podem se executadas de duas formas:
Execução em Série;
As várias transacções submetidas ao sistema são executadas
sequencialmente, só se iniciando uma quando a anterior tiver finalizado.
Execução Concorrente
A execução de uma transacção é constituída por vários acessos de leitura
e escrita à base de dados;
Pode-se pensar em executar as várias transacções concorrentemente,
combinando e intercalando, quando possível, as suas operações de leitura
e escrita na base de dados.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Execução em Série e Execução Concorrente de Transacções
T1, T2, T3 e T4 são 4 transacções submetidas ao sistema
Ts – tempo total de execução
Tc – tempo total de execução em concorrência
Ta – instante de tempo intermédio para comparação
Execução Série de Transacções
Execução Concorrente de Transacções
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
178
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Definição de Concorrência
Relaciona-se com a coordenação da partilha de dados por várias aplicações e
utilizadores;
Garante que cada utilizador ou aplicação interage com a base de dados como
se fosse o único a utilizar os seus serviços;
A unidade base de controlo da concorrência é a transacção;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Definição de Concorrência
Quando duas ou mais transacções são executadas concorrentemente (por
oposição a acederem em série) podem surgir problemas decorrentes de
interferências entre si, com consequências ao nível da integridade da base de
dados:
Se todas as aplicações e utilizadores estão apenas a realizar operações
de consulta (leitura), os problemas da concorrência não se põem;
Só acontecem quando duas ou mais transacções acedem aos mesmos
dados envolvendo, pelo menos uma delas, a execução de modificações;
É necessário definir procedimentos e utilizar mecanismos que impeçam
duas transacções concorrentes de acederem simultaneamente, ao mesmo
conjunto de dados, envolvendo actualização dos mesmos.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
179
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Definição
Recuperação / Tolerância a Falhas
Tipos de Transacção
Concorrência
Índices
Definição de Concorrência
Exemplos de execuções
Transacção T1
Transacção T2
Ler saldo
Ler saldo
Saldo = Saldo - 100
Saldo = Saldo - 400
Escrever Saldo
Escrever Saldo
Execução em série
Execução concorrente
Tempo
Operação
Saldo
Tempo
Operação
Saldo
1
T1 Ler saldo
1000
1
T1 Ler saldo
1000
2
T1 Escrever Saldo
900
2
T2 Ler Saldo
1000
3
T2 Ler Saldo
900
3
T2 Escrever Saldo
600
4
T2 Escrever Saldo
500
4
T1 Escrever Saldo
900
Estado da base de dados consistente
Estado da base de dados inconsistente
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Escalonamentos Serializados
Dado que os escalonamentos em série não tiram partido das potencialidades
multi utilizador, a solução é encontrar um escalonamento serializado, isto é,
um escalonamento concorrente que, após o seu término, a base de dados
fique num estado idêntico ao que teria ficado caso o escalonamento fosse em
série.
Existem 3 métodos de controlo de concorrência que automaticamente
asseguram escalonamentos serializados:
Optimistas;
Mecanismos de Etiquetagem (preventivo);
Mecanismos de locking (preventivo).
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
180
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Escalonamentos Serializados
Optimistas
Parte do pressuposto que as interferências são raras. Deixa ocorrer as
transacções até ao fim, e depois verifica se o commit não traz problemas de
serialização. Caso existam problemas, faz o rollback de tudo.
Mecanismos de Etiquetagem (preventivo)
Utilizam-se etiquetas que indicam a ordem de chegada das transacções. Os
dados acedidos (para leitura ou escrita) ficam com ID da etiqueta que lhe
acede.
Existe um conflito quando uma transacção tenta aceder a um elemento de
dados cujo valor de etiqueta é superior ao seu. Nesse caso é necessário
desfazer e reiniciar a transacção. Existem abordagens mais elaboradas com
etiquetas de leitura e escrita.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Escalonamentos Serializados
Mecanismos de locking (preventivo)
Mecanismo utilizado para controlar o acesso concorrente aos mesmos
dados;
Impede a actualização simultânea dos mesmos dados por dois ou mais
utilizadores;
Impede alterações na definição de uma tabela ou de uma coluna enquanto
estiverem a decorrer transacções que actualizem os dados da tabela ou
coluna;
Um lock (semáforo) é uma variável associada a um elemento da base de
dados que, de acordo com o seu valor em cada momento, vai permitir ou
impedir ser acedido. Antes de aceder a um elemento da base de dados, tanto
para leitura como para actualização, é necessário obter o lock desse elemento.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
181
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Escalonamentos Serializados
Um elemento da base de dados pode ter um de três estados:
lock para leitura;
lock para escrita;
unlocked.
A cada lock de leitura é necessário associar um valor que traduza o número de
transacções que, em cada momento, mantêm esse tipo de lock. O valor vai
sendo decrementado à medida que as transacções vão libertando o elemento
de dados.
Problemas de locks: deadlock. Quando transacções concorrentes lutam por
recursos na posse da sua concorrente, entrando-se num ciclo infinito de
espera.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Tipos de Transacção
Concorrência
Escalonamentos Serializados
Podem gerar-se impasses quando dois ou mais utilizadores tentam aceder aos
mesmos dados e cada utilizador fica à espera dos objectos detidos pelo outro
utilizador:
Transacção A
Transacção B
UPDATE FUNCIONARIOS
SET NOME = “Tiago”
WHERE NUM = 986;
UPDATE FUNCIONARIOS
SET SAL = SAL * 2
WHERE NUM = 1002;
UPDATE FUNCIONARIOS
SET NOME = “Raul”
WHERE NUM = 1002;
UPDATE FUNCIONARIOS
SET SAL = SAL * 2
WHERE NUM = 986;
Não se pode continuar
porque o registo do
funcionario NUM = 1002
está bloqueado pela
Transacção B
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Não se pode continuar
porque o registo do
funcionario NUM = 986
está bloqueado pela
Transacção A
Bases de Dados
182
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Escalonamentos Serializados
Como lidar com impasses?
Prevenir os impasses
Usa-se em sistemas em que a probabilidade de surgirem impasses é
elevada;
Detectar os impasses e recuperar dessa situação
Usa-se em sistemas em que a probabilidade de surgirem impasses é
é baixa;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Mecanismos
Tipos de Falhas
Definição de Tolerância a Falhas
Um sistema de bases de dados, como qualquer outro sistema, está sujeito à
ocorrência de falhas que podem por em causa a integridade da base de
dados;
A recuperação / tolerância de falhas é a actividade que tem por objectivo o
restaurar da base dados, após a ocorrência de uma qualquer falha, para um
estado de integridade garantido;
Os mecanismos de recuperação dos sistemas de bases de dados baseiam-se,
fundamentalmente, na utilização de formas de redundância que, na prática,
quase duplicam a própria base de dados
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
183
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Mecanismos
Tipos de Falhas
Mecanismos de Recuperação
Backups:
São cópias de segurança executadas periodicamente abrangendo toda a
base de dados
Transaction Logging
É o registo das operações efectuadas à base de dados por todas as
transacções posteriores ao último backup.
Enquanto o backup é um mecanismo de recuperação que permite actuar ao
nível de toda a base de dados, repondo-a por completo num estado passado,
o transaction log permite refazer as transacções ocorridas desde esse último
backup (rollforward).
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Mecanismos
Tipos de Falhas
Tipos de Falhas
Falha de disco
Falha mais grave;
Necessário reconstruir a base de dados através do backup e do
transaction log (rollforward);
Falha de sistema
Necessário fazer rollback até um estado válido;
Falha de transacção
Falha menos grave;
Recupera-se o estado anterior à transacção através do transaction log.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
184
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Porquê Índices?
Quando fazemos consultas numa tabela, seleccionamos registros com
determinadas propriedades. Dentro do conceito de álgebra relacional, estamos
a realizar uma simples operação de determinar um subconjunto de um
conjunto;
A forma trivial de realizar esta operação é avaliar cada um dos elementos do
conjunto para determinar se ele possui ou não as propriedades desejadas.
Ou seja, avaliar, um a um, todos os seus registros;
Em tabelas grandes, a operação descrita acima pode ser muito custosa.
Imaginemos que a tabela do serviço telefónico 118 contém 10 milhões de
registos e que queremos fazer uma pesquisa por nome. Se a lista não estiver
ordenada teremos que a percorrer na sua totalidade, processo que
certamente levará muito tempo;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Porquê Índices?
Fisicamente, a tabela não está organizada em nenhuma ordem. Os registros
são colocados na tabela pela ordem cronológica de inserção e as eliminações
ainda causam mudanças nesta ordem;
Tal ordem pode não ter nada a ver com a ordem de processamento que mais
tarde vamos efectuar;
Suponhamos que queremos processar a tabela de clientes ordenada por nome;
Nome
Morada
Morada1
Cidade
Ricardo
Rua A
Quinta
Covilhã
Nuno
Rua B
Covilhã
Ana
Rua C
Tomar
Carla
Rua D
Lisboa
A ordenação é um processo que
consome imenso tempo. E se a
tabela tiver 100.000 linhas? Ou
1.000.000?
Mesmo o melhor algoritmo de ordenação levará imenso tempo;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
185
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Acesso Aleatório VS Sequencial
No acesso aleatório a um ficheiro sequencial, caso a chave de acesso não
coincida com a chave de ordenação, só existem duas opções:
Ou se ordena o ficheiro segundo a chave de acesso que se pretende para
posteriormente executar a pesquisa, o que se torna inviável dado que
cada acesso ao ficheiro poderá ter de ser precedido por uma operação de
ordenação;
Ou se faz uma pesquisa sequencial ao ficheiro, o que, por princípio, não
parece ser muito razoável.
A solução será associar ao ficheiro de dados uma estrutura de acessos que
traduza eficientemente uma condição de pesquisa. Essa estrutura é designada
por ficheiro de índices e o seu objectivo é acelerar o acesso a uma tabela
através de um campo, ou seja, facilitar a procura de linhas dentro de uma
tabela, bem como garantir a unicidade dos dados.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Criação de Índices
Índices são o equivalente a um índice remissivo de um livro, pois permitem
localizar rapidamente a informação pretendida. Os índices são:
Uma estrutura onde todos os elementos de uma tabela estão organizados,
numa estrutura de dados eficiente, ordenados segundo algum critério;
Compostos pelo conjunto de valores dos campos que compõem o índice
e pelo endereço físico do registro na tabela;
Lógica e fisicamente independentes dos dados das tabelas a que estão
associados (a criação/eliminação) de índices não interfere com os dados
da tabela nem com a estrutura da base de dados;
Criados pelo utilizador através de comandos SQL
CREATE INDEX nomeIndice ON Empegados (nome);
Geridos automaticamente pelo sistema (em cada consulta (SELECT)
numa tabela com índices associados o sistema decide se usa ou não o
índice para aceder aos dados;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
186
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
Criação de Índices
A Indexação é pois a estrutura que permite simular a ordenação dos dados. Na
realidade consiste normalmente numa árvore de termos que revertem para uma
determinada posição no ficheiro ou tabela;
Uma Árvore Binária é uma estrutura em que, para cada um dos nós da árvore,
todos os nós à esquerda são menores ou iguais à chave de indexação e todos os
nós à direita são superiores à chave de indexação;
Em cada um dos nós vamos guardar a chave de indexação e a posição (registo)
da tabela
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
Criação de Índices
Suponha-se o seguinte conjunto de dados,
sobre o qual vamos criar um índice por nome:
Célia
António
Ana
Beatriz
Id
Nome
Apelido
2456
Célia
Gertrudes
4561
José
Lopes
6452
Florinda
Simões
1289
António
Dias
4978
Beatriz
Costa
3254
Ana
Rita
5698
Paulo
Viegas
José
Florinda
Paulo
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
187
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Definição
Recuperação / Tolerância a Falhas
Monitorização
Considerações
Estrutura Interna de um Índice
Índices
Hashing
Índices Únicos e de Performance
Índice Único
Índice criado a partir da chave primária, não permitindo a inclusão de
linhas duplicadas, ou seja, ao definir uma chave primária a coluna (ou
colunas) que constituem essa chave são automaticamente indexadas;
Índice de Performance
Facilita a procura de linhas na tabela.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
Ficheiros de Índices
Um ficheiro de índices é um ficheiro em que cada registo é constituído por 2
campos:
Um dos campos é a chave (correspondente à condição de pesquisa);
E o outro é um apontador correspondente ao endereço em disco onde se
encontra o registo de dados que satisfaz a pesquisa.
Ficheiro de Índice
Nome
Ana
Carla
Nuno
Ricardo
Ficheiro de Dados
Nome
Morada
Morada1
Cidade
Ricardo
Rua A
Quinta
Covilhã
Nuno
Rua B
Ana
Rua C
Tomar
Carla
Rua D
Lisboa
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Covilhã
Bases de Dados
188
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Ficheiros de Índices
A criação da tabela de índices permite percorrer sequencialmente o ficheiro de
índice, o qual através de um ponteiro aponta para a linha correspondente, factor
que permite uma performance quase tão rápida como se a operação fosse
realizada no ficheiro de dados;
A utilização de índices permite um tempo de processamento da tabela
proporcional a N, com N sendo o número de registos;
Sem a utilização de índices, o tempo de processamento para a mesma operação é
proporcional a N * log2 N.
Para tabelas pequenas a diferença é insignificante, mas para tabelas grandes é
muito significativo;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Ficheiros de Índices
Suponha-se que o processamento de cada linha consome 1 milisegundo.
Suponha-se que temos uma tabela com 1.000.000 registos (N = 1.000.000)
Se tivermos uma tabela de índice o processamento da tabela na sua totalidade
consome 1,000 segundos, menos de 17 minutos;
Sem um índice é necessário, aproximadamente, ir à tabela 1.000.000 * 20 (o 20
advêm de log2 1.000.000), o que representa 20,000 segundos (mais do que
5h30m)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
189
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
Ficheiros de Índices
O exemplo seguinte apresenta um ficheiro indexado constituído por um
ficheiro de dados de funcionários e dois ficheiros de índices, que
optimizam o acesso aleatório aos dados desses ficheiros segundo duas
chaves de indexação (pelo número de funcionário e pelo nome do
funcionário).
Ficheiro de Índice
Func
Ficheiro de Índice
Ficheiro de Dados
Nome
Func
Nome
0001
0005
Xavier
Alberto
0005
0015
Carlos
Carlos
0010
0001
Alberto
Manuel
0015
0010
Manuel
Xavier
O acesso quer por número de funcionário quer por nome, envolve uma
pesquisa sobre os respectivos ficheiros de índice, a que se seguirá, em
caso de sucesso, um acesso ao ficheiro de dados. Se não existissem
índices teria que ser feito um acesso sequencial ao ficheiro de dados.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
Ficheiros de Índices
É frequente consultar as publicações por assunto:
Ficheiro de Índice (ordenado
por assunto)
Tabela de Publicação
ISBM
Título
Data
Assunto
Direito
1
A
1998
História
História
2
D
1997
Informática
Informática
3
C
1994
Sociologia
Informática
4
Z
2000
Informática
Sociologia
5
F
1986
Direito
Assunto
Índice
Exemplos de interrogações que beneficiam do índice:
Quais os títulos das publicações de História ?
Mesmo que a maioria das publicações sejam de história, é mais rápido
percorrer sequencialmente um ficheiro mais pequeno;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
190
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Definição
Recuperação / Tolerância a Falhas
Monitorização
Considerações
Estrutura Interna de um Índice
Índices
Hashing
Ficheiros de Índices
Quantas publicações de informática existem?
Apenas necessita abrir o ficheiro de índice;
Suponha-se agora que se indexa o campo data.
Quais os títulos entre 1990 e 1998 ?
A ordenação do índice acelera muito a procura por intervalos.
Pode ser criado um índice para dois ou mais atributos (útil para quando
duas colunas são sempre pesquisadas em conjunto):
CREATE INDEX nomeIndice ON Publicacao (assunto,data);
Ficheiro de Índice
Tabela de Publicação
ISBN
Título
Data
Assunto
Direito+1986
1
A
1998
História
Informática+1997
2
D
1997
Informática
3
C
1994
Sociologia
4
Z
2000
Informática
5
F
1986
Direito
Assunto/Data
Índice
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Que tabelas se devem indexar?
Tabelas grandes (com muitos registos);
Tabelas em que as pesquisas sejam muito específicas (devolvam uma
percentagem pequena de registos, por exemplo <10%);
Tabelas relativamente estáticas em que a principal operação é a pesquisa
e as operações escritas são pouco frequentes.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
191
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Que colunas se devem indexar?
Colunas sobre as quais as aplicações fazem muitas pesquisa;
Chaves estrangeiras para acelerar as junções (notar que as chaves
primárias já estão indexadas);
Colunas em que a maioria dos valores são distintos (não faz muito
sentido indexar a coluna relativa ao sexo numa tabela de funcionarios);
Colunas com uma vasta gama de valores;
Colunas com muitos valores nulos, mas em que a maioria das pesquisas
procura apenas entre os valores não-nulos.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Que colunas se devem indexar?
Se uma coluna está presente na cláusula WHERE, num comando SELECT,
UPDATE ou DELETE, o SQL Server consegue verificar as condições mais
rapidamente se houver um índice. Caso contrário, ele faz uma varredura
sequencial da tabela [table scan].
Se uma coluna é muito usada para ordenar valores (com ORDER BY),
essa ordenação é muito mais eficiente se ela tiver um índice.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
192
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Quando é que se deve indexar uma tabela?
Pode-se criar um índice em qualquer altura da existência de uma tabela,
mas a melhor altura é depois de a tabela já conter muitos dados;
Note-se que criar o índice quando a tabela está vazia, provoca que a
inserção de dados fica mais lenta, pois o sistema tem de rearranjar a
estrutura de índice com relativa frequência.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Quantos índices pode haver por cada tabela?
Pode haver qualquer número de índices por tabela, mas quantos mais
índices houver, mais lentas ficarão as operações de INSERT, UPDATE,
DELETE.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
193
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
Qual o Melhor Índice?
O critério básico para escolha de índices é a selectividade. Quando a
base de dados resolve uma consulta, frequentemente precisa percorrer
mais registros do que os devolvidos pela consulta. Os registros
percorridos que forem rejeitados representam trabalho perdido;
Quanto menor for o trabalho perdido, mais perto estaremos da performance
óptima para resolver a consulta. Portanto, o melhor índice para uma
consulta é aquele que apresenta a maior selectividade.
tabela possui os índices:
select campo1
from tabela
índice 1:
campo2,
where campo2 = 2 and campo3 = 1 and campo4 = 3;
índice 2:
campo1
índice 3:
campo3,
índice 4:
campo4
índice 5:
campo5,
O índice mais selectivo será aquele
que recuperar o mínimo número de
registros.
campo5
campo1
campo4
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Qual o Melhor Índice?
Se houver 10 registros com campo2 = 2, 2000 registros com campo3 = 1
e 50 registros com campo4 = 3, o índice 1 será o mais selectivo. Vale a
pena tomar nota que o facto do índice 1 possuir também a coluna campo5
prejudica um pouco a consulta, razão pela qual, seria melhor para esta
consulta, que o índice 1 possuísse apenas o campo2;
select campo1
tabela possui os índices:
from tabela
índice 1:
campo2,
where campo2 = 2 and campo3 = 1 and campo4 = 3;
índice 2:
campo1
índice 3:
campo3,
índice 4:
campo4
índice 5:
campo5,
campo5
campo1
campo4
Para resolver a consulta, a base de dados fará o acesso ao índice, onde irá
recuperar o endereço físico dos registros candidatos a compor o resultado.
Com este endereço, verifica cada registro quanto às outras condições. Os
que satisfizerem as outras condições farão parte do resultado.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
194
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
A Ordem das Colunas na criação de Índices é importante?
Suponha-se a seguinte tabela:
Prod_Lojas (IDProd, IDLoja, Preço, Qtd)
Suponha-se que a tabela pode ter algumas dezenas de lojas, mas que
cada loja (IDLoja) pode ter milhares de produtos (IDProd);
Há consultas frequentes do tipo:
SELECT * FROM Prod_Lojas
WHERE IDProd = 1243 and IDLoja = 8;
Neste caso o índice a criar deveria indicar primeiro a coluna com mais
valores distintos (IDProd):
CREATE INDEX Prod_id
ON Prod_Lojas (IDProd, IDLoja);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
A Ordem das Colunas na criação de Índices é importante?
Select campo1 from tabela where campo2 = 2;
Tabela possui os índices:
índice 1: campo1 , campo3
índice2: campo2, campo1, campo3
índice3: campo1, campo2
Neste caso, a base de dados apenas pode usar o índice 2. A consulta pode
ser resolvida sem acesso à tabela, usando apenas o índice, uma vez que o
índice também possui os valores para campo1 de cada registro, não há
necessidade de se recuperar este valor da tabela.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
195
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Monitorização
Considerações
Hashing
Estrutura Interna de um Índice
Porque é que se eliminam índices?
O índice não levou à melhoria da velocidade que se esperava;
As aplicações não contém pesquisas que permitam ao sistema usar o
índice;
A tabela vai passar por uma fase de inserção/actualização intensiva, pelo
que é melhor eliminar o índice para o voltar a reconstruir mais tarde;
Eliminar índices?
DROP INDEX Prod_Loja;
A eliminação de um índice não altera a base de dados, só afecta a
velocidade a que as operações passam a ser realizadas;
Quando se elimina uma tabela todos os índices a ela associados também
são eliminados.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Monitorização
Considerações
Hashing
Estrutura Interna de um Índice
Estrutura Interna de um Índice B-Tree
Martins
Bento
Álvares
ROWID
Bento
ROWID
Justino
ROWID
Antunes
ROWID
Canelas
ROWID
Lemos
ROWID
Ferreira
ROWID
SELECT *
FROM Empregados
WHERE nome = “Lemos”
Matos
Justino
Martins
ROWID
Tavares
Matos
ROWID
Tavares
ROWID
Soares
ROWID
Teixeira
ROWID
O sistema começa por usar o índice para
determinar o ROWID (cadeia de caracteres em
hexadecimal que representa o endereço do
registo) do registo pretendido.
Depois usa o ROWID para encontrar o registo.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
196
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Gestão dos Índices
Apesar de acelerarem a consulta de informação, os índices penalizam a
introdução e alteração de informação;
A inserção de um registo obriga à introdução de um registo (ordenado) na
tabela de índices;
A alteração de um valor num atributo indexado obriga ao reordenamento
do ficheiro de índices;
A gestão de índices é fundamental mas perigosa (uma má gestão pode
degradar muito o desempenho da base de dados) e nunca é definitiva.
Depende do número de registos existentes e no tipo de acessos
(consultas) mais frequentes.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Bases de Dados
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Gestão dos Índices
A construção de índices exige portanto:
Constante monitorização
Reconstrução de índices quando:
- Índice apresenta estado inválido;
- Após um número significativo de operações de DML.
Actualização de informação estatística do índice (USER_INDEXES)
analyze index <idx> compute statistics;
Validação da estrutura do índice (INDEX_STATS)
analyze index <idx> validate structure;
Reconstrução de um índice por decisão do utilizador
alter index <idx> rebuild;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
197
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Monitorização
Considerações
Estrutura Interna de um Índice
Hashing
Definição de Hashing
Armazenar uma tabela num hash cluster é uma alternativa a armazenar a mesma
tabela com um índice;
A utilização do hashing tem também por objectivo melhorar a velocidade a que os
dados são encontrados e armazenados;
Tabela + Índice
Tabela em Hash Cluster
Objectivo do hash
cluster: encontrar o
registo pretendido
num único acesso ao
disco.
A tabela e o índice estão guardados
em segmentos diferentes, pelo que
qualquer pesquisa necessita de pelo
menos 2 acessos ao disco.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Desenho de um Esquema de Bases
de Dados em SQL Server
Ricardo Campos ([email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
198
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Sumário
Sumário
Desenho de um esquema de Bases de Dados em SQL Server
Desenho de uma base de dados para um banco;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Contextualização
Pretende-se desenvolver uma base de dados para um banco:
Cada cliente pode ter várias contas, mas cada conta só tem associado
um cliente;
Cada conta está fixada numa agência, a qual pode ter várias contas;
Cada cliente pode fazer vários empréstimos, mas cada empréstimo só
está associado a um cliente;
Cada empréstimo está fixado numa agência, a qual pode ter vários
empréstimos concedidos;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
199
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Contextualização
Considere-se ainda o seguinte:
Só existem 2 tipos de conta (ordem e prazo)
O saldo de qualquer conta terá de ser sempre superior a 50€
O banco só aceita empréstimos superiores a 500.000€ mas inferiores a
5.000.000€
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Modelo E-R (nível conceptual)
Modelo de E-R:
Cliente
1
N
Conta
N
1
Agência
1
N
Empréstimo
N
1
Modelo de E-R constituído pelo clientes de um banco, assim como as contas
e empréstimos desses clientes nas várias agências do banco.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
200
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Modelo Relacional (nível lógico)
Modelo Relacional:
Clientes(codCliente, nome, profissao, localidade);
Agencias(codAgencia, designacao, localidade);
Contas
Contas(numConta, tipoConta, codCliente, codAgencia, saldo);
numConta
Emprestimos(numEmprestimo, codCliente, codAgencia, valor);
N
tipoConta
codCliente
codAgencia N
Clientes
codClient
e
Agencia
saldo
1
1
codAgencia
1
nome
Emprestimos
Profissao
localidade
N
designacao
localidade
numEmprestimo
codCliente
codAgencia
N
valor
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
CREATE TABLE
CREATE TABLE Contas (
numConta CHAR(10),
tipoConta
CHAR(5),
codAgencia CHAR(3),
codCliente CHAR(4)
NOT NULL,
saldo
DECIMAL (10,2)
NOT NULL,
CONSTRAINT tipo_de_contas
CHECK (tipoConta IN (‘ordem’, ‘prazo’)),
CONSTRAINT valor_saldo
CHECK (saldo >= 50),
CONSTRAINT ch_prim_contas
PRIMARY KEY (numConta),
CONSTRAINT ch_estr_Agencias_Contas
FOREIGN KEY (codAgencia)
REFERENCES Agencias (codAgencia)
ON UPDATE CASCADE
ON DELETE SET NULL,
CONSTRAINT ch_estr_Clientes_Contas
FOREIGN KEY (cod_cliente)
REFERENCES Clientes (cod_cliente)
ON UPDATE CASCADE
ON DELETE CASCADE
)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
201
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
CREATE TABLE
CREATE TABLE Emprestimos (
numEmprestimo
CHAR(5),
codAgencia
CHAR(3),
codCliente
CHAR(4)
NOT NULL,
valor
INTEGER
NOT NULL,
CONSTRAINT valor_emprestimo
CHECK (valor BETWEEN 500.000 and 5.000.000),
CONSTRAINT ch_prim_emprestimos
PRIMARY KEY (numEmprestimos)
CONSTRAINT ch_estr_agencias_emprestimos
FOREIGN KEY (codAgencia)
REFERENCES Agencias (codAgencia)
ON UPDATE CASCADE
ON DELETE SET NULL,
CONSTRAINT ch_estr_Clientes_emprestimos
FOREIGN KEY (codCliente)
REFERENCES Clientes (codCliente)
ON UPDATE CASCADE
ON DELETE CASCADE
)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
CREATE TABLE
CREATE TABLE Agencias (
codAgencia
CHAR(3),
agencia
VARCHAR(20)
NOT NULL,
localidade
VARCHAR(10)
NOT NULL,
CONSTRAINT ch_prim_agencias
PRIMARY KEY (codAgencia)
)
CREATE TABLE Clientes (
codCliente
CHAR(4),
nome
VARCHAR(30)
profissao
VARCHAR(10),
localidade
VARCHAR(10)
NOT NULL,
NOT NULL,
CONSTRAINT ch_prim_clientes
PRIMARY KEY (codCliente)
)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
202
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
INSERT, UPDATE, DELETE
Inserir valores na tabela Clientes
INSERT INTO CLIENTES
VALUES (‘1’, ‘Ricardo Nuno’, ‘ Estudante’, ‘ Covilhã’)
Inserir valores na tabela Clientes sem conhecer alguns dados:
INSERT INTO CLIENTES (codCliente, nome, localidade)
VALUES (‘2’, ‘Ana Marques’, ‘ Covilhã’);
Actualizar a profissão do cliente anterior:
UPDATE CLIENTES
SET profissao = ‘Estudante’
WHERE numConta = ‘2’;
Eliminar o registo anterior:
DELETE FROM CLIENTES
WHERE numConta = ‘2’;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
CREAT VIEW
Definir uma view (GrandesContas) representando as linhas da tabela Contas
cujo saldo é superior a, por exemplo, 500.000.00€
CREATE VIEW GrandesContas
AS (SELECT *
FROM Contas
WHERE saldo > 50000000)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
203
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os clientes (codCliente, nome) do banco?
SELECT codCliente, nome
FROM CLIENTES;
Quais os clientes que residem na Covilhã?
SELECT *
FROM CLIENTES
WHERE localidade = ‘Covilhã’;
Quais os clientes (codCliente) com contas na agência 3?
SELECT DISTINCT codCliente
FROM CONTAS
WHERE codAgencia = ‘3’;
Dado que na agência podem existir clientes com várias contas, a
forma de evitar a repetição do mesmo codCliente é a utilização
da clausula DISTINCT;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os clientes que residem na mesma localidade das agências onde
possuem contas?
SELECT CLIENTES.*
FROM CLIENTES, CONTAS, AGENCIAS
WHERE CLIENTES.codCliente = CONTAS.codCliente and Contas.codAgencia =
Agencias.codAgencia and CLIENTES.localidade = AGENCIAS.localidade;
Note-se a necessidade de evitar ambiguidades quando colunas de
diferentes tabelas possuem identificadores iguais. Associamos por isso a
esses atributos a identificação da respectiva tabela;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
204
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os clientes com empréstimos de valor superior a 700.000€?
SELECT CLIENTES.*
FROM CLIENTES, EMPRESTIMOS
WHERE (CLIENTES.codCliente = EMPRESTIMOS.codCliente) AND (EMPRESTIMOS.valor > 700000);
Uma versão simplificada recorre a sinónimos (aliases) das duas tabelas:
SELECT C.*
FROM CLIENTES C, EMPRESTIMOS E
WHERE (C.codCliente = E.codCliente) AND (E.valor > 700000);
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os nomes dos clientes com a mesma profissão que o cliente com
codCliente = 4?
SELECT C1.nome
FROM CLIENTES C1, CLIENTES C2
WHERE (C1.profissao = C2.profissao) AND (C2.codCliente = ‘4’);
Esta resolução necessita da utilização de sinónimos, não com o objectivo
de simplificar, mas sim para distinguir entre diferentes instâncias da mesma
tabela.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
205
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Listar as contas (numConta e saldo) da agência cujo codAgencia = ‘3’, por
ordem decrescente do seu valor de saldo:
SELECT numConta, Saldo
FROM CONTAS
WHERE codAgencia = ‘3’
ORDER BY saldo DESC
A clausula ORDER BY permite ordenar o resultado por um, ou
mais, dos seus atributos. Por predefinição, a ordenação é
ascendente (ASC), a menos que seja indicado o contrário.
Quantas contas existem em todas as agências do banco?
SELECT COUNT(*)
FROM CONTAS;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quantos clientes possuem contas na agência cujo codAgencia é 3?
SELECT COUNT (DISTINCT codCliente)
FROM CONTAS
WHERE codAgencia = ‘3’;
Desta forma, apesar de vários clientes poderem ter mais do que uma
conta nesta filial, apenas são contabilizados uma vez;
Listar o número de contas existentes em cada agência:
SELECT codAgencia, COUNT (*)
FROM CONTAS
GROUP BY codAgencia;
A tabela Contas é dividida em vários grupos, tantos quantas as diferentes
agências, actuando a função Count isoladamente, sobre cada um destes
grupos;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
206
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Para cada agência (codAgencia) com menos de 1000 contas, listar os valores
máximo e mínimo dos saldos dessas contas, assim como o valor médio
SELECT codAgencia, MAX(saldo), MIN(saldo), AVG(saldo)
FROM CONTAS
GROUP BY codAgencia
HAVING COUNT(*) < 1000;
A cláusula HAVING está associada à cláusula GROUP BY, sendo como
que um filtro sobre esta última, ou seja, dos vários agrupamentos
produzidos pela cláusula GROUP BY, apenas são processados pela
função de agregação os que verificam a condição presente na cláusula
HAVING;
Quais os clientes cuja profissão é desconhecida?
SELECT *
FROM CLIENTES
WHERE profissao IS NULL;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os clientes (codCliente e nome) da agência codAgencia = 3?
SELECT C.codCliente, C.nome
FROM Contas CT, Clientes C
WHERE (CT.codAgencia = ‘3’) AND (CT.codCliente = C.codCliente)
UNION
SELECT C.codCliente, C.nome
FROM Emprestimos E, Clientes C
WHERE (E.codAgencia = ‘3’) AND (E.codCliente = C.codCliente)
A operação UNION elimina do final qualquer resultado duplicado. De notar
que a operação UNION pode ser sempre substituída pela utilização de um
OR entre as duas condições:
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
207
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os clientes (codCliente e nome) que são simultaneamente depositantes
e devedores da agência com codAgencia = 3?
SELECT C.codCliente, C.nome
FROM Contas CT, Clientes C
WHERE (CT.codAgencia = ‘3’) AND (CT.codCliente = C.codCliente)
INTERSECT
SELECT C.codCliente, C.nome
FROM Emprestimos E, Clientes C
WHERE (E.codAgencia = ‘3’) AND (E.codCliente = C.codCliente)
A operação INTERSECT também pode ser substituída pela utilização do AND
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os clientes (codCliente e nome) da agência codAgencia = 3 que
apenas são depositantes?
SELECT C.codCliente, C.nome
FROM Contas CT, Clientes C
WHERE (CT.codAgencia = ‘3’) AND (CT.codCliente = C.codCliente)
EXCEPT
SELECT C.codCliente, C.nome
FROM Emprestimos E, Clientes C
WHERE (E.codAgencia = ‘3’) AND (E.codCliente = C.codCliente)
EXCEPT corresponde à operação de diferença.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
208
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os clientes (codCliente e nome) com pelo menos um empréstimo no
banco?
SELECT C.codCliente, C.nome
FROM Clientes C
WHERE EXISTS (SELECT *
FROM Emprestimo E
WHERE C.codCliente = E.codCliente)
O operador EXISTS permite verificar se o resultado de uma subquestão é,
ou não, o conjunto vazio.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais as agências (codAgencia, agencia) com depositantes residentes em
Lisboa?
SELECT A.codAgencia, A.designacao
FROM Agencias A, Contas C
WHERE (C.codAgencia = A.codAgencia) and C.codCliente IN
(SELECT codCliente
FROM Clientes
WHERE localidade = ‘Lisboa’)
O operador IN permite verificar se um elemento está contido num
conjunto.
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
209
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Quais os clientes cujo saldo total das suas contas é superior ao valor de
qualquer empréstimo contraído neste banco?
SELECT C.*
FROM Clientes C
WHERE (SELECT SUM(CT.saldo)
FROM Contas CT
WHERE CT.codCliente = C.codCliente)
> ALL
(SELECT valor
FROM Emprestimos);
O operador ALL permite verificar se uma condição é satisfeita para todos
os elementos de um conjunto;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Outra forma de resolver a mesma questão seria recorrendo à função de
agregação MAX, para calcular o valor do maior empréstimo contraído no
banco:
SELECT C.*
FROM Clientes C
WHERE (SELECT SUM(CT.saldo)
FROM Contas CT
WHERE CT.codCliente = C.codCliente)
>
(SELECT MAX (valor)
FROM Emprestimos);
Para cada cliente (codCliente) apresentar o seu saldo total
SELECT codCliente, SUM(saldo)
FROM Contas
GROUP BY codCliente;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
210
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Contextualização
A biblioteca da UBI tem por objectivo reorganizar a sua gestão. Em particular,
pretende passar de um sistema centralizado para um sistema descentralizado
em várias bibliotecas satélites;
Os documentos da biblioteca, designados por publicações, têm associado a
si, um tipo de publicação: livros, revistas, jornais, e-books, etc…;
Enquadram-se numa categoria (exemplo: Informática; Medicina, etc…);
E podem ser escritos por vários autores e quando aplicável editados por uma
editora;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Contextualização
Cada publicação é identificada por um código da publicação e compreende
um conjunto de características: título; idioma; número de páginas; imagem da
capa; formato; descrição da obra; ISBN; local de publicação; depósito legal e
número total de publicações disponíveis no conjunto de todas as bibliotecas;
Nenhuma das características é de preenchimento obrigatório (até porque as
revistas não têm por exemplo um autor). Por outro lado, características como
o ISBN que dizem respeito a livros, denominam-se por ISBN, mas entendemse por ISSN, quando por exemplo a publicação é uma revista;
Em cada uma das bibliotecas satélites, deve existir pelo menos um (podendo
existir obviamente mais) exemplar de cada publicação;
Cada exemplar de uma publicação tem uma cota única que o identifica de
forma unívoca;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
211
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Contextualização
Além do mais, cada exemplar tem como características a data de publicação;
a data de aquisição; o número de edição; a possibilidade de ser uma
publicação passível de ser ou não requisitada; um campo que valide se está
ou não requisitado; um campo observações para descrever se a obra está
danificada, etc… e um campo CD que indique se o recurso vem
acompanhado de cd ou não;
Apenas a data de aquisição é de preenchimento obrigatório e o campo cd
deve ser entendido como DVD quando for o caso;
Cada uma das bibliotecas deve ter conhecimento em tempo real, do número
de publicações disponíveis;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Contextualização
A inscrição dos leitores é válida em qualquer uma das bibliotecas. São
identificados por um código e tem como características o nome, morada,
contacto, email, etc…;
Pertencem a um tipo de leitor, ao qual está associado um prazo de entrega.
Por exemplo Professores tem direito a 5 dias, Alunos de Pós-Graduação 3
dias, etc…
A biblioteca deverá guardar informação (ou seja o histórico) relativa à
requisição das publicações por parte dos leitores. Assim, necessita registar a
data de requisição, a data prevista de entrega e um campo que registe se o
recurso já foi devolvido ou não;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
212
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Modelo E-R (nível conceptual)
Publicação vs tipoPublicação
tipoPublicação 1
Os documentos da
biblioteca, designados por
publicações, têm associado
a si, um tipo de publicação
pertence
N
Publicação
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Modelo E-R (nível conceptual)
Categoria
tipoPublicação 1
Categoria
1
As publicações
enquadram-se numa
categoria
pertence
pertence
N
Publicação
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
213
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Modelo E-R (nível conceptual)
Editora
tipoPublicação 1
Categoria
Editora
1
1
As publicações,
quando aplicável,
podem ser editadas
por uma editora
pertence
pertence
N
Publicação
N
edita
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Modelo E-R (nível conceptual)
Autor
N
Categoria
Editora
1
1
pertence
pertence
obra
tipoPublicação 1
N
Autor
As publicações
podem ser
produzidas por um
ou mais autores
M
Publicação
N
edita
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
214
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Levantamento de requisitos
Desenvolvimento de uma Base de Dados para um Banco
Desenho da Base de Dados
Desenvolvimento de uma Base de Dados para uma Biblioteca
DDL e DML
Modelo E-R (nível conceptual)
Exemplar
Autor
Uma publicação
tem um conjunto
de exemplares
N
Editora
N
pertence
1
M
Publicação
N
1
tem
Categoria
1
pertence
obra
tipoPublicação 1
edita
N
Exemplares
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Levantamento de requisitos
Desenvolvimento de uma Base de Dados para um Banco
Desenho da Base de Dados
Desenvolvimento de uma Base de Dados para uma Biblioteca
DDL e DML
Modelo E-R (nível conceptual)
Biblioteca
Autor
Deve existir pelo
menos um exemplar
de cada publicação
em todas as
bibliotecas.
N
Editora
1
N
pertence
1
Biblioteca
M
Publicação
N
1
tem
Categoria
pertence
obra
tipoPublicação 1
edita
1
tem
N
N
Exemplares
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
215
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Levantamento de requisitos
Desenvolvimento de uma Base de Dados para um Banco
Desenho da Base de Dados
Desenvolvimento de uma Base de Dados para uma Biblioteca
DDL e DML
Modelo E-R (nível conceptual)
Leitor
Autor
A inscrição dos
leitores é válida
em qualquer uma
das bibliotecas.
N
Editora
N
pertence
1
M
Publicação
N
edita
1
Biblioteca
1
tem
Categoria
1
pertence
obra
tipoPublicação 1
N
N
tem
Exemplares
N
1
requisição
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Leitor
Bases de Dados
Levantamento de requisitos
Desenvolvimento de uma Base de Dados para um Banco
Desenho da Base de Dados
Desenvolvimento de uma Base de Dados para uma Biblioteca
DDL e DML
Modelo E-R (nível conceptual)
Leitor vs tipoLeitor
Autor
Um leitor
pertence a um
determinado
tipo de leitor.
N
N
pertence
1
Biblioteca
M
Publicação
N
1
tipoLeitor
1
edita
1
tem
N
N
Exemplares
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
tem
Editora
1
tem
Categoria
pertence
obra
tipoPublicação 1
M
requisição
N
N Leitor
Bases de Dados
216
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Levantamento de requisitos
Desenvolvimento de uma Base de Dados para um Banco
Desenho da Base de Dados
Desenvolvimento de uma Base de Dados para uma Biblioteca
DDL e DML
Modelo E-R (nível conceptual)
Autor
N
Editora
pertence
1
M
1
Publicação
N
1
edita
Biblioteca
tipoLeitor
1
tem
N
N
Exemplares
tem
Categoria
N
tem
1
pertence
obra
tipoPublicação 1
M
requisição
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Desenvolvimento de uma Base de Dados para um Banco
Desenvolvimento de uma Base de Dados para uma Biblioteca
N
N Leitor
Bases de Dados
Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Modelo Relacional (nível lógico)
Autor
Publicacao
Categoria
codPublicacao
Titulo
Idioma
numPags
imagemCapa
Formato
descricaoObra
numPublDisp
ISBN
depositoLegal
localPubl
codCategoria
codTipoPubl
codCategoria
desCategoria
tipoPublicacao
codTipoPubl
desTipoPubl
Editora
codEditora
desEditora
Morada
Contacto
Email
Edita
codPublicacao
codEditora
Obra
codAutor
nome
Email
codAutor
tipoLeitor
codTipoLeitor
desTipoLeitor
prazoEntrega
codPublicacao
Exemplar
Leitor
Cota
Obs
dataAquisicao
dataPublicacao
numEdicao
possbRequisitar
Cd
Requisitado
codPublicacao
codBiblioteca
codLeitor
Nome
Morada
Contacto
Email
codTipoLeitor
Biblioteca
Requisicao
Cota
codLeitor
dataRequisicao
dataEntrega
Devolvido
codBiblioteca
Morada
Contacto
Email
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
217
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Reporting
Ricardo Campos ([email protected])
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
SQL Server BI Development Studio
O SQL Server, é um sistema completo de business intelligence, que oferece as
funcionalidades, as ferramentas, e a capacidade para criar aplicações de análise
quer clássicas, quer inovadoras.
Integração e transformação dos dados;
Análise, armazenamento e pesquisa dos dados;
Report;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
218
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
SQL Server BI Development Studio
O acesso ao SQL Server Business Intelligence Development Studio é feito
através do menu Start – Programs – Microsoft Sql Server 2005;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Criação de um report
Criação de um report baseado na base de dados AdventureWorks
Criação de um Report
Criar um Report Server Project;
Criar um Report;
Definir a conexão;
Definir uma query para o report;
Adicionar uma tabela;
Prever o report;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
219
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Criação de um report
Criar um Report Server Project;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Criação de um report
Criar um report;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
220
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Criação de um report
Definir a conexão;
Esta conexão assume que o BI
Development Studio, o report server, e
a base de dados adventure works
estão todas instaladas no seu pc e que
tem permissões para aceder à base de
dados;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Criação de um report
Definir uma query para o report;
Adicionar uma tabela
Depois da definição da query é possível definir o layout, o qual consiste de
tabelas, imagens e outros itens
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
221
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Criação de um report
Depois de seleccionar table, clique na área de desenho (automaticamente é
criada uma tabela com 3 colunas)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Criação de um report
Arraste para a linha do meio (2.ª linha) os campos Order Date,
SalesOrderNumber, TotalDue
Define-se desta forma o layout do report
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
222
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Criação de um report
Prever o report;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Grupos, Ordenação e Formatação
Grupos, Ordenação e Formatação
Adicionar um grupo;
Adicionar uma nova coluna;
Ordenar os dados;
Adicionar um subtotal;
Aplicação de formatos;
Prever o report;
Publicar o report;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
223
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Grupos, Ordenação e Formatação
Adicionar um grupo;
Adicionar um grupo à tabela que agrupa e ordena os dados por vendedor.
Adicionar um grupo organiza informação sobre as vendas em unidades lógicas
mostrando informação sobre as vendas para cada vendedor;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Grupos, Ordenação e Formatação
Adicionar um grupo que arranja os dados das vendas pelo nome do
vendedor;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
224
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Grupos, Ordenação e Formatação
Adicionar uma nova coluna;
Adicionámos uma nova coluna que mostra o nome do vendedor;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Grupos, Ordenação e Formatação
Ordenar os dados;
No canto superior esquerdo seleccionar propriedades;
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
225
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Grupos, Ordenação e Formatação
Adicionar um subtotal
Adicionámos uma expressão que calcula a soma total das vendas
efectuada por cada vendedor
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Grupos, Ordenação e Formatação
Aplicação de formatos
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
226
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Grupos, Ordenação e Formatação
Clique em …..
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Grupos, Ordenação e Formatação
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
227
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Grupos, Ordenação e Formatação
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Bases de Dados
Grupos, Ordenação e Formatação
Seleccione as seguintes linhas e carregue em Bold
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
228
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
Grupos, Ordenação e Formatação
Prever o report
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ]
Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
Bases de Dados
229
Download