campos, ricardo. (2007). apresentação de bases de...
TRANSCRIPT
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
1Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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
Ricardo Campos ([email protected])
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 ]
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])
Autoria
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
2Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
BibliografiaRecursos:
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
Acetatos de Pedro Nogueira Ramos, ISCTE
Acetatos de Henrique Madeira, 1997/1998, UC
D, Luis“SQL – Structured Query Language”FCA – Editora de Informática
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 ]
Bibliografia
Recursos on-line (Bases de Dados e 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çossão virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários.
SQL Course Interactive, http://www.sqlcourse.com
Tutoriais, http://apostilando.com/sessao.php?cod=18
Linha de Código SQL, http://www.linhadecodigo.com.br/desenvolvimento/sql.asp
Noções da Linguagem SQL, http://www.juliobattisti.com.br/artigos/office/nocoessqlconsultas.asp
SQL for Web Nerds, http://philip.greenspun.com/sql/
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
3Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Sql Server Developer Center, http://msdn2.microsoft.com/en-us/sql/default.aspx
Recursos on-line (SQL Server ):
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-00DF-4220-B133-29C1E0B6585F&displaylang=en
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çossão virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários.
Bibliografia
http://www.mcdbabrasil.com.br/
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 ]
Sumário
Objectivos
Parte Teórica
Parte Prática
�
Bibliografia�
Programa�
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
4Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Objectivos
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;
Discussão dos conceitos relacionados com bases de dados;
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);
Capacidade de espelhar os conhecimentos teóricos num projecto de desenho e construção de uma base de dados utilizando um SGBD relacional.
Noções fundamentais sobre transacções e optimização;
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 ]
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
5Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Programa
Conceitos de Bases de Dados�
Ficheiros vs SGBDs;
Níveis de Análise do Sistema de Informação;
Bases de Dados;
Tipos de Bases de Dados.
Modelo Relacional�
Normalização de uma Base de Dados;
Modelo Relacional (nível lógico);
Modelo E-R (nível conceptual);
Estratégias para a Concepção de uma Base de Dados.
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 ]
Microsoft SQL Server 2005�
Interface;
Iniciar o SQL Server;
O que é o SQL Server?
Criar Bases de Dados;
Criar Tabelas;
Criar Índices;
Executar Queries;
Executar Store Procedures;
Realizar Backups.
Programa
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
6Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Programa
Álgebra Relacional�
Operações Unárias.
Operações Binárias;
Linguagem SQL�
Definição de SQL;
SQL Embebido VS APIs;
Tipos de Linguagens;
Comandos DDL e Comandos DML;
Comandos SQL para administração de privilégios;
Sinónimos;
Store Procedures.
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 ]
ProgramaTransacções, Recuperação e Optimização�
Tipos de Transacção;
Definição 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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
7Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Desenho de um esquema de Bases de Dados em SQL Server�
Programa
Desenho de uma base de dados para um banco;
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 ]
Conceitos de Bases de Dados
Ricardo Campos ([email protected])
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
8Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Sumário
Sumário
Conceitos de Bases de Dados�
Ficheiros vs SGBDs;
Níveis de Análise do Sistema de Informação;
Bases de Dados;
Tipos de Bases de Dados.
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 ]
Motivação
Porque é que alguém que não quer ser profissional de sistemas de informação, deve aprender bases de dados?
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.
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Motivação
Definição
Aplicações
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
9Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
O que é uma Base de Dados?
A World Wide Web.
De uma forma genérica uma base de dados é uma estrutura que guarda dados:
O objectivo de uma base de dados é possibilitar de uma forma rápida e automática o acesso aos seus dados:
Procurar a página WWW do CET.
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Motivação
Definição
Aplicações
Uma agenda com moradas e contactos telefónicos;
Uma lista de CDs;
Procurar a morada de uma determinada pessoa;
Procurar o nome da pessoa que canta determinada música;
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 ]
Bibliotecas: registo de livros, revistas.
Aplicações de Bases de Dados
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Motivação
Definição
Aplicações
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
10Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Nível Conceptual (Modelo E-R)
Nível Lógico (Modelo Relacional)
00100110001100010001000 Nível Físico
Nível Conceptual, Lógico e Físico
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
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 ]
Gestão de Ficheiros vs SGBDs
Para a organização dos dados existem 2 sistemas:
Sistema de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados
Criados e mantidos pelas aplicações.
No qual se verifica uma certa independência entre as aplicações e os dados, sob a mediação do SGBD.
Bases de
Dados
S
G
B
D
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de DadosNíveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
11Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de DadosNíveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
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 ]
Desvantagens do Sistema de Gestão de Ficheiros
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Redundância e Inconsistência dos dados�
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;
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de 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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
12Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Desvantagens do Sistema de Gestão de Ficheiros
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
Dificuldades no acesso aos dados�
Necessidade de escrever um novo programa para efectuar uma nova tarefa;
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
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 ]
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.
Bases de
Dados
S
G
B
D
Sistema de Gestão de Ficheiros
Sistema de Gestão de Bases de DadosNíveis de Análise do Sistema de Informação
Ficheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
13Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Características dos SGBDs
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.
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
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;
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 ]
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�
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.
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.
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
14Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Vantagens dos SGBDs
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.
Independência dos dados relativamente às aplicações�
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
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 ]
Exemplos de SGBDs
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.
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Oracle, Informix, SQL Server, etc…
São bastante fiáveis e com maiores capacidade que os do próximo exemplo.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
15Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Utilizadores
Nível
Básico
Programadores
de
Aplicações
Utilizadores
Nível
Avançado
Administradores
da
Base de Dados
Programas de
InterfaceProgramas
Ferramentas de
Análise
Ferramentas de
Administração
usam usam usamescrevem
Utilizadores de um SGBD
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
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 ]
Utilizadores de um SGBD
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;
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.
Administrador da Base de Dados�
Coordena todas as actividades do sistema de bases de dados.
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
16Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Funções do Administrador de Bases de Dados
Manutenção de rotina (backups, gestão de espaço em disco).
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão 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;
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 ]
Arquitectura de um SGBD
utilizadores nível básico
programadores de aplicações
DBA
Utilizadores
programas de interface
chamadas de rotina
consultas esquema de bases de dados
Utilizadores nível
avançado
SGBD
pré-compilador da linguagem de
manipulação de dados
processador de consultas
compilador da linguagem de
definição de dados
código objecto dos programas
de interface
gestor da base de dados
gestor de ficheiros
ficheiros de dados dicionário de
dados
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
17Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Arquitectura de duas camadasArquitectura de três camadas
Aplicações web recorrendo a software intermediário.
Programas clientes que comunicam com a base de
dados.
Arquitectura Cliente/Servidor
Servidor
Servidor
Aplicação Cliente
BD
Aplicação Cliente
Rede
Servidor
Aplicação
BD
Aplicação
Rede
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
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 ]
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.
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
18Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 Distribuídas
Cliente
Servidor
Servidor 1
BD
Cliente
Servidor
Servidor 2
BD
Rede
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.
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de DadosSistema de Gestão de Ficheiros
Sistema de Gestão de Bases de Dados
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 ]
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).
Contextualização Histórica
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Hierárquico
Em Rede
Relacional
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
19Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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…;
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Hierárquico
Em Rede
Relacional
Tipos: Hierárquicos, em Rede, Relacionais
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 ]
Exemplo de Informações numa Base 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€
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Hierárquico
Em Rede
Relacional
Consideremos a seguinte tabela como base para a definição dos vários tipos de bases de dados:
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
20Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 Aljezur
1 55€
António Glorioso Lisboa
3 5366€ 4 10533€
Filipa Sítio Fechado Aljezur
2 1000€ 3 5366€
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Hierárquico
Em Rede
Relacional
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 ]
Modelo Hierárquico
Cliente
Encomenda
Linha_Encomenda
Produto
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Hierárquico
Em Rede
Relacional
Modelo Hierárquico
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
21Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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€
4 10533€
3 5366€
2 1000€
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Hierárquico
Em Rede
Relacional
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 ]
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):
Cliente
rua cidade
nome Conta
número
saldo
possuiM N
numConta Saldo
1 55€
2 1000€
3 5366€
4 10533€
codCliente Nome Rua Cidade
100 Nuno Terlamonte Aljezur
101 Filipa Sítio Fechado Aljezur
102 António Glorioso Lisboa
codCliente numConta
100 1
101 2
101 3
102 3
102 4
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Hierárquico
Em Rede
Relacional
Modelo Relacional (Nível Lógico):
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
22Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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
codCliente Nome Rua Cidade
100 Nuno Terlamonte Aljezur
101 Filipa Sítio Fechado Aljezur
102 António Glorioso Lisboa
Cliente
4 atributos � Grau = 4
3 tuplos � Cardinalidade = 3
�
�
Níveis de Análise do Sistema de InformaçãoFicheiros vs SGBDs
Tipos de Bases de Dados
Bases de Dados Hierárquico
Em Rede
Relacional
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 ]
Modelo Relacional
Ricardo Campos ([email protected])
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
23Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Sumário
Sumário
Modelo Relacional�
Normalização de uma Base de Dados;
Modelo Relacional (nível lógico);
Modelo E-R (nível conceptual);
Estratégias para a Concepção de uma Base de Dados;
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 ]
Autor obraM N
Publicação
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participaçã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;
Definição do Modelo E-R (Entidade – Relação)
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
24Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Definição do Modelo E-R (Entidade – Relação)
Normalização de uma Base de Dados
No Access o modelo conceptual não existe. Assim, sempre que se pretende construir uma base de dados, o desenvolvimento da parte conceptual realiza-se 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;
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 ]
Entidade
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).
Entidade, Atributos, Associações e Chaves
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
Cor
Cor
kms
kms
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
25Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Dê um exemplo de entidades:
Aluno Disciplina
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Entidade, Atributos, Associações e Chaves
Normalização de uma Base de Dados
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 ]
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…
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
TituloNúmero
de Páginas
Ano de
Publicação
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
26Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Entidade, Atributos, Associações e Chaves
Aluno
n.º aluno nome
morada Disciplina
código
Designação
Dê um exemplo de atributos:
Normalização de uma Base de Dados
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 ]
Associação / Relação
Estabelecimento de uma relação entre várias entidades;
Chave
Um atributo (chave simples) ou grupo de atributos (chave combinada) que permite identificar univocamente cada entidade;
Entidade, Atributos, Associações e Chaves
sublinhado
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;
Resumo:
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
27Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Dê um exemplo de associação:
Aluno
n.º aluno nome
morada Disciplina
código
Designação
inscrito
Entidade, Atributos, Associações e Chaves
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
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 ]
Chaves Primárias
Todas as tabelas têm de possuir uma chave primária;
Permitem identificar univocamente um registo;
Número Nome Morada
001 João Rua a
013 João Rua b
Número é chave porque não podem existir dois clientes com o mesmo número;
Nome não é chave porque podem existir dois clientes com o mesmo nome;
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
28Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Chaves Primárias
Fila Lugar Ocupado?
A 1 sim
A 2 não
B 1 não
Apenas os atributos {Fila,Lugar} garante que identificamos um registo;
Número Nome Morada BI
001 João NULL 1234567
013 Ana NULL 7654321
Número e BI são chaves candidatas. É obrigatório optar por uma única chave;
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
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 ]
Aluno (nAluno, nome, morada)
Disciplina (codDisciplina, desDisciplina)
(8699, Ricardo, Rua A)
(8700, Nuno, Rua José)
(8701, Ana, Travessa do Viriato)
(1, TIC)
(2, Informática)
registo / linha / ocorrência / instância
registo / linha / ocorrência / instância
Dê exemplos de registos para as seguintes entidades, não se esquecendo de indicar a chave primária:
Chaves Primárias
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
29Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
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 ]
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,………)
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
30Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Nenhum componente de chave primária de uma tabela pode conter nulos.
Integridade de Entidade
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
Integridade Referencial
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.
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Integridade de Entidade e Integridade Referencial
IdJogadorIdJogador NomeNome DataNascDataNasc
J1 Vaz 08/10/1970
J2 Inácio 20/08/1972
J3 Paulo 20/01/1977
J4 Pinho 15/02/1978
….. ….. …..
IdJogadorIdJogador IdJogoIdJogo GolosGolos
J1 1 1
J2 2 0
J3 3 2
J152 1 0
….. ….. …..
Tabela ParticipaçõesTabela Participações
Tabela JogadoresTabela Jogadores
Normalização de uma Base de Dados
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 ]
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.
Aluno
n.º aluno nome
morada leccionar Professor
código
nome
habilitações
Defina o modelo E-R (nível conceptual):
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Exercício
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
31Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 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;
Relação Unária (reflexiva)
Possui apenas uma entidade que se relaciona com ela própria;
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
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 ]
Relação Unária (reflexiva)
Possui apenas uma entidade que se relaciona com ela própria;
Selecção
jogos
Esquema de uma relação unária, entre elementos da entidade selecção;
Tipos de relações existentes
Selecção
Portugal x Espanha
Portugal x França
Alemanha x França
jogos
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
32Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Relação Binária (as mais comuns)
Possui duas entidades que são relacionadas entre si;
Tipos de relações existentes
Deputados pertencemGrupos
Parlamentares
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
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 ]
Tipos de relações existentes
Relação Ternária (complexas)
Possui três entidades que se relacionam entre si;
Actores Filmes
Director
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
33Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
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 ]
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;
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;
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
A B
Entidade Obrigatória Entidade Obrigatória
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
34Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Associação 1:1 – nenhuma Entidade Obrigatória
Dê um exemplo para cada um dos seguintes elementos:
Um para Um (1:1)
Homem MulherCasamento1 1
H1
H2
H3
H
M1
M2
M3
M
Um Homem está casado com uma MulherUma Mulher está casada com um Homem
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Normalização de uma Base de Dados
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 ]
Outro Exemplo de Um para Um (1:1)
Um Carro pertence obrigatoriamente a um EmpregadoMas nem todo o Empregado tem um Carro
CarroEmpregado Tem1 1
E C
E1
E2
E4
C1
C2
C3
E3
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Associação 1:1 – uma Entidade Obrigatória
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
35Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Outro Exemplo de Um para Um (1:1)
Empregado CarroTem1 1
Um Empregado tem obrigatoriamente um CarroUm Carro pertence obrigatoriamente a um Empregado
E1
E2
E3
E
C1
C2
C3
C
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Associação 1:1 – as duas Entidades Obrigatórias
Normalização de uma Base de Dados
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 ]
Um para Muitos (1:N)
Enfermaria PacienteTem1 N
Uma Enfermaria têm vários PacientesUm Paciente pertence a uma só Enfermaria
E1
E2
E
P1
P2
P3
P
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Associação 1:N – nenhuma Entidade Obrigatória
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
36Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Um para Muitos (1:N)
Empresa EmpregadoTrabalhar1 N
Uma Empresa têm vários Empregados a trabalharUm Empregado trabalha obrigatoriamente numa Empresa
A1
A2
A
B1
B2
B3
B
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Associação 1:N – Entidade do lado N Obrigatória
Normalização de uma Base de Dados
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 ]
Muitos para Muitos (M:N)
Autor LivroEscreveu
Pertence
M N
Um Autor escreveu vários LivrosUm Livro pertence a vários Autores
A1
A3
A
L1
L2
L3
L
A2
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Representação Gráfica
Conceito de Chaves
Tipos de AssociaçõesTipos de Relações Existentes
Tipos de Participação
Associação M:N – nenhuma Entidade Obrigatória
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
37Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
É 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:
Autor obraM N
Publicação
De acordo com os tipos de associações e os tipos de participação:
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
é possível definir o modelo relacional (nível lógico);
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Contextualização
Normalização de uma Base de Dados
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 ]
Dê um exemplo para cada um dos seguintes elementos:
Um para Um (1:1)
Homem MulherCasamento1 1
H1
H2
H3
H
M1
M2
M3
M
Um Homem está casado com uma MulherUma Mulher está casada com um Homem
Relação 1:1 – nenhuma Entidade Obrigatória
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo RelacionalNormalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
38Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Relação 1:1 – nenhuma Entidade Obrigatória
Homem (BIHomem, nome, morada,……)
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):
Casamento (BIHomem, BIMulher, ……)
Homem (BIHomem, nome, morada,……)
Mulher (BIMulher, nome, morada,………)
Transf. Modelo E-R para modelo relacional
Quando se transforma um modeloconceptual (E-R) para um modelo lógico(relacional), é necessário realizar umconjunto de alterações.
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):
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo RelacionalNormalização de uma Base de Dados
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 ]
Outro Exemplo de Um para Um (1:1)
Um Carro pertence obrigatoriamente a um EmpregadoMas nem todo o Empregado tem um Carro
CarroEmpregado Tem1 1
E C
E1
E2
E4
C1
C2
C3
E3
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – uma Entidade Obrigatória
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
39Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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,……)
Empregado (codEmpregado, nome, morada,……)
Carro (Matricula, marca, modelo,………)
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – uma Entidade Obrigatória
Normalização de uma Base de Dados
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 ]
Outro Exemplo de Um para Um (1:1)
Empregado CarroTem1 1
Um Empregado tem obrigatoriamente um CarroUm Carro pertence obrigatoriamente a um Empregado
E1
E2
E3
E
C1
C2
C3
C
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – as duas Entidades Obrigatórias
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
40Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Se o relacionamento de 1:1 tem participação obrigatória de ambas as entidades é necessária apenas 1 única tabela:
Empregado (codEmpregado, nome, morada,……)
Carro (Matricula, marca, modelo,………)
Empregado (codEmpregado, nome, morada, Matricula, marca, modelo,……)
Os atributos do Carro podem ser vistos como atributos adicionais do Empregado
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):
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:1 – as duas Entidades Obrigatórias
Normalização de uma Base de Dados
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 ]
Um para Muitos (1:N)
Enfermaria PacienteTem1 N
Uma Enfermaria têm vários PacientesUm Paciente pertence a uma só Enfermaria
E1
E2
E
P1
P2
P3
P
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:N – nenhuma Entidade Obrigatória
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
41Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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):
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,………)
Enfermaria_Paciente (codPaciente, codEnfermaria, ……)
Enfermaria (codEnfermaria, designação,……)
Paciente (codPaciente, nome, morada,………)
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:N – nenhuma Entidade Obrigatória
Normalização de uma Base de Dados
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 ]
Um para Muitos (1:N)
Empresa EmpregadoTrabalhar1 N
Uma Empresa têm vários Empregados a trabalharUm Empregado trabalha obrigatoriamente numa Empresa
A1
A2
A
B1
B2
B3
B
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:N – Entidade do lado N Obrigatória
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
42Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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,……)
Empresa (codEmpresa, nome, localização,……)
Empregado (BI, nome, morada, codEmpresa,……)
Se no relacionamento 1:N a entidade do lado N é obrigatória, são necessárias duas tabelas:
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação 1:N – Entidade do lado N Obrigatória
Normalização de uma Base de Dados
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 ]
Muitos para Muitos (M:N)
Autor LivroEscreveu
Pertence
M N
Um Autor escreveu vários LivrosUm Livro pertence a vários Autores
A1
A3
A
L1
L2
L3
L
A2
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação M:N – Obrigatoriedade Irrelevante
Normalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
43Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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,……)
Autor_Livro (codAutor, ISBN, dataLançamento,……)
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 (codAutor, nome,……)
Livro (ISBN, Título, numPag,……)
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo Relacional
Relação M:N – Obrigatoriedade Irrelevante
Normalização de uma Base de Dados
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 ]
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;
ResumoUma 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.
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;
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo RelacionalNormalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
44Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Livro UtenteRequisiçãoM N
Edição1 N
Editor
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo RelacionalNormalização de uma Base de Dados
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 ]
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……)
Utente (codLeitor, nome,……)
Requisição (ISBN, codLeitor, dataRequisição,……)
Editor
codEditor
nome
……..
Livro
ISBN
título
codEditor
……….
Requisição
ISBN
codLeitor
dataReq.
……….
Utente
codLeitor
nome
……..
1
N
1 1N
N
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo RelacionalNormalização de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
45Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo RelacionalNormalização de uma Base de Dados
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 ]
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo RelacionalNormalização de uma Base de Dados
Cliente
Agência
1
N
1
N
Modelo de E-R:
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.
ContaN
Empréstimo
1N
1
Modelo E-R (nível conceptual)
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
46Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Modelo Relacional (Nível Lógico)
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Transformação do modelo E-R (ass. 1:1) para modelo Relacional
Transformação do modelo E-R (ass. 1:N) para modelo Relacional
Transformação do modelo E-R (ass. M:N) para modelo RelacionalNormalização de uma Base de Dados
Clientes
codCliente
nome
Profissao
localidade
Contas
numConta
tipoConta
codCliente
codAgencia
saldoAgencia
codAgencia
designacao
localidade
1
N
N
1
1
Emprestimos
numEmprestimo
codCliente
codAgencia
valor
NN
DDL e DML
Modelo Relacional (nível lógico)
Modelo Relacional:
Clientes(codCliente, nome, profissao, localidade);
Agencias(codAgencia, designacao, localidade);
Contas(numConta, tipoConta, codCliente, codAgencia, saldo);
Emprestimos(numEmprestimo, codCliente, codAgencia, valor);
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 ]
Após o desenvolvimento do modelo E-R dos dados (nível conceptual) é feito o desenvolvimento do modelo relacional (nível lógico);
Normalizar para quê?
O conjunto de tabelas obtidas representa a estrutura da informação;
Assegurar o mínimo de redundância possível;
Objectivos da Normalização
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de DadosEstratégias para a concepção de uma Base de Dados
Modelo E-R (Nível Conceptual)
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
47Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Limitações das monotabelas
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
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
Modelo Relacional (Nível Lógico)
Normalização de uma Base de DadosEstratégias para a concepção de uma Base de Dados
Modelo E-R (Nível Conceptual)
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 ]
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Outros problemas das monotabelas:
Se o endereço do cliente for alterado, essa alteração tem de ser feita em várias linhas da tabela;
Problemas de Actualização
Não é possível registar informação relativa a um cliente que não tenha feito qualquer encomenda;
Problemas de Inserçã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;
Problemas de Eliminação
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Limitações das monotabelas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
48Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Objectivos da Normalização
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
As 3 formas normais
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;
1.ª 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;
2.ª 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;
3.ª Forma Normal�
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
49Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Esquema Geral da Normalização
Dados não normalizados. Dispor a informação em tabelas de forma que todas as ocorrências dos atributos sejam elementares:
1.ª Forma Normal�
Os dados estão na 1.ª Forma Normal
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
Identificar as dependências funcionais dos atributos em relação às chaves:
2.ª Forma Normal�
Os dados estão na 2.ª Forma Normal
Esquema Geral da Normalização
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
50Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Identificar as dependências transitivas. Desdobrar a relação de forma que cada atributo depende única e exclusivamente da chave:
3.ª Forma Normal�
Os dados estão na 3.ª Forma Normal
Esquema Geral da Normalização
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
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;
Contextualização
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
51Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
idAluno Nome Morada Disciplinas Professor NotaA1 João Lisboa 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:
Actualmente já existe uma base de dados que guarda toda a informação numa tabela:
Contextualização
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
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;
Definição
1FN
�
Atributos Elementares
Conjunto de elementosindivisíveis (exemplo: Data deNascimento, Peso, etc…)
Conjunto de Atributos
Uma lista de valorespara um dado atributo
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
52Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
idAluno Nome Morada idDisciplina Disciplina idProfessor Professor Nota
Tabela na 1.ª Forma Normal:
Alunos (idAluno, Nome, Morada, ididDisciplina, Disciplina, idProfessor, Professor, nota)
Chave
1FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
A4 Filipa Lisboa 1 Matemática 1 Prof. Carlos 14
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
A2 Ana Algés 4 Física 4 Prof.ª Ana 4
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
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 ]
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;
Definição�
2FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Se uma instância de valores do atributo X determina univocamente uma instância de Y (X determina Y).
Dependências Funcionais (X ���� Y)�
Ou seja, diz-se que X determina Y, se para cada valor de X existe um só valor de Y
X e Y são listas de atributos;
Ou seja, se soubermos X, sabemos automaticamente Y
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
53Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
2FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Exemplo de dependência funcional (X ���� Z)�
Tome-se como referência a tabela A (x,y,z,w): x y z w1 3 2 7
2 4 5 8
1 5 2 4
1 3 2 7
2 4 5 8
7 3 4 2
X � Z;
Conhecido o valor de X sabe-se automaticamente o valor de Z;
Para um dado valor do atributo X, o valor do atributo Z é sempre o mesmo;
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;
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
2FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Exemplo de dependência funcional elementar {X,Y} ���� W�
Tome-se como referência a tabela A (x,y,z,w): x y z w1 3 2 7
2 4 5 8
1 5 2 4
1 3 2 7
2 4 5 8
7 3 4 2
{X,Y} � W;
W é funcionalmente dependente do conjunto de atributos {X,Y}, quando estes atributos são tomados como um conjunto;
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;
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
54Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
2FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
idAluno Nome Morada idDisciplina Disciplina idProfessor Professor NotaA1 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
A2 Ana Algés 4 Física 4 Prof.ª Ana 4
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
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
idAluno Nome Morada idDisciplina Disciplina idProfessor Professor
Chave Chave
idAluno idDisciplina Nota
Chave
2FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Tabelas na 2.ª Forma Normal:
A4 Filipa Lisboa
A1 João Lisboa
A2 Ana Algés
A3 Pedro Sintra
4 Física 4 Prof.ª Ana
1 Matemática 1 Prof. Carlos
2 Economia 2 Prof. Paulo
3 Direito 3 Prof. José
A4 1 14
A1 1 14
A1 2 19
A1 3 9
A2 1 11
A2 4 4
A3 1 8
A3 2 12
A3 4 15
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
55Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Definiçã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
3FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
idDisciplina Disciplina idProfessor idProfessor Professor
Chave Chave
3FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Tabelas na 3.ª Forma Normal:
4 Física 4
1 Matemática 1
2 Economia 2
3 Direito 3
4 Prof.ª Ana
1 Prof. Carlos
2 Prof. Paulo
3 Prof. José
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
56Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Desta forma obtemos as seguintes tabelas normalizadas (3FN):
Aluno (idAluno, nome, morada);
Nota (idAluno, idDisciplina, nota);
Disciplina (idDisciplina, disciplina, idProfessor);
Professor (idProfessor, Professor);
Aluno
idAluno
nome
……..
Nota
idAluno
idDisciplina
nota
……….
Disciplina
idDisciplina
disciplina
idProfessor
……….
Professor
idProfessor
Professor
……..
1 N
N11
N
Reflexo do modelo lógico de dados (modelo relacional):
Resumo
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
Contextualização
- Os clientes fazem encomendas
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
- As encomendas contêm produtos
Pretende-se automatizar o registo de compras num hipermercado:
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
57Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
1.ª Forma Normal
Actualmente já existe uma base de dados que guarda toda a informação numa tabela:
Nº encomenda
Nº cliente Cliente
EndereçoCliente 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
Definição�
1FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
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;
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
Nº encomenda
Nº cliente Cliente
EndereçoCliente DataEnc codProduto Produto Qtd
Tabela na 1.ª Forma Normal:
Chave
Encomenda (numEncomenda, numCliente, Cliente, endCliente, dataEnc, codcodProduto, Produto, Qtd)
1FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
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:
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
13 3 Ana Rua B 11-11-2000 3 C 18
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
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
58Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Definição�
2FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Nº encomenda
Nº cliente Cliente
EndereçoCliente 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
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;
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
Nº encomenda
Nº cliente Cliente
EndereçoCliente DataEnc
Encomenda (numEncomenda, numCliente, Cliente, endCliente, dataEnc)
Nº encomenda codProduto Qtd
Linha_Encomenda (numEncomenda, codProduto, Qtd)
Chave
Chave
2FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de EscolaModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
codProduto Produto
Chave
Produto (codProduto, Produto)
13 3 Ana Rua B 11-11-2000
12 2 João Rua A 11-11-2000
3 C
1 A
2 B
13 3 18
12 1 12
12 2 10
12 3 16
13 1 16
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
59Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
3FN
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;
Definiçã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;
Nº encomenda
Nº cliente Cliente
EndereçoCliente DataEnc
12 2 João Rua A 11-11-2000
13 3 Ana Rua B 11-11-2000
Chave
Nº encomenda codProduto Qtd
12 1 12
12 2 10
12 3 16
13 1 16
13 3 18
Chave
codProduto Produto
1 A
2 B
3 C
Chave
EncomendaLinha_Encomenda Produto
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
Nº encomenda
Nº cliente Cliente
EndereçoCliente 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:
Nº encomenda
Nº cliente DataEnc
Nº cliente Cliente
EndereçoCliente
ChaveChave
3FN
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Encomenda (numEncomenda, numCliente, dataEnc)
Cliente (numCliente, Cliente, endCliente)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
13 3 11-11-2000
12 2 11-11-2000
3 Ana Rua B
2 João Rua A
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
60Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Resumo
Modelo E-R (nível conceptual)
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:
Nº encomenda
Nº cliente Cliente
EndereçoCliente 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
Encomendas ClientePertenceM N
Tem1N
Produto Linha_Encomendas
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
Resumo
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Encomendas ClientePertenceM N
Tem1N
Produto Linha_Encomendas
Modelo Relacional (nível lógico)
codProduto Produto
1 A
2 B
3 C
Chave
ProdutoNº
encomenda codProduto Qtd
12 1 12
12 2 10
12 3 16
13 1 16
13 3 18
Chave
Linha_Encomenda
Nº encomenda
Nº cliente DataEnc
12 2 11-11-2000
13 3 11-11-2000
Chave
Encomenda
Nº cliente Cliente
EndereçoCliente
2 João Rua A
3 Ana Rua B
Chave
Cliente
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
61Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Desta forma obtemos as seguintes tabelas normalizadas (3FN):
Resumo
Objectivos
1FN, 2FN, 3FN
Projecto Normalização de Factura Electrónica
Projecto Normalização de Escola
Cliente (numCliente, Cliente, endCliente)
Encomenda (numEncomenda, numCliente, dataEnc)
Linha_Encomenda (numEncomenda, codProduto, Qtd)
Produto (codProduto, Produto)
Modelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
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 ]
Top-Down�
Bottom-up�
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;
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;
Top-Down vs Bottom-Up
Levantamento de requisitos e Desenho de uma Base de DadosModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Top-Down vs Bottom-Up
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
62Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Top-Down vs Bottom-Up
Levantamento de requisitos e Desenho de uma Base de DadosModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Top-Down vs Bottom-Up
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 ]
Para a construção do modelo E-R, o analista de sistemas necessita recolher dados relevantes junto do utilizador final;
Levantamento de Requisitos
O desenho de uma base de dados passa pela definição do modelo E-R (captura da realidade):
Desenho de uma base de dados
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;
�
�
Top-Down vs Bottom-Up
Levantamento de requisitos e Desenho de uma Base de DadosModelo Relacional (Nível Lógico)
Normalização de uma Base de Dados
Modelo E-R (Nível Conceptual)
Estratégias para a concepção de uma Base de Dados
Levantamento de Requisitos e Desenho de uma BD
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
63Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Desenho de um esquema de Bases de Dados
Ricardo Campos ([email protected])
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 ]
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;
Levantamento de requisitosDesenho de uma Base de Dados para uma biblioteca
Desenho da Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
64Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 entendem-se por ISSN, quando por exemplo a publicação é uma revista;
Cada exemplar de uma publicação tem uma cota única que o identifica de forma inequívoca;
Em cada uma das bibliotecas satélites, deve existir pelo menos um (podendo existir obviamente mais) exemplar de cada publicação;
Contextualização
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
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 ]
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;
Contextualização
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
65Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Contextualização
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
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 ]
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….;
Gestão dos Recursos
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Objectivos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
66Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Objectivos
Devem também ser criados os respectivos formulários que permitam inserir o tipo de leitor, etc….;
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
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 ]
Requisição de Livros
Objectivos
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;
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
67Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Deve ser construído um relatório com informações relativas ao leitor e respectiva publicação cuja requisição caducou;
Emissão de Relatórios
Objectivos
Deve ser construído um relatório com informações relativas às publicações, agrupadas por tipo de publicação;
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
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 ]
Menus
Objectivos
Deve ser criado um menu para cada um dos pontos anteriores e um menu principal com botões para cada um deles;
Deve ser criada uma macro que abra o menu principal, assim que o Access seja executado;
Macros
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
68Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Publicação vs tipoPublicação
Os documentos da biblioteca, designados por
publicações, têm associado a si, um tipo de publicação
Publicação
1pertencetipoPublicação
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
N
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 ]
Categoria
Categoria
As publicações enquadram-se numa
categoria
1pertence Publicação
1pertencetipoPublicação
N
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
69Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Editora
Editora
As publicações, quando aplicável,
podem ser editadas por uma editora
edita
N
1
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Categoria 1pertence Publicação
1pertencetipoPublicação
N
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 ]
Autor
As publicações podem ser
produzidas por um ou mais autores
Autor
obra
M
N
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
70Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Exemplar
Uma publicação tem um conjunto de exemplares
tem
N
1
Exemplares
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
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 ]
Biblioteca
Deve existir pelo menos um exemplar de cada publicação
em todas as bibliotecas.
Biblioteca tem1 N
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
tem
N
1
Exemplares
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
71Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Leitor
A inscrição dos leitores é válida
em qualquer uma das bibliotecas.
LeitorrequisiçãoNM
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
Biblioteca tem1 N
tem
N
1
Exemplares
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
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 ]
tem
N
1
tipoLeitor
Leitor vs tipoLeitor
Um leitor pertence a um determinadotipo de leitor.
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
Modelo Conceptual (modelo E-R)
LeitorrequisiçãoNM
Biblioteca tem1 N
tem
N
1
Exemplares
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
72Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Modelo Lógico (modelo relacional)
Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos
Desenho da Base de Dados
codPublicacaoTituloIdioma
numPagsimagemCapa
FormatodescricaoObranumPublDisp
ISBNdepositoLegal
localPubl�codCategoria�codTipoPubl�codEditora
Publicacao
Categoria
codCategoriadesCategoria
tipoPublicacao
codTipoPubldesTipoPubl
Editora
codEditoradesEditora
MoradaContacto
Autor
codAutornomeEmailObra
�codAutor�codPublicacao
tipoLeitor
codTipoLeitordesTipoLeitorprazoEntrega
codLeitorNome
MoradaContacto
Email�codTipoLeitor
Leitor
CotaObs
dataAquisicaodataPublicacao
numEdicaopossbRequisitar
CdRequisitado
�codPublicacao�codBiblioteca
Exemplar
Biblioteca
codBibliotecaMoradaContacto
Requisicao
�Cota�codLeitor
dataRequisicaodataEntregaDevolvido
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 ]
Microsoft SQL Server 2005
Ricardo Campos ([email protected])
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
73Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Sumário
Sumário
Microsoft SQL Server 2005�
Interface;
Iniciar o SQL Server;
O que é o SQL Server?
Criar Bases de Dados;
Criar Tabelas;
Criar Índices;
Executar Queries;
Executar Store Procedures;
Realizar Backups
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 ]
SQL Server é um SGBD assente na arquitectura cliente/servidor, desenvolvido ecomercializado pela Microsoft e que corre exclusivamente nos sistemasoperativos Windows;
É 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;
É fácil de usar;
Oferece ferramentas de Business Intelligence
SQL Server 2005
Microsoft SQL Server 2005Iniciar o SQL ServerO que é o SQL Server?
InterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
Backups
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
74Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Existem 6 versões disponíveis:
Versões do Server 2005
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;
Microsoft SQL Server 2005Iniciar o SQL ServerO que é o SQL Server?
InterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
Backups
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 ]
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.
Versões do Server 2005
Microsoft SQL Server 2005Iniciar o SQL ServerO que é o SQL Server?
InterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
Backups
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
75Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 SQLServer 2005, as versões mais antigas: SQL Server 2000 e SQL Server 7
Iniciar o Server 2005
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Autenticação de Utilizadores
A definição de políticas de segurança são extremamente encorajadas uma vezque evitam acessos indevidos e porque permitem especificar aos utilizadoresautorizados os respectivos privilégios.
Quando um utilizador tenta aceder um servidor SQL Server, pode serautenticado de duas maneiras: pela Autenticação do Windows ou pelaAutenticação do SQL Server:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
76Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Autenticação de Utilizadores
O tipo de autenticação é definido aquando da instalação do SQL Server. Paramodificar 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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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;
Autenticação de Utilizadores
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
77Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Interface do Microsoft SQL Server
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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 porexemplo reiniciar servidor já existente, mandá-lo abaixo, etc…
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
78Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Através do item new é possível registrar um novo servidor:
Registered Servers
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Também é possível criar um novo grupo de servidores, bem como exportar eimportar informações de outros servidores, o que evita o registro manual;
Registered Servers
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
79Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Object Explorer
A janela Object Explorer, permite a conexão a qualquer um dos componentes doservidor de SQL Server e inclusive efectuar operações com o servidor (vistasanteriormente), 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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Object Explorer
Para trabalharmos com o Object Explorer é necessário ter uma conexãoestabelecida com o servidor (se fizemos o login logo no início da sessão essaconexão já existe):
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
80Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Replication e Management
Capacidade do sistema em fazer cópias da informação eautomaticamente colocá-la numa localização remota
O nó management contém ferramentas que ajudamna gestão do SQL Server. Estas ferramentas incluema capacidade de visualizar os logs no servidor e oActivity Monitor (com informações acerca dasconexões, etc…)
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
81Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Security
Através do Object Explorer temos acesso ao painel de segurança, ondepodemos controlar os logins, adicionar e remover privilégios (server roles) e criarcredenciais;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
No Login é possível adicionar/remover utilizadores bem como atribuir serverroles:
Security
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
82Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Server roles são privilégios predefinidos que não podem ser nem adicionadosnem removidos:
Security
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
83Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
securityadmin (Security Administrators)
Pode gerir os server logins;
setupadmin (Setup Administrators)
Pode gerir propriedades extra;
serveradmin (Server Administrators)
Pode definir configurações do servidor;
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
Security
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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.
Security
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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
84Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
db_datareader (Database Data Reader)
Tem a capacidade de ver dados de qualquer tabela da 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;
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
Security
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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.
Security
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
85Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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
Security
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
86Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Depois seleccionar as respectivas permissões:
Security
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Ao instalar o SQL Server são criadas 4 bases de dados com os seguintes nomesló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
Bases de Dados
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
87Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Bases de Dados
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Criar uma base de dados no SQL Server
É possível criar uma base de dados e inclusive especificar o dono da base de dados:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
88Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Generate Scripts
O Object Explorer permite a criação de scripts desde um simples objecto a umabase de dados inteira;
Existe a opção de criar o script na:
Clipboard (funcionamento similar ao do PrintScreen, só temos que abrir, por exemplo o notepad, e colar o conteúdo (CTRL-V)
Ficheiro
Query Editor Window;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
89Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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áriaFROM tabPermanente WHERE...
A tabela fica guardada em:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
90Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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
Tipos de Dados
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Tipo Descrição Tamanho
Intpermite 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
Moneyusado 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
Texto 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
NTextma versão reduzida do tipo Text que permite armazenar até
1.073.741.823 caracteres 1 byte
DateTimeo tipo datetime armazena valores contendo a data e hora, entre 1º de
janeiro de 1753 e 31 de dezembro de 9999 4 bytes
SmallDateTimeo 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
Timestampnão pode ser alterada pelo utilizador. É definida automaticamente com a
data e hora actual quando a linha é inserida ou actualizada;
Tipos de Dados
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
91Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Chave-Primária
Atribuir chave-primária;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Definir Chaves
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Possibilidade de atribuir automaticamente (sem intervenção do utilizador) um valor a uma chave, por exemplo um cliente:
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
92Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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’
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
93Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Estabelecer a relação:
Relações entre as tabelas (Chaves Estrangeiras)
As chaves podem ser visualizadas no object explorer:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
94Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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
Relações entre as tabelas (Chaves Estrangeiras)
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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
Relações entre as tabelas (Chaves Estrangeiras)
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
95Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Definição de Regras
Limitam a gama de valores que o utilizador pode introduzir na coluna
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
96Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Definição de Regras
Outros exemplos:
DateEntered <= getDate(), limita o valor introduzido para uma data inferior à actual;
LimiteCredito between 0 and 10000;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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”
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
97Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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.
Definição de Índices
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
98Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
É possível definir um índice quando estamos a criar uma tabela:
Carregar no item columns para definir quais as colunas que integram o índice:
Definição de Índices
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Executar uma Query
Botão direito do rato em cima da respectiva base de dados:
Ou no menu:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
99Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Depois de especificar a query SQL, resta apenas executá-la
Query SQL
Base de Dados seleccionada
Os resultados na Grid:
Executar uma Query
Fazer um parse da query antes de a executar permite validar se a mesma está bem escrita
Resultados em formato de texto
Guardar resultados num ficheiro
Visualizar as mensagens
Comentários
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Determinadas queries (as mais simples) também podem ser feitas com recurso a um ambiente gráfico
Executar uma Query
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
100Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Sempre que se executar uma query é possível incluir estatísticas:
Produzir Estatísticas
Depois de executar a query é produzido conjuntamente com os resultados um painel com informações estatísticas:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Store Procedures
Definir o store procedure:
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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
101Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Store Procedures
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;
Executar o Store Procedure:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Efectuar Backups
Um backup de uma base de dados é a operação de copiar os dados para um dispositivo de backup;
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;
Um dispositivo de backup pode ser um ficheiro ou por exemplo uma unidade de fita;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
102Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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;
Efectuar Backups
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
103Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
O backup pode ser de 3 tipos:
Full
Backup da base de dados inteira;
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)
Transaction LogComo 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;
Efectuar Backups
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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.
Efectuar Backups
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
104Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Efectuar Backups
Outra possibilidade é ir directamente pela base de dados em que se quer fazer backup:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Agendar um Backup
De volta ao SQL Server Management Studio, deveremos expandir o item Management. Botão direito em cima do item – maintenance plan:
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;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
105Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Agendar um Backup
O próximo passo passa por arrastar o item BackUp Database Task para a área de trabalho;
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
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…
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
106Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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:
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
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 ]
Outra possibilidade é ir directamente pela base de dados que ser quer restaurar:
Restaurar a Base de Dados
Microsoft SQL Server 2005Iniciar o SQL ServerInterfaceCriar Bases de Dados
Criar TabelasCriar ÍndicesExecutar QueriesExecutar Store Procedures
BackupsO que é o SQL Server?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
107Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Álgebra Relacional e Linguagem SQL
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 ]
Sumário
Sumário
Álgebra Relacional�
Operações Unárias.
Operações Binárias;
Linguagem SQL�
Definição de SQL;
SQL Embebido VS APIs
Tipos de Linguagens;
Comandos DDL e Comandos DML;
Comandos SQL para administração de privilégios;
Sinónimos;
Store Procedures;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
108Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Operações Binárias e Unárias
Consultas em bases de dados não são mais do que operações de álgebrarelacional;
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações Binárias Operações Unárias
Assim, tal como na álgebra tradicional, os operadores possuem determinadaspropriedades;
Sabemos que 2 * 3 = 3 * 2. Isto significa, que quando necessitamos utilizar umaexpressã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õeslevam ao mesmo resultado;
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 ]
Operações Binárias e Unárias
No Modelo Relacional a informação é representada através de relações (outabelas). A Álgebra Relacional (concebida também por Codd) é um conjunto deoperações formais que operam sobre relações. No essencial a álgebra relacionalcorresponde à álgebra de conjuntos, ou seja, é definida com base nosoperadores:
Junção
Selecção
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações Binárias Operações Unárias
� Binárias (operam sobre conjuntos)UniãoIntersecção
Diferença
DivisãoProduto Cartesiano
� Unárias (operam apenas sobre um conjunto)Projecção
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
109Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
União (∪∪∪∪)�
AA BB CC
a1 b1 c1
a2 b2 c2
a3 b3 c3
AA BB CC
a1 b2 c3
a2 b2 c2
RR SS
AA BB CC
a1 b1 c1
a2 b2 c2
a3 b3 c3
a1 b2 c3
R R ∪∪∪∪∪∪∪∪ S =S =
Relações Compatíveis
Mesmo grau (número de atributos) e atributos idênticos (i.e., tipos de dados compatíveis).
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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 ]
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Somos Ldª Rua dos Coxos Guarda 960000001
Vanguarda Rua dos Sábios Guarda 960000002
Nabeiro SA Rua de Aviz Tomar 960000003
Serra e Sol Ldª Rua dos Mestres Covilhã 960000004
EmpresaEmpresa
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Somos Ldª Rua dos Coxos Guarda 960000001
Castelo Rua do Castelo Évora 960000005
Nabeiro SA Rua de Aviz Tomar 960000003
ClienteCliente
Empresa Empresa ∪∪∪∪∪∪∪∪ Cliente =Cliente =
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Somos Ldª Rua dos Coxos Guarda 960000001
Vanguarda Rua dos Sábios Guarda 960000002
Nabeiro SA Rua de Aviz Tomar 960000003
Serra e Sol Ldª Rua dos Mestres Covilhã 960000004
Castelo Rua do Castelo Évora 960000005
SELECT * FROM Empresa
UNION
SELECT * FROM Cliente;
União
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
110Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Intersecção (∩)�
AA BB CC
a2 b2 c2R R ∩∩∩∩∩∩∩∩ S =S =
AA BB CC
a1 b1 c1
a2 b2 c2
a3 b3 c3
AA BB CC
a1 b2 c3
a2 b2 c2
RR SS
Intersecção
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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 ]
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Somos Ldª Rua dos Coxos Guarda 960000001
Vanguarda Rua dos Sábios Guarda 960000002
Nabeiro SA Rua de Aviz Tomar 960000003
Serra e Sol Ldª Rua dos Mestres Covilhã 960000004
EmpresaEmpresa
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Somos Ldª Rua dos Coxos Guarda 960000001
Castelo Rua do Castelo Évora 960000005
Nabeiro SA Rua de Aviz Tomar 960000003
ClienteCliente
Empresa Empresa ∩ Cliente =Cliente =
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Somos Ldª Rua dos Coxos Guarda 960000001
Nabeiro SA Rua de Aviz Tomar 960000003
SELECT * FROM Empresa
INTERSECT
SELECT * FROM Cliente;
Intersecção
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
111Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
AA BB CC
a1 b1 c1
a2 b2 c2
a3 b3 c3
AA BB CC
a1 b2 c3
a2 b2 c2
RR SS
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.
Diferença (-)�
AA BB CC
a1 b1 c1
a3 b3 c3R R -- S =S =
Diferença
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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 ]
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Somos Ldª Rua dos Coxos Guarda 960000001
Vanguarda Rua dos Sábios Guarda 960000002
Nabeiro SA Rua de Aviz Tomar 960000003
Serra e Sol Ldª Rua dos Mestres Covilhã 960000004
EmpresaEmpresa
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Somos Ldª Rua dos Coxos Guarda 960000001
Castelo Rua do Castelo Évora 960000005
Nabeiro SA Rua de Aviz Tomar 960000003
ClienteCliente
Em ORACLE:
SELECT * FROM Empresa
MINUS
SELECT * FROM Cliente;
Empresa Empresa - Cliente =Cliente =
EmpresaEmpresa MoradaMorada CidadeCidade ContactoContacto
Vanguarda Rua dos Sábios Guarda 960000002
Serra e Sol Ldª Rua dos Mestres Covilhã 960000004
Diferença
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
Em Sql Server:
SELECT * FROM Empresa
EXCEPT
SELECT * FROM Cliente;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
112Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Divisão (÷)�
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.
AA BB
a1 b1
a2 b2
a3 b1
BB
b1
RR SS
R R ÷ SS
AA
a1
a3
Divisão
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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 ]
NomeProfNomeProf NomeDisciplinaNomeDisciplina
Ricardo Bases de Dados
Hugo Bases de Dados
Ricardo Segurança em Redes Informáticas
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
ProfessoresProfessores
NomeDisciplinaNomeDisciplina
Bases de Dados
Segurança em Redes Informáticas
Matemática e Estatística
DisciplinasDisciplinas
Professores Professores ÷ Disciplinas Ricardo:Disciplinas Ricardo:NomeNome
Ricardo
Hugo
Divisão
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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
NomeDisciplinaNomeDisciplina
Bases de Dados
Segurança em Redes Informáticas
Disciplinas RicardoDisciplinas Ricardo
select nomeprof from
Professores p, Disciplinas Ricardo d
where
p.NomeDisciplina = d.NomeDisciplina
group by nomeprof
having count(*) > 1
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
113Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
O esquema resultante é a “soma” das tabelas base, através da combinação das duas relações.
Produto Cartesiano (-)�
AA BB CC
a1 b1 c1
a2 b2 c2
a3 b3 c3
RR
DD EE
d1 e1
d2 e2
TT
Produto Cartesiano
R R x T =x T =
AA BB CC DD EE
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
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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 ]
codClientecodCliente MoradaMorada ContactoContacto
1022 Dias da Silva 910000000
1025 Av. De Tóquio 910000001
ClienteCliente
ID_ClienteID_Cliente FacturaFactura
1022 101
1025 321
FacturaFactura
SELECT *
FROM Cliente, Factura;
Cliente xCliente x Factura =Factura =
codClientecodCliente MoradaMorada ContactoContacto ID_ClienteID_Cliente FacturaFactura
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
Produto Cartesiano
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
114Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Junção ou Join
AA BB CC
a1 b1 c1
a2 b2 c2
a3 b3 c3
a4 b4 c4
RR
AA EE
a1 e1
a2 e2
a1 e3
TT
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 R ∞∞∞∞ T =
AA BB CC AA EE
a1 b1 c1 a1 e1
a1 b1 c1 a1 e3
a2 b2 c2 a2 e2
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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 ]
codClientecodCliente MoradaMorada ContactoContacto
1022 Dias da Silva 910000000
1023 Praça da Monarquia 910000002
1024 Rua do Sofá 910000004
1025 Av. De Tóquio 910000001
ClienteCliente
ID_ClienteID_Cliente FacturaFactura
1022 101
1023 102
1022 103
FacturaFactura
Cliente Cliente ∞∞∞∞ Factura =
codClientecodCliente MoradaMorada ContactoContacto ID_ClienteID_Cliente FacturaFactura
1022 Dias da Silva 910000000 1022 101
1022 Dias da Silva 910000000 1022 103
1023 Praça da Monarquia 910000002 1023 102
SELECT *
FROM Cliente, Factura
WHERE codCliente = ID_Cliente;
Junção ou Join
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
115Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
AA BB CC
a1 b1 c1
a2 b2 c2
a3 b3 c3
RR
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,CB,C(R) =(R) =
BB CC
b1 c1
b2 c2
b3 c3
Projecção
Nas implementações em SQL, a remoçãode tuplos duplicados é feita com recursoao operador DISTINCT
Projecção
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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 ]
Factura
codFacturacodFactura CodClienteCodCliente DataData codEmpregadocodEmpregado ValorValor
112233 1024 05/05/2007 123 135000€
112234 4319 05/05/2007 451 98000€
112235 2055 05/07/2007 451 244000€
SELECT codCliente
FROM Factura;
Projecção 1
CodClienteCodCliente
1024
4319
2055
SELECT codCliente, Valor
FROM Factura;
CodClienteCodCliente ValorValor
1024 135000€
4319 98000€
2055 244000€
Projecção 2
Projecção
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
116Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Selecção
AA BB CC
a1 b1 c1
a2 b2 c2
a3 b3 c3
RR
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.
Selecção (σ)�
σσσσσσσσA A ∈∈∈∈∈∈∈∈ {a1,a2}{a1,a2}(R) =(R) =
AA BB CC
a1 b1 c1
a2 b2 c2
Álgebra Relacional
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
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 ]
Factura
codFacturacodFactura CodClienteCodCliente DataData codEmpregadocodEmpregado ValorValor
112233 1024 05/05/2007 123 135000€
112234 4319 05/05/2007 451 98000€
112235 2055 05/07/2007 451 244000€
SELECT codCliente
FROM Factura
WHERE Valor > 100000
CodClienteCodCliente
1024
2055
Selecção e Restrição
SELECT *
FROM Factura
WHERE Valor > 100000
codFacturacodFactura CodClienteCodCliente DataData codEmpregadocodEmpregado ValorValor
112233 1024 05/05/2007 123 135000€
112235 2055 05/07/2007 451 244000€
Restrição
Selecção
Álgebra Relacional
Linguagem SQL
Álgebra RelacionalUniãoIntersecção
Divisão
DiferençaProduto CartesianoJunção
Selecção
Projecção
Operações UnáriasOperações Binárias
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
117Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Linguagens Procedimentais vs Declarativas
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;
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.
Álgebra Relacional
Linguagem SQL
Álgebra RelacionalTipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Linguagens Procedimentais vs Declarativas
Álgebra Relacional
Linguagem SQL
Álgebra RelacionalTipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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."
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
118Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
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.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
SQL Embebido
� Um pré-processador converte as declarações SQL em APIs;
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;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
� Depois um compilador é usado para compilar o código.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
119Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
APIs (Application Program Interface)
As APIs são uma alternativa ao SQL embebido;
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)
JDBC
ODBC
JDBC
DB 2
Aplicação
Sybase
SQL
ORACLE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
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 ]
ODBC (Open Database Connectivity)
É um API standard utilizado para comunicar com o servidor de bases de dados;
As bases de dados que suportam ODBC disponibilizam um driver para estabelecer comunicação com o programa cliente.
APIs - ODBC
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
� Abre uma conexão com a base de dados;
� Envia queries;
� Devolve resultados.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
120Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
JDBC: Java API (classes e interfaces em java.sql package).
� Data Source (processa, vindas do Driver, as declarações SQL e devolve os resultados).
APIs - JDBC
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
� 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);
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 ]
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);
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Duas vertentes da Linguagem SQL
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
121Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
DML (Data Manipulation Language)
Explo: encontrar o nome do cliente com codCliente = 7select cliente.nome
from cliente
where cliente.codCliente= ‘7’
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Duas vertentes da Linguagem SQL
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 ]
Comandos DDL
CREATE TABLE�
DROP TABLE�
ALTER TABLE�
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
122Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
O comando CREATE TABLE permite ao utilizador criar uma nova tabela.Para cada atributo da tabela é definido um nome, um tipo e algumasrestrições:
CREATE TABLE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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);
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 ]
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
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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);
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
123Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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));
CREATE TABLE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
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);
CREATE TABLE teste (Id Integer PRIMARY KEY,
Nome char(60),
Telefone CHAR(15),
BI Integer,
UNIQUE (nome, BI));
Ou
CREATE TABLE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
124Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
CREATE TABLE teste (Id Integer PRIMARY KEY,
Nome char(60) UNIQUE,
Telefone CHAR(15),
BI Integer UNIQUE);
Numa tabela apenas pode existir uma PRIMARY KEY, enquanto podem existir várias ocorrências da cláusula UNIQUE
CREATE TABLE teste (Id Integer NOT NULL,
Nome char(60) NOT NULL,
Telefone CHAR(15),
BI Integer NULL,
PRIMARY KEY (id, nome));
Se a chave primária for constituída por vários campos:
CREATE TABLE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
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
CHECK (idade BETWEEN 0 and 150),
Salario NUMERIC(10,2) NOT NULL
CHECK (salario > 0),
Telefone CHAR(12) NULL,
cod_postal NUMERIC(4)
REFERENCES postal(codigo));
Qualquer valor introduzido na coluna cod_postal da tabela Pessoa será validado na coluna Codigo da tabela Postal
CREATE TABLE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
125Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
CREATE TABLE
Criação de uma tabela a partir de outra tabela:
SELECT nome, numEleitor into amostra
FROM eleitor
WHERE numEleitor <= 2000;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
É 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áriaFROM tabPermanente WHERE...
SELECT *FROM #tabPermanente
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 ]
O comando DROP TABLE permite a exclusão de uma tabela
DROP TABLE
DROP TABLE <nome_tabela>;
DROP TABLE empregados;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
126Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
ALTER TABLE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
O comando ALTER TABLE permite que o utilizador faça a inclusão de novosatributos numa tabela. A restrição NOT NULL não é permitida. Assim que seinsere um novo atributo na tabela, o valor para o mesmo em todas as linhasserá NULL
ALTER TABLE <nome_tabela> add <nome_coluna> <tipo_coluna> drop column <nome_coluna>;
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 ]
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;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
127Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 serconstruído o índice;
UNIQUE não permite que o índice tenha valores duplicados;
DESC ou ASC permitem criar índices por ardem descendente ou ascendenterespectivamente;
WITH define algumas regras de validação dos dados do índice:
CREATE INDEX
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Com a opção PRIMARY o campo (ou campos) envolvido é designado comoPRIMARY KEY:
CREATE INDEX IndiceChavePrimaria
ON CLIENTES ([codCliente])
WITH PRIMARY;
Considere-se a seguinte tabela:
Clientes (codCliente, nome, morada, numContribuinte)
Com a opção DISALLOW NULL não é permitido que, na criação de novosregistos, o campo (ou campos) indexado contenha valores nulos.
CREATE UNIQUE INDEX Contribuinte
ON CLIENTES ([numContribuinte])
WITH DISALLOW NULL;
CREATE INDEX
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
128Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 emboraapareç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 natabela 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.
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Utilidades
Restringir o acesso à base de dados mostrando apenas parte dos dados;
VIEWS
Simplificar a consulta dos dados, substituindo consultas complexasenvolvendo várias tabelas por consultas simples sobre a vista;
Permitir que os mesmos dados sejam visualizados de diferentes maneiraspor 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;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
129Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
As views não podem conter a cláusula ORDER BY e apenas permitem ainserção, remoção e alteração de registos caso não contenham as cláusulasGROUP BY e UNION.
CREATE VIEW DistNotas (Disciplina, Minimo, Maxima, Media)ASSELECT D.NOME, MIN(NOTA), MAX(NOTA), AVG(NOTA)FROM DISCIPLINA D, ADWHERE D.CODIGO = AD.CODIGOGROUP BY NOME;
CREATE VIEW Clientes_Lisboa (BI, Nome)
AS Select BI, Nome FROM Cliente
Where Localidade = 'Lisboa'
WITH CHECK OPTION;
CREATE VIEW
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
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_LINKSUSER_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;
CREATE DATABASE LINKS
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
130Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 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;
create snapshot clientes_lx as select * from clientes@lx;
CREATE SNAPSHOT
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Comandos DML
SELECT�
UPDATE�
DELETE�
INSERT�
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
131Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Um comando SQL típico para selecção de linhas obedece à seguinteestrutura (em que a cláusula SELECT corresponde à projecção, a cláusulaFROM 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;
SELECT
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Lista o nome e morada de uma tabela de clientes, mas apenas os clientescujo saldo é superior a 2500€ (ordenado por nome):
SELECT nome, morada
FROM cliente
WHERE cliente.saldo > 2500
ORDER BY nome;
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;
SELECT
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
132Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
SELECT
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
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;
SELECT
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
133Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
FROM
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
À 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;
FROM
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
No SQL Server não é necessário especificar o nome da tabela;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
134Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
WHERE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
SELECT * FROM Cliente, CódigoPostal WHERE Cliente.CodPostal = CódigoPostal.CodPostal;
Alguns exemplos:
WHERE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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)
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
135Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Equi-Join;
Produto Cartesiano (Cross Join);
Left Join; Right Join;
Self Join;
Union Union ALL;
Intersect;
Minus / Except;
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 ]
SELECT *
FROM Cliente, Factura
WHERE codCliente = ID_Cliente;
codClientecodCliente MoradaMorada ContactoContacto
1022 Dias da Silva 910000000
1025 Av. De Tóquio 910000001
ClienteClienteID_ClienteID_Cliente FacturaFactura
1022 101
1025 321
FacturaFactura
Cliente EquiCliente Equi--JoinJoin Factura =Factura =
codClientecodCliente MoradaMorada ContactoContacto ID_ClienteID_Cliente FacturaFactura
1022 Dias da Silva 910000000 1022 101
1025 Av. De Tóquio 910000001 1025 321
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)
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Junção de tabelas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
136Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Por isso, quando se faz a junção das tabelas, é comum seleccionar as colunas sem que exista repetição de dados:
Não faz no entanto muito sentido que na junção das tabelas se obtenham duas colunas com a mesma informação
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;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Junção de tabelas
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 ]
SELECT *
FROM Cliente, Factura;codClientecodCliente MoradaMorada ContactoContacto
1022 Dias da Silva 910000000
1025 Av. De Tóquio 910000001
ClienteCliente
ID_ClienteID_Cliente FacturaFactura
1022 101
1025 321
FacturaFactura
Cliente xCliente x Factura =Factura =
codClientecodCliente MoradaMorada ContactoContacto ID_ClienteID_Cliente FacturaFactura
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
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
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Junção de tabelas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
137Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
codClientecodCliente MoradaMorada ContactoContacto
1022 Dias da Silva 910000000
1025 Av. De Tóquio 910000001
2099 Bairro do Amor 910000002
ClienteClienteID_ClienteID_Cliente FacturaFactura
1022 101
1025 321
1030 900
FacturaFactura
Considerem-se as seguintes tabelas:
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Junção de tabelas
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 ]
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 JoinCliente RIGHT Join Factura =Factura =
codClientecodCliente MoradaMorada ContactoContacto ID_ClienteID_Cliente FacturaFactura
1022 Dias da Silva 910000000 1022 101
1025 Av. De Tóquio 910000001 1025 321
2099 Bairro do Amor 910000002
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Junção de tabelas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
138Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 JoinCliente Right Join Factura =Factura =
codClientecodCliente MoradaMorada ContactoContacto ID_ClienteID_Cliente FacturaFactura
1022 Dias da Silva 910000000 1022 101
1025 Av. De Tóquio 910000001 1025 321
1030 900
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Junção de tabelas
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 ]
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
NomeNome CidadeCidade
António Lisboa
João Porto
Pedro Coimbra
Zé Lisboa
Rui Coimbra
SELECT tx.nome, ty,nome
FROM Vivem AS Tx, Vivem As Ty
WHERE Tx.Cidade = Ty.Cidade
Group by tx.nome
Having count(*) > 1
VivemVivem
Vivem AS tx xVivem AS tx x Vivem AS ty =Vivem AS ty =
Tx.NomeTx.Nome Tx.CidadeTx.Cidade Ty.nomeTy.nome Ty.cidadeTy.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
Rui Coimbra João Porto
Rui Coimbra Pedro Coimbra
Rui Coimbra Zé Lisboa
Rui Coimbra Rui Coimbra
Determinar pessoas que vivem na mesma cidade:
Self Join
Variante do Inner Join em que se comparam duas colunas da mesma tabela
Junção de tabelas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
139Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Tx.NomeTx.Nome Tx.CidadeTx.Cidade Ty.nomeTy.nome Ty.cidadeTy.cidade
António Lisboa António 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.nomea, ty,nome
FROM Vivem AS Tx, Vivem As Ty
WHERE Tx.Cidade = Ty.Cidade
Tx.NomeTx.Nome Tx.CidadeTx.Cidade Ty.nomeTy.nome Ty.cidadeTy.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
Rui Coimbra João Porto
Rui Coimbra Pedro Coimbra
Rui Coimbra Zé Lisboa
Rui Coimbra Rui Coimbra
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Junção de tabelas
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 ]
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Tx.NomeTx.Nome Tx.CidadeTx.Cidade Ty.nomeTy.nome Ty.cidadeTy.cidade
António Lisboa António 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.NomeTx.Nome Ty.nomeTy.nome
António António
António Zé
Pedro Pedro
Pedro Rui
Zé António
Zé Zé
Rui Pedro
Rui Rui
Junção de tabelas
SELECT distinct tx.nome
FROM Vivem AS Tx, Vivem As Ty
WHERE Tx.Cidade = Ty.Cidade
Group by tx.nome
Having count(*) > 1
Tx.NomeTx.Nome
António
Pedro
Zé
Rui
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
140Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Devolve os nomes dos clientes e fornecedores:
SELECT Nome FROM Cliente
UNION
SELECT Nome FROM Fornecedor;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
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 ]
Caso não pretendamos eliminar nomes duplicados:
SELECT Nome FROM Cliente
UNION ALL
SELECT Nome FROM Fornecedor;
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;
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Junção de tabelas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
141Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
Junção de tabelas
INTERSECT
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;
MINUS / EXCEPT
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 ]
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.
GROUP BY e HAVING
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
142Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
GROUP BY e HAVING
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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
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);
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 ]
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
GROUP BY e HAVING
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
143Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Número Nome CodPostal
001 João 1500
013 Ana 2100
056 Luis 1500
001 Paula 2100
011 Nuno 1300
Cliente
Número Nome CodPostal
001 João 1500
056 Luis 1500
CodPostal = 1500 (Total:2)
Número Nome CodPostal
013 Ana 2100
001 Paula 2100
CodPostal = 2100 (Total:2)
Número Nome CodPostal
011 Nuno 1300
CodPostal = 1300 (Total:1)
CodPostal COUNT(CodPostal)
1500 2
2100 2
1300 1
Nova tabela temporária
CodPostal COUNT(CodPostal)
1500 2
2100 2
Resultado Final
GROUP BY e HAVING
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Funções de Agregação
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
As funções de agregação retornam resultados (um número) após aefectivação de cálculos baseados em múltiplas linhas. Basicamentecombina múltiplas linhas num só número;
Nome DescriçãoAVG Média de um grupo de valoresCount Conta o número total de linhas de um dado conjuntoMAX Retorna o valor máximo de uma colunaMIN Retorna o valor mínimo de uma colunaSUM Faz a soma dos valores de uma dada coluna
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
144Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Funções de Agregação
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Devolve o total de clientes com o código postal conhecido:
Retorna o total de registos de clientes:
SELECT COUNT(*) FROM Cliente;
SELECT COUNT(CodPostal) FROM Cliente;
O segundo comando é equivalente ao seguinte:
SELECT COUNT(*) FROM Cliente WHERE CodPostal IS NOT NULL;
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 ]
No entanto, o resultado do comando seria a listagem de todos os nomes com aindicação do BI associado a cada nome. As Subqueries resolvem este problema.
Funções de Agregação
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
145Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Funções de Row-Level
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 DescriçãoABS Retorna um valor absolutoCEILING Retorna o valor inteiro mais à direitaFLOOR Retorna o valor inteiro mais à esquerdaISNULL Retorna o valor verdadeiro se o campo contiver o valor nuloNULLIF Retorna nulo se uma dada condição ocorrer numa expressãoROUND Arredonda os números para um número específicado de
casas decimaisSTR Converte um número para um caracterSQRT Retorna a raiz quadrada de valores positivosSQUARE Retorna o quadrado de um número
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 ]
Funções de Row-Level
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
146Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Funções de Row-Level
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
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 ]
Funções de Strings
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Existem definidas um conjunto de funções que operam sobre strings:
Nome DescriçãoCHARINDEX Retorna a posição inicial de um padrão especificadoLEFT Retorna com base numa string o conjunto de caracteres
(especificado) mais à esquerdaLEN Retorna o tamanho de uma stringLIKE Faz uma comparação de acordo com um determinado
padrãoLOWER Devolve uma string em minúsculasRIGHT Retorna com base numa string o conjunto de caracteres
(especificado) mais à direitaRTRIM Remove espaços brancos à direitaSUBSTRING Retorna parte de uma stringUPPER Devolve uma string em maiúsculas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
147Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Funções de Strings
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
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 ]
Funções de Strings
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
148Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Funções de Strings
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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%’
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 ]
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’
Funções de Strings
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
149Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Pesquisa Descrição Exemplo‘a%s’ Qualquer string começada
obrigatoriamente por a e terminada por s
As, almas, aBs, aas, aAs
‘a_s’ String formada por 3 caracteres, começada por a e terminada por s
aBs, aAs, aas, ass
‘al%’ String começada obrigatoriamente por al
Al, all, alface, almodovar
‘[abc]%’ Qualquer string começada obrigatoriamente por a, b ou c
Arvore, bola, cão
‘[0-9]%[abc]’ String começada por um dígito e terminada pelo caracter a, b ou c
99778a, 8b
‘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
Almodovar,Alpendre,alma,
Funções de Strings
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
WildCards
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 ]
Funções de Data
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
A utilização dos tipos DATETIME e SMALLDATETIME permite a utilização de um conjunto de funções:
Nome DescriçãoDATEADD Adiciona uma parte específica da dataDATEDIFF Retorna a diferença entre duas datasDATEPART Retorna uma parte específica da data solicitadaDAY Extrai o dia de uma dataGEtdATE Retorna a data e a hora do sistemaMONTH Extrai o mês de uma dataSET DATEFORMAT Modifica o formato no qual o SQL Server lê as datas.YEAR Extrai o ano de uma data
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
150Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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
Funções de Data
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
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
Funções de Data
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
151Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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')
Funções de Data
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Outras Funções
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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çãoDISTINCT Omite linhas duplicadasPERCENT Retorna uma determinada percentagem de registros
de acordo com um valor especificadoTOP Retorna um número específico de registros do início
dos resultados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
152Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Outras Funções
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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
Suponhamos que queremos devolver os dois primeiros nomes da tabela clientes:
SELECT TOP 2 nome
FROM cliente
Uma vez que não existe o comando BOTTOM podemos simulá-lo:
SELECT TOP 2 nome
FROM cliente
ORDER BY codPostal DESC
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 ]
Outras Funções
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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
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
A função pode funcionar com funções de agregação:
SELECT COUNT(DISTINCT nome)
FROM cliente
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
153Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Em termos práticos, uma subquery é um comando SELECT dentro de umcomando SELECT e normalmente liga-se a outro através da cláusulaWHERE.
Subqueries
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Uma das características do comando SELECT reside no facto do comandonão devolver dados, linhas ou colunas, mas….uma tabela;
Isto é particularmente visível no facto de serem sempre atribuídos nomes àscolunas resultantes de um SELECT;
Sendo o resultado de qualquer comando SELECT uma tabela, podemosentão utilizar os resultados devolvidos nessa tabela e incorporá-los noutrocomando SELECT que deles necessite;
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 ]
Alunos (numAluno, nome, morada, sexo);
Disciplinas (codDisciplinas, designação, créditos);
Exames (numAluno, codDisciplinas, data, nota, local).
Considere o seguinte modelo relacional:
Obter a nota máxima alcançada pelos alunos independentemente dadisciplina:
SELECT MAX (EXAMES.Nota) AS NOTA_MAXIMA
FROM Exames;
Subqueries
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
154Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 dosalunos 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 ovalor fixo 16, o que provoca grande inflexibilidade.
Subqueries
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Uma solução mais elegante passa por criar uma subquery, utilizando oresultado da query que retorna o valor da nota máxima como input paraa query que selecciona os alunos que obtiveram essa nota máxima:
SELECT DISTINCT ALUNOS.nome, EXAMES.nota
FROM ALUNOS, EXAMESWHERE ALUNOS.numAluno = EXAMES.numAluno and
EXAMES.nota = (SELECT MAX(EXAMES.nota) AS NOTA_MAXIMA FROM EXAMES);
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 ]
As subqueries também podem ser colocadas nas cláusula FROM.
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;
SELECT DISTINCT Nome
FROM (Select * From Cliente) as Cliente;
Subqueries
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
155Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Subqueries
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
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;
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 ]
Subqueries Não-Correlacionadas
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Numa query não-correlacionada o SELECT interior não depende do SELECT exterior:
Assim, o SELECT exterior depende do resultado devolvido pelo SELECTinterior. O sentido da execução é de dentro para fora, ou seja, em primeirolugar é executada a query interior;
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
156Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Subqueries Correlacionadas
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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:
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;
SELECT Nome, salario
FROM pessoa P
WHERE salario < (SELECT sum(valor)
FROM comissao C
WHERE C.id = P.id) * 15
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 ]
Subqueries Correlacionadas e Não-Correlacionadas
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Query Não-Correlacionada Query CorrelacionadaSentido da Execução Do Interior para o Exterior Do Exterior para o
InteriorDependência da Query Interior
Não depende da query exterior
Depende da query exterior
Execução da Query Interior
Uma única vez Tantas vezes quantas as executadas pela query exterior
Resumo:
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
157Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
IN
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 pelomenos 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 dosalunos que tenham feito exame à disciplina 1:
SELECT EXAMES.numAluno
FROM EXAMES, DISCIPLINAS
WHERE EXAMES.codDisciplinas = DISCIPLINAS.codDisciplinas and DISCIPLINAS.codDisciplinas = ‘1’;
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 ]
A lista retornada por esta query pode ser utilizada como input para umaquery que seleccione o nome dos alunos da tabela ALUNOS com baseno 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’);
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
IN
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
158Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Pretende-se obter a lista com o nome dos alunos que tenham realizadoexame 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 anenhuma disciplina:
SELECT ALUNOS.nome
FROM ALUNOS
WHERE ALUNOS.numAluno NOT IN (SELECT EXAMES.numAluno FROM EXAMES);
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
NOT IN
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 ]
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.
SELECT DISTINCT ALUNOS.nome
FROM ALUNOS, EXAMES
WHERE EXAMES.numAluno = ALUNOS.numAluno and EXAMES.local = ‘UBI’;
Considere-se que se pretendia obter uma listagem com os nomes dosalunos que realizaram exame no local UBI
EXISTS
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
159Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
EXISTS
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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
SELECT ALUNOS.nome
FROM ALUNOS WHERE EXISTS (SELECT * FROM EXAMES WHERE EXAMES.numAluno =
ALUNOS.numAluno and EXAMES.local = ‘UBI’);
Uma alternativa é utilizar o operador EXISTS (para toda a linharetornada na subquery, portanto retorna True, Alunos.nome vai serimpresso)
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 ]
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;
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:
EXISTS
Álgebra Relacional
Linguagem SQL
SQL embebido VS APIs
Comandos DDL
Definição de SQLComandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
160Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Admita-se que se pretende obter uma listagem com o nome dos alunos que tenham obtido alguma nota superior a 12.
Os operadores ALL (todos) e ANY (pelo menos um) também são frequentes nas subqueries.
SELECT ALUNOS.nome
FROM ALUNOS
WHERE ALUNOS.numAluno = ANY (SELECT EXAMES.numAluno FROM EXAMES WHERE EXAMES.nota > 12);
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));
A query seguinte vai retornar o número e o nome do aluno que obteve a classificação mais elevada, utilizando o predicado ALL:
ALL e ANY
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
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’;
UPDATE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
161Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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’;
DELETE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
TRUNCATE
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
162Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Para inserir um conjunto de linhas, um comando INSERT obedece à seguinteestrutura: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’;
INSERT
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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)
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 ]
INSERT
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 = ‘,’)
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
163Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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/manipulardeterminado tipo de objecto (direito a criar tabelas, apagar linhas dequalquer 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…)
Comandos SQL para administração de privilégios
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
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
GRANT (concede privilégios)
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
164Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
GRANT (concede privilégios)
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Quando um utilizador recebe um privilégio não recebe, autorização parapassar esse privilégio a outros. A cláusula WITH GRANT OPTION confereautorizaçã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 utilizadorescom um único comando:
GRANT SELECT
ON ELEITOR
TO PUBLICO;
GRANT (concede privilégios)
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
165Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
REVOKE (retira privilégios)
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
Utilização de Sinónimos
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Uma possibilidade de nos referirmos a uma tabela, é através de aliases comjá vimos anteriormente:
SELECT c.dname FROM cliente c
Acontece que os aliases não são permanentes uma vez que não existemapós a execução da query;
Assim, uma forma alternativa de nos referirmos a uma tabela é através dautilização de sinónimos os quais estão disponíveis até serem apagados;
Sinónimos são normalmente nomes pequenos que podem ser usados emvez do nome da tabela:
CREATE SYNONYM synonym_nameFOR Table_name
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
166Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Utilização de Sinónimos
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
SELECT *
FROM c
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:
Para eliminar um sinónimo:
DROP SYNONYM c
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 ]
Definição de Store Procedures
É possível passar parâmetros para um SP, assim como um SP retornarvalores (nomeadamente o resultado de comandos SELECT). Os SP podemser chamados dentro de um comando SELECT ou a partir de uma linguagemprocedimental (através da primitiva CALL).
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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.);
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
167Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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);
Definição de Store Procedures
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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 ]
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.
PL/SQL
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
168Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
T_SQL (Transact SQL)
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
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
Vamos acrescentar à base de dados onde se encontra a tabela Alunos o seguinte store procedure:
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;
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 ]
CREATE PROCEDURE BuscaPessoa
@nome varchar(50)
AS
declare @pesquisa varchar(50)
declare @contagem int
select @pesquisa = '%' + @nome + '%'
select @contagem = count(*)
from Alunos
where Nome like @pesquisa
declare @mensagem varchar(100)
IF @contagem != 0
begin
select @mensagem =
convert(varchar,@contagem) +
' pessoas encontradas'
print @mensagem
select nome, morada, sexo
from Alunos
where Nome LIKE @pesquisa
order by Nome
end
ELSE
begin
select @mensagem =
'Não foi encontrado "'+@nome+'"'
print @mensagem
end
T_SQL (Transact SQL)
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
169Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
A execução do store procedure vai solicitar um nome para pesquisa. É produzido um resultado e uma mensagem de acordo com o valor introduzido:
T_SQL (Transact SQL)
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 ]
Triggers
Os triggers podem ainda ser row-level ou statement-level. Os triggers row-level ocorrem após cada linha da tabela ser alterada (anulada ou inserida). Ostriggers statement-level ocorrem após uma operação sobre a tabela serconcluída (por exemplo, após um conjunto de registos ser inserido).
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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);
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
170Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
create table factura
(NumFactura numeric(10) primary key,
ValorTotal numeric(10,2) default (0) )
Triggers
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
O procedimento associado ao trigger obedece no essencial à mesma sintaxe que os SP.
Vamos primeiro criar as tabelas para o exemplo:
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)
)
create table produto
(codProduto int primary key,
preco real default (0) )
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 ]
Triggers
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
171Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Triggers
Álgebra Relacional
Linguagem SQL
Tipos de Linguagens
SQL embebido VS APIs
Comandos DDL
Definição de SQL
Comandos DML
Comandos SQL para Privilégios
Store Procedures
Sinónimos
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)
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 ]
Transacções, Recuperação e Optimização
Ricardo Campos ([email protected])
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
172Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Sumário
Sumário
Transacções, Recuperação e Optimização�
Tipos de Transacção;
Definição 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;
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 ]
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
ACONTA
B
Débito 100 Crédito 100
BD
Inconsistente
Falha no sistema
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
173Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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).
Características da Transacção
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
Comandos de Transacção
ROLLFORWARD – refaz tudo como estava anteriormente
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
174Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Flat Transactions
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.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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.
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 ]
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 */
Save Points (rollback / rollforward)
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
175Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Save Points (rollback / rollforward)
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
Úteis em transacções muito longas.
Save Points (rollback / rollforward)
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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).
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
176Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Save Points (rollback / rollforward)
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
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 */
Chained Transactions (commit point)
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
177Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
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.
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 ]
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.
Transacções
Recuperação / Tolerância a Falhas
Índices
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
178Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
As transacções podem se executadas de duas formas:
Execução em Série;
Execução Concorrente
As várias transacções submetidas ao sistema são executadas sequencialmente, só se iniciando uma quando a anterior tiver finalizado.
A execução de uma transacção é constituída por vários acessos de leitura e escrita à base de dados;
Execução em Série e Execução Concorrente de Transacções
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.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
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
Execução em Série e Execução Concorrente de Transacções
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
179Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Definição de Concorrência
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
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.
Definição de Concorrência
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
180Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Definição de Concorrência
Execução em sérieTempo Operação Saldo
1 T1 Ler saldo 1000
2 T1 Escrever Saldo 900
3 T2 Ler Saldo 900
4 T2 Escrever Saldo 500
Exemplos de execuções
Transacção T1 Transacção T2
Ler saldo Ler saldo
Saldo = Saldo - 100 Saldo = Saldo - 400
Escrever Saldo Escrever Saldo
Tempo Operação Saldo
1 T1 Ler saldo 1000
2 T2 Ler Saldo 1000
3 T2 Escrever Saldo 600
4 T1 Escrever Saldo 900
Execução concorrente
Estado da base de dados consistente Estado da base de dados inconsistente
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
Existem 3 métodos de controlo de concorrência que automaticamente asseguram escalonamentos serializados:
Escalonamentos Serializados
Optimistas;
Mecanismos de Etiquetagem (preventivo);
Mecanismos de locking (preventivo).
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
181Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Optimistas�
Parte do pressuposto que as interferências são raras. Deixa ocorrer astransacções até ao fim, e depois verifica se o commit não traz problemas deserializaçã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. Osdados acedidos (para leitura ou escrita) ficam com ID da etiqueta que lheacede.
Existe um conflito quando uma transacção tenta aceder a um elemento dedados cujo valor de etiqueta é superior ao seu. Nesse caso é necessáriodesfazer e reiniciar a transacção. Existem abordagens mais elaboradas cometiquetas de leitura e escrita.
Escalonamentos Serializados
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
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.
Escalonamentos Serializados
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
182Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
A cada lock de leitura é necessário associar um valor que traduza o número detransacções que, em cada momento, mantêm esse tipo de lock. O valor vaisendo decrementado à medida que as transacções vão libertando o elementode dados.
Problemas de locks: deadlock. Quando transacções concorrentes lutam porrecursos na posse da sua concorrente, entrando-se num ciclo infinito deespera.
Um elemento da base de dados pode ter um de três estados:
lock para leitura;
lock para escrita;
unlocked.
Escalonamentos Serializados
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
Transacção A Transacção B
UPDATE FUNCIONARIOS
SET NOME = “Tiago”
WHERE NUM = 986;
UPDATE FUNCIONARIOS
SET NOME = “Raul”
WHERE NUM = 1002;
UPDATE FUNCIONARIOS
SET SAL = SAL * 2
WHERE NUM = 1002;
UPDATE FUNCIONARIOS
SET SAL = SAL * 2
WHERE NUM = 986;
Podem gerar-se impasses quando dois ou mais utilizadores tentam aceder aosmesmos dados e cada utilizador fica à espera dos objectos detidos pelo outroutilizador:
Não se pode continuar porque o registo do
funcionario NUM = 1002 está bloqueado pela
Transacção B
Não se pode continuar porque o registo do
funcionario NUM = 986 está bloqueado pela
Transacção A
Escalonamentos Serializados
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
183Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Como lidar com impasses?
Prevenir os impasses
Detectar os impasses e recuperar dessa situação
Usa-se em sistemas em que a probabilidade de surgirem impasses é elevada;
Usa-se em sistemas em que a probabilidade de surgirem impasses é é baixa;
Escalonamentos Serializados
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Tipos de Transacção
Concorrência
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 ]
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
Definição de Tolerância a Falhas
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Mecanismos
Tipos de Falhas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
184Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Backups:
Transaction Logging
São cópias de segurança executadas periodicamente abrangendo toda a base de dados
É 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).
Mecanismos de Recuperação
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Mecanismos
Tipos de Falhas
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 ]
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.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Mecanismos
Tipos de Falhas
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
185Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Porquê Índices?
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
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;
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 ]
Porquê Índices?
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
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;
Nome Morada Morada1 Cidade
Ricardo Rua A Quinta Covilhã
Nuno Rua B Covilhã
Ana Rua C Tomar
Carla Rua D Lisboa
Suponhamos que queremos processar a tabela de clientes ordenada por nome;
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
186Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
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 ]
Índices são o equivalente a um índice remissivo de um livro, pois permitem localizar rapidamente a informação pretendida. Os índices são:
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 SQLCREATE 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;
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Criação de Índices
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;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
187Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Criação de Índices
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
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 ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Criação de Índices
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
Suponha-se o seguinte conjunto de dados, sobre o qual vamos criar um índice por nome:
Célia
José
Florinda
António
BeatrizAna Paulo
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
188Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Í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;
Facilita a procura de linhas na tabela.
Índice Único�
Índice de Performance�
Índices Únicos e de Performance
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
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 ]
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.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Ficheiros de Índices
Nome Morada Morada1 Cidade
Ricardo Rua A Quinta Covilhã
Nuno Rua B Covilhã
Ana Rua C Tomar
Carla Rua D Lisboa
Nome
Ana �
Carla �
Nuno �
Ricardo �
Ficheiro de Índice Ficheiro de Dados
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
189Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
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 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;
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 ]
Transacções
Recuperação / Tolerância a Falhas
Índices
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)
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
190Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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).
Func
0001 �
0005 �
0010 �
0015 �
Ficheiro de Índice
Func Nome
0005 Xavier
0015 Carlos
0001 Alberto
0010 Manuel
Ficheiro de DadosNome
� Alberto
� Carlos
� Manuel
� Xavier
Ficheiro de Índice
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.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Ficheiros de Índices
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 ]
É frequente consultar as publicações por assunto:
ISBM Título Data Assunto
1 A 1998 História
2 D 1997 Informática
3 C 1994 Sociologia
4 Z 2000 Informática
5 F 1986 Direito
Assunto Índice
Direito
História
Informática
Informática
Sociologia
Ficheiro de Índice (ordenado por assunto) Tabela de Publicação
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;
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Ficheiros de Índices
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
191Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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):
Assunto/Data Índice
Direito+1986
Informática+1997
Ficheiro de Índice Tabela de PublicaçãoISBN Título Data Assunto
1 A 1998 História
2 D 1997 Informática
3 C 1994 Sociologia
4 Z 2000 Informática
5 F 1986 Direito
CREATE INDEX nomeIndice ON Publicacao (assunto,data);
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Ficheiros de Índices
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 ]
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.
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Que tabelas se devem indexar?
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
192Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
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?
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 ]
Que colunas se devem indexar?
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
193Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
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;
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 ]
Transacções
Recuperação / Tolerância a Falhas
Índices
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
194Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
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.
select campo1
from tabela
where campo2 = 2 and campo3 = 1 and campo4 = 3;
tabela possui os índices:
índice 1: campo2, campo5
índice 2: campo1
índice 3: campo3, campo1
índice 4: campo4
índice 5: campo5, campo4O índice mais selectivo será aquele que recuperar o mínimo número de registros.
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 ]
Transacções
Recuperação / Tolerância a Falhas
Índices
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
from tabela
where campo2 = 2 and campo3 = 1 and campo4 = 3;
tabela possui os índices:
índice 1: campo2, campo5
índice 2: campo1
índice 3: campo3, campo1
índice 4: campo4
índice 5: campo5, 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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
195Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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);
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
A Ordem das Colunas na criação de Índices é importante?
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 ]
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
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.
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
196Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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?
Quando se elimina uma tabela todos os índices a ela associados também são eliminados.
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;
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Porque é que se eliminam índices?
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 ]
Estrutura Interna de um Índice B-Tree
Martins
Bento Justino
Álvares ROWID
Antunes ROWID
Matos Tavares
Bento ROWID
Canelas ROWID
Ferreira ROWID
Justino ROWID
Lemos ROWID
Martins ROWID Matos ROWID
Soares ROWID
Tavares 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.
SELECT *
FROM Empregados
WHERE nome = “Lemos”
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
197Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 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.
A inserção de um registo obriga à introdução de um registo (ordenado) na tabela de índices;
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
A alteração de um valor num atributo indexado obriga ao reordenamento do ficheiro de índices;
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 ]
A construção de índices exige portanto:
- Índice apresenta estado inválido;
- Após um número significativo de operações de DML.
� Constante monitorização
� Reconstrução de índices quando:
analyze index <idx> compute statistics;
analyze index <idx> validate structure;
alter index <idx> rebuild;
Actualização de informação estatística do índice (USER_INDEXES)
Validação da estrutura do índice (INDEX_STATS)
Reconstrução de um índice por decisão do utilizador
Gestão dos Índices
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
198Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
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.
Tabela em Hash Cluster Tabela + Índice
Definição de Hashing
Transacções
Recuperação / Tolerância a Falhas
Índices
Definição
Considerações
Estrutura Interna de um Índice
Monitorização
Hashing
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 ]
Desenho de um Esquema de Bases de Dados em SQL Server
Ricardo Campos ([email protected])
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
199Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Sumário
Sumário
Desenho de um esquema de Bases de Dados em SQL Server�
Desenho de uma base de dados para um banco;
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Contextualização
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
200Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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 a5.000.000€
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Contextualização
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 ]
Cliente
Agência
1
N
1
N
Modelo de E-R:
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.
ContaN
Empréstimo
1N
1
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Modelo E-R (nível conceptual)
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
201Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Clientes
codCliente
nome
Profissao
localidade
Contas
numConta
tipoConta
codCliente
codAgencia
saldoAgencia
codAgencia
designacao
localidade
1
N
N
1
1
Emprestimos
numEmprestimo
codCliente
codAgencia
valor
NN
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco 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(numConta, tipoConta, codCliente, codAgencia, saldo);
Emprestimos(numEmprestimo, codCliente, codAgencia, valor);
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 ]
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_contasCHECK (tipoConta IN (‘ordem’, ‘prazo’)),
CONSTRAINT valor_saldoCHECK (saldo >= 50),
CONSTRAINT ch_prim_contasPRIMARY KEY (numConta),
CONSTRAINT ch_estr_Agencias_ContasFOREIGN KEY (codAgencia)REFERENCES Agencias (codAgencia)ON UPDATE CASCADEON DELETE SET NULL,
CONSTRAINT ch_estr_Clientes_ContasFOREIGN KEY (cod_cliente)REFERENCES Clientes (cod_cliente)ON UPDATE CASCADEON DELETE CASCADE
)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
CREATE TABLE
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
202Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
CREATE TABLE Emprestimos (numEmprestimo CHAR(5),codAgencia CHAR(3),codCliente CHAR(4) NOT NULL,valor INTEGER NOT NULL,
CONSTRAINT valor_emprestimoCHECK (valor BETWEEN 500.000 and 5.000.000),
CONSTRAINT ch_prim_emprestimosPRIMARY KEY (numEmprestimos)
CONSTRAINT ch_estr_agencias_emprestimosFOREIGN KEY (codAgencia)REFERENCES Agencias (codAgencia)ON UPDATE CASCADEON DELETE SET NULL,
CONSTRAINT ch_estr_Clientes_emprestimosFOREIGN KEY (codCliente)REFERENCES Clientes (codCliente)ON UPDATE CASCADEON DELETE CASCADE
)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
CREATE TABLE
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 ]
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) NOT NULL,
profissao VARCHAR(10),
localidade VARCHAR(10) NOT NULL,
CONSTRAINT ch_prim_clientes
PRIMARY KEY (codCliente)
)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
CREATE TABLE
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
203Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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’;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
INSERT, UPDATE, DELETE
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 ]
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)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
CREAT VIEW
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
204Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Quais os clientes (codCliente, nome) do banco?SELECT codCliente, nome
FROM CLIENTES;
SELECT
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
205Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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);
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
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 ]
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.
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
206Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
207Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
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 ]
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:
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
208Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
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 ]
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.
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
209Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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.
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
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 ]
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.
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
210Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
SELECT
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
211Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
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 ]
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 entendem-se por ISSN, quando por exemplo a publicação é uma revista;
Cada exemplar de uma publicação tem uma cota única que o identifica de forma unívoca;
Em cada uma das bibliotecas satélites, deve existir pelo menos um (podendo existir obviamente mais) exemplar de cada publicação;
Contextualização
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
212Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
Contextualização
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
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 ]
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;
Contextualização
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
213Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Publicação vs tipoPublicação
Os documentos da biblioteca, designados por
publicações, têm associado a si, um tipo de publicação
Publicação
1pertencetipoPublicação
Modelo E-R (nível conceptual)
N
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
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 ]
Categoria
Categoria
As publicações enquadram-se numa
categoria
1pertence Publicação
1pertencetipoPublicação
N
Modelo E-R (nível conceptual)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
214Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Editora
Editora
As publicações, quando aplicável,
podem ser editadas por uma editora
edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Modelo E-R (nível conceptual)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
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 ]
Autor
As publicações podem ser
produzidas por um ou mais autores
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Modelo E-R (nível conceptual)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
215Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Exemplar
Uma publicação tem um conjunto de exemplares
tem
N
1
Exemplares
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Modelo E-R (nível conceptual)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
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 ]
Biblioteca
Deve existir pelo menos um exemplar de cada publicação
em todas as bibliotecas.
Biblioteca tem1 N
tem
N
1
Exemplares
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Modelo E-R (nível conceptual)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
216Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Leitor
A inscrição dos leitores é válida
em qualquer uma das bibliotecas.
Leitorrequisição1N
Biblioteca tem1 N
tem
N
1
Exemplares
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Modelo E-R (nível conceptual)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
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 ]
tem
N
1
tipoLeitor
Leitor vs tipoLeitor
Um leitor pertence a um determinadotipo de leitor.
LeitorrequisiçãoNM
Biblioteca tem1 N
tem
N
1
Exemplares
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Modelo E-R (nível conceptual)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
217Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
tem
N
1
tipoLeitor
LeitorrequisiçãoNM
Biblioteca tem1 N
tem
N
1
Exemplares
Autor
obra
M
N
Editora edita
N
1
Categoria 1pertence Publicação
1pertencetipoPublicação
N
Modelo E-R (nível conceptual)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
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 ]
codPublicacaoTituloIdioma
numPagsimagemCapa
FormatodescricaoObranumPublDisp
ISBNdepositoLegal
localPubl�codCategoria�codTipoPubl
Publicacao
Categoria
codCategoriadesCategoria
tipoPublicacao
codTipoPubldesTipoPubl
Editora
codEditoradesEditora
MoradaContacto
Edita
�codPublicacao�codEditora
Autor
codAutornomeEmailObra
�codAutor�codPublicacao
tipoLeitor
codTipoLeitordesTipoLeitorprazoEntrega
codLeitorNome
MoradaContacto
Email�codTipoLeitor
Leitor
CotaObs
dataAquisicaodataPublicacao
numEdicaopossbRequisitar
CdRequisitado
�codPublicacao�codBiblioteca
Exemplar
Biblioteca
codBibliotecaMoradaContacto
Requisicao
�Cota�codLeitor
dataRequisicaodataEntregaDevolvido
Modelo Relacional (nível lógico)
Desenvolvimento de uma Base de Dados para uma Biblioteca
Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos
Desenho da Base de Dados
DDL e DML
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
218Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Reporting
Ricardo Campos ([email protected])
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 ]
O SQL Server, é um sistema completo de business intelligence, que oferece asfuncionalidades, as ferramentas, e a capacidade para criar aplicações de análisequer clássicas, quer inovadoras.
Report;
Análise, armazenamento e pesquisa dos dados;
Integração e transformação dos dados;
SQL Server BI Development Studio
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
219Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
O acesso ao SQL Server Business Intelligence Development Studio é feitoatravés do menu Start – Programs – Microsoft Sql Server 2005;
SQL Server BI Development Studio
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 ]
Criação de um Report�
Definir a conexão;
Criar um Report;
Criar um Report Server Project;
Definir uma query para o report;
Adicionar uma tabela;
Prever o report;
Criação de um report baseado na base de dados AdventureWorks
Criação de um report
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
220Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Criação de um report
Criar um Report Server Project;�
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 ]
Criação de um report
Criar um report;�
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
221Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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;
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 ]
Definir uma query para o report;�
Criação de um report
Adicionar uma tabela�
Depois da definição da query é possível definir o layout, o qual consiste de tabelas, imagens e outros itens
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
222Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Criação de um report
Depois de seleccionar table, clique na área de desenho (automaticamente é criada uma tabela com 3 colunas)
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 ]
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
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
223Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Prever o report;�
Criação de um report
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 ]
Grupos, Ordenação e Formatação�
Adicionar uma nova coluna;
Adicionar um grupo;
Ordenar os dados;
Adicionar um subtotal;
Aplicação de formatos;
Prever o report;
Grupos, Ordenação e Formatação
Publicar o report;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
224Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Adicionar um grupo;�
Grupos, Ordenação e Formatação
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;
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 ]
Adicionar um grupo que arranja os dados das vendas pelo nome do vendedor;
Grupos, Ordenação e Formatação
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
225Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Grupos, Ordenação e Formatação
Adicionar uma nova coluna;�
Adicionámos uma nova coluna que mostra o nome do vendedor;
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 ]
Grupos, Ordenação e Formatação
Ordenar os dados;�
No canto superior esquerdo seleccionar propriedades;
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
226Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
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
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 ]
Grupos, Ordenação e Formatação
Aplicação de formatos�
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
227Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Grupos, Ordenação e Formatação
Clique em …..
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 ]
Grupos, Ordenação e Formatação
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
228Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Grupos, Ordenação e Formatação
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 ]
Grupos, Ordenação e Formatação
Seleccione as seguintes linhas e carregue em Bold
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL
Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides.
229Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/]
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 ]
Grupos, Ordenação e Formatação
Prever o report�