campos, ricardo. (2007). apresentação de bases de...

229
Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. 1 Ricardo 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

Upload: dinhnguyet

Post on 21-Sep-2018

223 views

Category:

Documents


0 download

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

Email

Autor

codAutornomeEmailObra

�codAutor�codPublicacao

tipoLeitor

codTipoLeitordesTipoLeitorprazoEntrega

codLeitorNome

MoradaContacto

Email�codTipoLeitor

Leitor

CotaObs

dataAquisicaodataPublicacao

numEdicaopossbRequisitar

CdRequisitado

�codPublicacao�codBiblioteca

Exemplar

Biblioteca

codBibliotecaMoradaContacto

Email

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

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

Email

Edita

�codPublicacao�codEditora

Autor

codAutornomeEmailObra

�codAutor�codPublicacao

tipoLeitor

codTipoLeitordesTipoLeitorprazoEntrega

codLeitorNome

MoradaContacto

Email�codTipoLeitor

Leitor

CotaObs

dataAquisicaodataPublicacao

numEdicaopossbRequisitar

CdRequisitado

�codPublicacao�codBiblioteca

Exemplar

Biblioteca

codBibliotecaMoradaContacto

Email

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�