BeD - AEISTECP - GRUPO DE ESTUDOS

Transcrição

BeD - AEISTECP - GRUPO DE ESTUDOS
Capitulo 1
Introdução a Bases de Dados
Transparências
1
Capitulo 1 - Objectivos
 Uso
comum das bases de dados.
 Características dos Sistemas de Ficheiros.
 Problemas com os Sistemas de Ficheiros.
 Significado do termo base de dados.
 Significado do termo Sistema de Gestão de
Bases de Dados (SGBD/DBMS).
2
Capitulo 1 - Objectivos
 Funções
típicas de um SGBD.
 Principais Componentes de um SGBD.
 Actores num SGBD.
 História do desenvolvimento dos SGBDs.
 Vantagens e Desvantagens num SGBD.
3
Exemplos de aplicações de bases de dados
 Compras
num hipermercado
 Compras usando um cartão crédito
 Reservar férias numa agência de viagens
 Usar a biblioteca
 Fazer um seguro
 Usar a Internet
 Estudar uma Universidade
4
Sistema baseado em ficheiros
 Colecção
de aplicações que executam tarefas
para utilizadores finais. (ex: relatórios).
 Cada
aplicação define e gere os seus próprios
dados.
5
Processamento baseado em ficheiros
6
Limitações com os Sistemas de Ficheiros

Separação e Isolamento dos dados
– Cada aplicação mantém o seus próprios dados.
– Utilizador de uma aplicação pode não ter o
conhecimento de informação útil na posse de outra
aplicação.

Duplicação dos dados
– Os mesmos dados estão em diferentes aplicações.
– Espaço desperdiçado e possibilidade de diferentes
valores e/ou diferentes formatos para a mesma
informação.
7
Limitações com os Sistemas de Ficheiros
 Dependência
de dados
– A estrutura dos ficheiros está definida no código da
aplicação.
 Formato
de ficheiros incompatíveis
– As aplicações estão escritas em diferentes
linguagens, o que torna difícil o acesso a outros
ficheiros.
 Queries
fixas, proliferação de aplicações
– As aplicações são feitas para satisfazer
determinados requisitos.
– Qualquer novo requisito necessita de um nova
aplicação.
8
Abordagem das Bases de Dados
 Surgiu
porque:
– Definição dos dados estava embutida nas aplicações,
em vez de estarem armazenadas separadamente.
– Não existe controlo sobre o acesso e manipulação
dos dados para além do imposto pela aplicação.
 Resultado:
– As bases de dados e o Sistema de Gestão de Bases de
Dados (SGBD).
9
Bases de Dados
 Colecção
partilhada de dados logicamente
relacionados (e respectiva descrição),
projectada para responder ás necessidades de
informação organizada.
 Dicionário
de Dados (metadados) disponibiliza
a descrição dos dados para obtermos
aplicações independentes.
 Dados
relacionados são compostos por
entidades, atributos e relacionamentos da
informação de uma organização.
10
Sistema de Gestão de Bases de Dados
(SGBD/DBMS)
 Um
sistema de software que permite que os
utilizadores definam, criem e mantenham a
base de dados e providencia um acesso
controlado a essa base de dados.
11
Sistema de Gestão de Bases de Dados
(SGBD/DBMS)
12
Abordagem das Bases de Dados
 Linguagem
de Definição de Dados (LDD/DDL).
– Permite a especificação de tipos de dados,
estruturas e restrições de dados.
– Todas as especificações estão armazenadas na base
de dados.
 Linguagem
de Manipulação de Dados
(LMD/DML).
– Facilita o acesso as bases de dados através de uma
linguagem de manipulação (query language).
13
Abordagem das Bases de Dados
 Acesso
controlado as bases de dados pode
incluir:
–
–
–
–
–
Sistema de Segurança.
Sistema de integridade.
Sistema de controlo de concorrência.
Sistema de recuperação de falhas.
Dicionário de Dados
 Mecanismo
de Vistas.
– Providencia os utilizadores apenas com a
informação que eles precisam ou necessitam.
14
Vistas
 Permite
a cada utilizador ter a sua vista sobre a
base de dados.
 Uma
vista é um filtro sobre a base de dados.
15
Vistas
 Benefícios:
– Complexidade reduzida;
– Providência alguma segurança;
– Providência um mecanismo de costumização da
aparência da base de dados;
– Apresenta uma imagem consistente e persistente da
estrutura da base de dados, mesmo que esta tenha
sido alterada.
16
Componentes de um SGBD
17
Componentes de um SGBD
 Hardware
– Varia entre um PC e uma rede de
computadores.
 Software
– SGBD, sistema operativo, software de rede (se
necessário) e as aplicações.
 Dados
– Usados pela organização e respectiva
descrição a que chamamos esquema.
18
Componentes de um SGBD
 Procedimentos
– Instruções e regras que devem ser aplicadas ao
desenho e ao uso da base de dados e do SGBD.
 Pessoas
19
Tarefas num ambiente de Base de Dados
 Administrador
de Dados (DA)
 Administrador da Base de Dados (DBA)
 Desenhador de Bases de Dados (Lógica e
Física)
 Programadores das aplicações
 Utilizadores Finais (ingénuos e sofisticados)
20
Historia dos Sistemas de Bases de Dados
 1ª
Geração
– Hierárquico e de Rede
 2ª
Geração
– Relacional
 3ª
Geração
– Objectos Relacionais
– Orientado a Objectos
21
Vantagens dos SGBDs
 Controlo
sobre a redundância de dados
 Consistência de Dados
 Mais informação tendo os mesmo dados
 Partilha de Dados
 Integridade dos Dados melhorada
 Mais Segurança
 Implica uso de standards
 Economia de Escala
22
Vantagens dos SGBDs
 Requisitos
conflituosos balanceados
 Acessibilidade aos dados e rapidez de resposta
melhorados
 Mais produtividade
 Melhoria na manutenção através da
independência dos dados
 Mais concorrência
 Serviços de cópias de segurança e de
recuperação de falhas melhorados
23
Desvantagens dos SGBDs
 Complexidade
 Tamanho
 Custo
do SGBD
 Custos de hardware acrescidos
 Custo da conversão
 Performance
 Maior impacto em caso de falha
24
Capitulo 2
Ambiente de Base de Dados
Transparências
25
Capitulo 2 - Objectivos
 Objectivo
da arquitectura de três níveis nas bases
de dados.
 Conteúdo
dos níveis externo, conceptual e interno.
 Significado
da independência de dados lógica e
física.
 Distinção
entre LDD e LMD.
 Classificação
dos modelos de dados.
26
Capitulo 2 - Objectivos
Objectivo/Importância da modelação conceptual.
 Funções e Serviços que um SGBD deve fornecer.
 Componentes de Software de um SGBD.
 Significado da arquitectura cliente–servidor e
vantagens deste tipo de arquitectura para o SGBD.
 Função e Importância do dicionário de dados.

27
Objectivos da Arquitectura de três níveis
 Todos
os utilizadores devem poder aceder aos
mesmos dados.
 A vista
de um utilizador é imune a alterações
feitas noutras vistas.
 Os
utilizadores não necessitam de saber
pormenores do armazenamento físico da base
de dados.
28
Objectivos da Arquitectura de três níveis

DBA deve poder alterar a estrutura de armazenamento
da base de dados sem que tal afecte as vistas dos
utilizadores.

Estrutura interna da base de dados não deve ser
afectada pelas alterações efectuadas no armazenamento
físico.

DBA deve poder alterar a estrutura conceptual da base
de dados sem afectar os utilizadores.
29
Arquitectura de três níveis ANSI-SPARC
30
Arquitectura de três níveis ANSI-SPARC

Nível Externo
– Visão de um utilizador sobre a base de dados.
– Descreve parte da base de dados que é relevante a
um determinado utilizador.

Nível Conceptual
– União das Vistas da base de dados.
– Descreve que dados são armazenados na base de
dados e quais as relações entre esses dados.
31
Arquitectura de três níveis ANSI-SPARC
 Nível
Interno
– Representação física da base de dados no
computador.
– Descreve como os dados são armazenados na
base de dados.
32
Diferenças entre os três níveis da
arquitectura ANSI-SPARC
33
Independência de Dados
 Independência
Lógica de Dados
– Refere-se à imunidade dos esquemas
externos a alterações feitas no esquema
conceptual.
– Alterações no esquema conceptual (ex.
adição/remoção de entidades).
– Não deve implicar alterações no esquema
externo ou rescrita de aplicações.
34
Independência de Dados
 Independência
Física de Dados
– Refere-se à imunidade dos esquemas
conceptuais a alterações feitas no esquema
interno.
– Alterações no esquema interno (ex. usar uma
organização de ficheiros diferente,
estruturas/dispositivos de armazenamento).
– Não deve implicar alterações no esquema
conceptual ou nos esquemas externos.
35
Independência de Dados e a Arquitectura
de três níveis ANSI-SPARC
36
Linguagens de Base de Dados
 Linguagem
de Definição de Dados (LDD)
– Permite ao DBA ou ao utilizador descrever
e nomear entidades, atributos e
relacionamentos necessários à aplicação.
– mais as respectivas restrições de integridade
e segurança.
37
Linguagens de Base de Dados



Linguagem de Manipulação de Dados (LMD)
– Fornece operações de manipulação de dados sobre a
base de dados.
LMD Procedimental
– permite ao utilizador dizer exactamente como
manipular os dados.
LMD Não-Procedimental
– Permite ao utilizador dizer que dados precisa em
vez de como estes devem ser manipulados.
38
Linguagens de Base de Dados
 Linguagens
–
–
–
–
–
de Quarta Geração (4GL)
Query Languages
Forms Generators
Report Generators
Graphics Generators
Application Generators.
39
Modelo de Dados
Colecção integrada de conceitos para descrever
dados, relacionamentos entre dados, e
restrições na informação de uma organização.
 Modelo
de Dados compreende:
– parte estrutural;
– parte de manipulação;
– possivelmente um conjunto de regras de
integridade.
40
Modelo de Dados
 Objectivo
– Representar informação de forma
perceptível.
 Categorias
de Modelos de Dados:
– Baseado em Objectos
– Baseado em Registos
– Físicos.
41
Modelo de Dados
 Modelo
–
–
–
–
de Dados Baseado em Objectos
Entidades-Relacionamentos
Semânticos
Funcionais
Orientado a Objectos.
 Modelo
de Dados Baseado em Registos
– Modelo de Dados Relacional
– Modelo de Dados de Rede
– Modelo de Dados Hierárquico.
 Modelo
de Dados Físico
42
Funções de um SGBD
 Armazenamento,
Dados.
 Dicionário
Pesquisa e Actualização de
de Dados.
 Suporte
a Transações.
 Serviços
de Controlo de Concorrência.
 Serviços
de Recuperação.
43
Funções de um SGBD
 Serviços
de Autenticação.
 Suporte
a Comunicação de Dados.
 Serviços
de Integridade.
 Serviços
Dados.
que promovam a Independência de
 Utilitários.
44
Componentes de um SGBD
45
Componentes do Database Manager (DM)
46
Arquitecturas
utilizadores
de
SGBD
para
multi-
 Teleprocessamento
 Servidor de
Ficheiros
 Cliente-Servidor
47
Teleprocessamento
 Arquitectura
 Um
Tradicional.
mainframe com vários terminais ligados.
 Tendência
para “downsizing”.
48
Topologia de Teleprocessamento
49
Servidor de Ficheiros
 Servidor de
Ficheiros está interligado por rede
a várias estações de trabalho.
 A base
de dados está no Servidor de Ficheiros.
 SGBD
e as aplicações correm em cada estação
de trabalho.
 Desvantagens:
– Trafego de rede significativo.
– Um SGBD em cada estação de trabalho.
– Controlo de Concorrência, Integridade e
Recuperação de elevada complexidade.
50
Arquitectura Servidor de Ficheiros
51
Cliente-Servidor
 Servidor tem
a Base de Dados e o SGBD.
 Cliente
gere o interface como utilizador e corre
as aplicações.
 Vantagens:
–
–
–
–
–
maior acesso às base de dados existentes;
maior performance;
possibilidade de redução de custos com hardware;
redução de custos com a comunicação;
mais consistência.
52
Arquitectura Cliente-Servidor
53
Topologias Cliente-Servidor Alternativas
54
Dicionário de Dados
 Repositório
de informação (metadados) que
descreve os dados na base de dados.
 Armazena normalmente:
–
–
–
–
nomes de utilizadores autorizados;
nomes de itens de dados na base de dados;
restrições sobre cada item de dados;
itens de dados acessíveis por utilizador e por tipo de acesso.
 Utilizado
por módulos como Controlo de
Autenticação e Verificação de Integridade.
55
Capitulo 3
O Modelo Relacional
Transparências
Capitulo 3 - Objectivos
 Terminologia
do modelo relacional.
 Como são usadas as tabelas para representar
informação.
 Propriedades das relações nas bases de dados.
 Como identificar chaves candidata, primária e
estrangeira.
 Significado de integridade de entidades e de
integridade referencial.
 Objectivo e Vantagens das Vistas.
57
Terminologia do Modelo Relacional

Uma relação é uma tabela com colunas e linhas.
– Apenas se aplica à estrutura lógica da base de
dados, não à física.

Atributo é o nome de uma coluna de uma relação.

Domínio é um conjunto de valores permitidos para um
ou mais atributos.
58
Terminologia do Modelo Relacional

Tuplo é uma linha de uma relação.

Grau é o número de atributos de uma relação.

Cardinalidade é o número de tuplos de uma relação.

Base de Dados Relacional é um conjunto de relações
normalizadas com nomes de relações distintos.
59
Instancias das Relações Branch e Staff (parciais)
60
Exemplos do Domínio de Atributos
61
Terminologia Alternativa para o Modelo
Relacional
62
Relações de Bases de Dados
 Esquema
Relacional
– Relação definida por um conjunto de pares
de atributos e domínios.
 Esquema
de Base de Dados Relacional
– Conjunto de Esquemas Relacionais, cada um
com um nome distinto.
63
Propriedades das Relações
O
nome da relação é distinto do nome de todas
as outras relações do mesmo esquema
relacional.
 Cada
célula de uma relação contem
exactamente um único valor.
 Cada
atributo tem um nome distinto.
 Valores
de um atributo são todos do mesmo
domínio.
64
Propriedades das Relações
 Cada
tuplo é distinto; não existem tuplos
duplicados.
 A ordem
dos atributos não tem qualquer
significado.
 A ordem
dos tuplos não tem qualquer significado,
teoricamente.
65
Chaves Relacionais
 Super
Chave
– Um atributo, ou um conjunto de atributos, que
identifica univocamente um tuplo numa relação.
 Chave
Candidata
– Super Chave (K) tal que nenhum subconjunto de
atributos seja Super Chave na relação.
– Em cada tuplo de R, valores de K identificam
univocamente esse tuplo (unicidade).
– Nenhum subconjunto de atributos de K tem a
propriedade unicidade (irreductibilidade).
66
Chaves Relacionais
 Chave
Primaria
– Chave Candidata seleccionada para identificar
univocamente tuplos na relação.
 Chaves Alternativas
– Chaves Candidatas que não foram escolhidas para
Chave Primária.
 Chave
Estrangeira
– Atributo, ou conjunto de atributos, numa relação
que são chaves candidatas de alguma ( pode ser a
mesma ) relação.
67
Integridade Relacional
 Null
– Representa o valor de um atributo que ainda é
desconhecido ou não aplicável no tuplo.
– Lida com informação incompleta ou
excepcional.
– Representa a ausência de valor e não é o mesmo
que zero ou espaços, que são valores.
68
Integridade Relacional

Integridade de Entidade
– Numa relação, nenhum atributo pertencente à
chave primária pode ser nulo.

Integridade Referencial
– Se uma Chave Estrangeira existe numa relação, ou
o valor da Chave Estrangeira é idêntico a um valor
de uma Chave Candidata de um tuplo da sua
relação ou o valor da Chave Estrangeira é null.
69
Integridade Relacional
 Restrições
Empresariais
– Regras adicionais especificadas por
utilizadores ou pelos administradores da
base de dados.
70
Vistas
 Relação
Base
– Uma relação a que corresponde uma
entidade no esquema conceptual em que os
tuplos estão armazenados na base de dados.
 Vista
– Resultado dinâmico de uma ou mais
operações relacionais sobre relações bases
para produzir outra relação..
71
Vistas
 Uma
relação virtual que pode não existir na base
de dados mas que é produzida na altura do
pedido..
O
conteúdo de uma vista é definido como uma
query sobre uma ou mais relações base.
 As
vistas são dinâmicas, isto é, alterações
efectuadas nas relações base que afectam os
atributos da vista reflectem-se imediatamente na
vista.
72
Objectivo das Vistas
 Providencia
um mecanismo de segurança
poderoso e flexível escondendo parte da base
de dados de certos utilizadores.
 Permite
aos utilizadores acesso a informação
customizada, de forma a que a mesma
informação possa ser vista por diferentes
utilizadores de diferentes formas, ao mesmo
tempo.
 Podem
simplificar operações complexas sobre
relações base.
73
Actualizando Vistas
 Todos
as actualizações efectuadas nas relações
base devem reflectir-se imediatamente em
todas as vistas que usam essa relação base.
 Se
uma vista é alterada, a relação base que a
suporta deve reflectir tal alteração.
74
Actualizando Vistas
 Existem
restrições ao tipo de modificações que
podem ser feitas através das vistas:
- Actualizações são permitidas se a query envolve
apenas uma relação base e contém uma chave
candidata da relação base.
- Actualizações não são permitidas se a vista é
constituída por várias relações base..
- Actualizações não são permitidas se a vista contém
agregação ou operações de agrupamento.
75
Actualizando Vistas
 As
vistas são divididas nas seguintes classes:
– Teoricamente não actualizável;
– Teoricamente actualizável;
– Parcialmente actualizável.
76
Capitulo 4
Álgebra Relacional
Transparências
Capitulo 4 - Objectivos
 Significado
 Como
do termo plenitude relacional.
criar queries em álgebra relacional.
 Categorias
de LMD relacionais.
78
Introdução
 Álgebra
relacional e calculo relacional são
linguagens formais associadas ao modelo
relacional.
 Informalmente, álgebra relacional é uma (altonível) linguagem procedimental e calculo
relacional é uma linguagem nãoprocedimental.
 No entanto, formalmente ambas são
equivalentes.
 Uma linguagem que produz uma relação que
pode derivar do uso de cálculo relacional é
relacionalmente completa.
79
Álgebra Relacional
 Operações
de Álgebra Relacional são sobre
uma ou mais relações e definem uma nova
relação sem alterar as relações originais.
 Os
operandos e o resultado são relações, sendo
assim, o resultado de uma operação pode ser o
operando de outra operação.
 Permite
que as expressões sejam aninhadas,
como na aritmética. Esta propriedade é
chamada encerramento.
80
Álgebra Relacional
 Cinco
operações básicas na Álgebra
Relacional: Selecção, Projecção, Produto
Cartesiano, União, e Diferença.
 Estas
efectuam quase todas as operações de
busca de informação necessárias.
 Também
existem as operações Junção,
Intersecção, e Divisão, que podem ser expressas
usando as 5 operações básicas.
81
Operações de Álgebra Relacional
82
Operações de Álgebra Relacional
83
Selecção (ou Restrição)
 predicado
(R)
– Efectuado sobre uma só relação R e define uma
relação que apenas contém os tuplos (linhas) de
R que satisfazem a condição especificada
(predicado).
84
Exemplo - Selecção (ou Restrição)
 Todo
o staff com salário superior a £10,000.
salary > 10000 (Staff)
85
Projecção
 col1, . . . , coln(R)
– Efectuado sobre uma só relação R e define uma
relação que contém um subconjunto vertical de
R, extraindo os valores dos atributos
especificados e eliminando os duplicados.
86
Exemplo - Projecção
 Produza
uma lista de salários de todo o staff,
mostrando apenas staffNo, fName, lName, e
salary.
staffNo, fName, lName, salary(Staff)
87
União
S
– A União de duas relações R e S define uma
relação que contém todos os tuplos de R, ou S,
ou R e S, sendo os tuplos duplicados eliminados.
– R e S devem ser compatíveis na União.
R
 Se
R e S têm I e J tuplos, respectivamente, a união
obtém-se através da concatenação de ambos numa
só relação com, no máximo, (I + J) tuplos.
88
Exemplo - União
 Mostre
todas as cidades onde existe ou um
escritório ou uma propriedade para arrendar.
city(Branch)  city(PropertyForRent)
89
Diferença
R
–S
– Define uma relação que consiste dos tuplos que
estão na relação R, mas não em S.
– R e S têm de ser compatíveis na União.
90
Exemplo - Diferença
 Mostre
todas as cidades onde existe um escritório
mas não existe nenhuma propriedade para
arrendar.
city(Branch) – city(PropertyForRent)
91
Intersecção
S
– Define uma relação que consiste do conjunto
de tuplos que estão quer em R quer em S.
– R e S têm de ser compatíveis na União.
R
 Pode-se
obter através das seguintes operações
básicas:
R  S = R – (R – S)
92
Exemplo - Intersecção
 Mostre
todas as cidades onde existe um escritório
e pelo menos uma propriedade para arrendar.
city(Branch)  city(PropertyForRent)
93
Produto Cartesiano
R
XS
– Define uma relação que é a concatenação de
cada tuplo da relação R com todos os tuplos da
relação S.
94
Exemplo – Produto Cartesiano

Mostre os nomes e os comentários de todos os clientes que
visitaram uma propriedade para arrendar.
(clientNo, fName, lName(Client)) X (clientNo, propertyNo, comment
(Viewing))
95
Exemplo – Produto Cartesiano e Selecção

Use a operação Selecção para extrair os tuplos onde
Client.clientNo = Viewing.clientNo.
Client.clientNo = Viewing.clientNo((clientNo, fName, lName(Client)) 
(clientNo, propertyNo, comment(Viewing)))
Produto Cartesiano e Selecção podem ser reduzidos a uma só
operação denominada Junção.

96
Operações de Junção

Junção é uma derivação do Produto Cartesiano.

Equivalente a uma Selecção, usando um predicado de
junção como selecção, sobre o Produto Cartesiano de duas
relações.

Uma das operações mais difíceis de implementar
eficientemente num SGBD R e uma das razões porque os
SGBD R têm problemas intrínsecos de performance.
97
Operações de Junção
 Várias
–
–
–
–
–
operações de Junção
Theta join
Equijoin (caso particular de Theta join)
Natural join ( Junção Natural )
Outer join
Semijoin
98
Theta join (-join)
R
FS
– Define uma relação que contém os tuplos
que satisfazem o predicado F do Produto
Cartesiano de R e S.
– O predicado F é da forma R.ai  S.bi onde 
pode ser um dos operadores de comparação
(<, , >, , =, ).
99
Theta join (-join)
 Pode-se
rescrever Theta join usando operações de
Selecção e de Produto Cartesiano.
R
FS
= F(R  S)
O
grau do resultado desta operação é a soma dos
graus das relações R e S. Se o predicado F contém
apenas a igualdade (=), o termo Equijoin é aplicado.
100
Exemplo - Equijoin
 Mostrar os
nomes e comentários de todos os clientes
que visitaram uma propriedade para arrendar.
(clientNo, fName, lName(Client)) Client.clientNo =
Viewing.clientNo (clientNo, propertyNo, comment(Viewing))
101
Natural join ( Junção Natural )
R
S
– Um Equijoin de duas relações R and S sobre
todos os atributos comuns x. Uma ocorrência de
cada atributo comum é eliminado do resultado.
102
Exemplo - Natural join ( Junção Natural )
 Mostrar todos
os nomes e comentários de todos os
clientes que visitaram uma propriedade para arrendar.
(clientNo, fName, lName(Client))
(clientNo, propertyNo, comment(Viewing))
103
Outer join
 Para
mostrar linhas que não têm valores iguais
na coluna de junção usa-se o Outer join.
R
S
– (Left) outer join é uma junção em que os
tuplos de R que não têm valores em colunas
comuns de S são também incluídos na
relação final.
104
Exemplo - Left Outer join
 Produza
um relatório de estado sobre as visitas
a propriedades.
propertyNo, street, city(PropertyForRent)
Viewing
105
Semijoin
R
FS
– Define uma relação que contém os tuplos de R que
participam na junção de R com S.
 Pode-se
rescrever Semijoin usando Projecção e
Junção:
R
FS
= A(R
F
S)
106
Example - Semijoin
 Mostrar o
detalhe completo de todo o staff que
trabalha no escritório de Glasgow.
Staff Staff.branchNo = Branch.branchNo and Branch.city = ‘Glasgow’
Branch
107
Divisão

RS
– Define uma relação sobre os atributos C que consistem
num conjunto de tuplos de R que combinam com todos
os tuplos de S.

Usando operações básicas:
T1  C(R)
T2  C((S X T1) – R)
T  T1 – T2
108
Exemplo - Divisão
 Identifique
todos os clientes que visitaram todas as
propriedades com três quartos.
(clientNo, propertyNo(Viewing))  (propertyNo(rooms = 3
(PropertyForRent)))
109
Capitulo 5
SQL: Manipulação de Dados
Transparências
Capitulo 5 - Objectivos
 Objectivo
e importância de SQL.
 Como obter dados de uma base de dados usando
o comando SELECT e:
– Usando condições WHERE .
– Ordenar os resultados das queries usando
ORDER BY.
– Usar funções de agregação.
– Agrupar dados usando GROUP BY e HAVING.
– Usar subqueries.
111
Capitulo 5 - Objectivos
– Juntar tabelas.
– Efectuar operações sobre conjuntos (UNION,
INTERSECT, EXCEPT).
 Como
actualizar a base de dados usando INSERT,
UPDATE, e DELETE.
112
Objectivos de SQL



Uma linguagem de base de dados deve permitir ao
utilizador :
– criar a base de dados e a estrutura das relações;
– efectuar inserções, modificações, remoções de dados
nas relações;
– efectuar queries simples e complexas.
Deve efectuar estas tarefas com o mínimo de esforço para
o utilizador e a sintaxe/estrutura do comando deve ser de
fácil aprendizagem.
Deve ser portável.
113
Objectivos de SQL

SQL é uma linguagem orientada á transformação com 2
componentes principais:
– A LDD para definir a estrutura da base de dados.
– A LMD para obter e actualizar os dados.

Até ao SQL3, SQL não continha controlo de fluxo de
comandos. Estes tinham de ser implementados usando
uma linguagem de programação, ou interactivamente
através de decisões do utilizador.
114
Objectivos de SQL
 SQL é
relativamente simples de aprender:
– é não procedimental – apenas se especifica o
quê que queremos ao invés de como queremos;
– essencialmente de formato livre.
115
Objectivos de SQL
 Consiste
de palavras standard Inglesas:
1) CREATE TABLE Staff(staffNo VARCHAR(5),
lName VARCHAR(15),
salary DECIMAL(7,2));
2) INSERT INTO Staff VALUES (‘SG16’, ‘Brown’,
8300);
3) SELECT staffNo, lName, salary
FROM Staff
WHERE salary > 10000;
116
Objectivos de SQL
 Pode
ser usado por um variado conjunto de
utilizadores
incluindo
DBAs,
gestores,
programadores, e outros tipos de utilizadores
finais.
 Existe
agora um standard ISO para SQL,
tornando assim quer formalmente e de facto
linguagem standard para bases de dados
relacionais.
117
Comandos SQL
 Um
comando SQL consiste de palavras reservadas
e palavras definidas pelo utilizador.
–
–
As palavras reservadas são a parte fixa do SQL e
têm de ser escritas exactamente como exigido.
As palavras definidas pelo utilizador representam
nomes de vários objectos da base de dados como,
relações, atributos, vistas.
118
Comandos SQL


Grande parte dos componentes do comando SQL são case
insensitive, exceptuando os valores dos dados armazenados.
Mais perceptíveis com indentação e separação de linhas:
– Cada clausula deve começar numa nova linha.
– O inicio de uma clausula deve estar alinhada com
outras .
– Se uma clausula tem varias partes, cada uma deve
aparecer em linhas separadas e indentadas da clausula
inicial.
119
Comandos SQL
 Usar
a forma estendida da notação BNF:
-Letras maiúsculas representam palavras reservadas.
- Letras minúsculas representam palavras definidas
pelo utilizador.
- | indica uma escolha entre alternativas.
- Chavetas indicam um elemento obrigatório.
- Parêntesis Rectos indicam um elemento opcional.
- … indica repetição opcional (0 ou mais).
120
Comando SELECT
SELECT [DISTINCT | ALL]
{* | [columnExpression [AS newName]] [,...] }
FROM
TableName [alias] [, ...]
[WHERE
condition]
[GROUP BY columnList] [HAVING condition]
[ORDER BY columnList]
121
Comando SELECT
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
Especifica a/as tabela(s) a ser
utilizadas.
Filtra linhas.
Forma grupos de linhas com o
mesmo valor na coluna.
Filtra grupos sujeitos a alguma
condição.
Especifica quais as colunas que
devem aparecer no resultado.
Especifica a ordem do resultado.
122
Comando SELECT
 Ordem
das componentes do comando não pode
ser alterado.
 Só
o SELECT e FROM é que são obrigatórios.
123
Exemplo 5.1 Todas as colunas, todas as linhas
Listar toda a informação de todo o staff.
SELECT staffNo, fName, lName, address,
position, sex, DOB, salary, branchNo
FROM Staff;

Pode-se usar * como abreviatura de ‘todas as colunas’:
SELECT *
FROM Staff;
124
Exemplo 5.1 Todas as colunas, todas as linhas
125
Exemplo 5.2 Especifica colunas, todas as linhas
Produzir uma lista de salários de todo o staff,
mostrando apenas o seu código, o primeiro e
ultimo nome, e o salário.
SELECT staffNo, fName, lName, salary
FROM Staff;
126
Exemplo 5.2 Especifica colunas, todas as linhas
127
Exemplo 5.3 Uso do DISTINCT
Listar os códigos das propriedades que já foram
visitadas.
SELECT propertyNo
FROM Viewing;
128
Exemplo 5.3 Uso do DISTINCT
 Usar
DISTINCT para eliminar duplicados:
SELECT DISTINCT propertyNo
FROM Viewing;
129
Exemplo 5.4 Campos Calculados
Produzir uma lista dos salários mensais de todo o
staff, mostrando o código do trabalhador, o seu
primeiro e último nome, e o valor do salário.
SELECT staffNo, fName, lName, salary/12
FROM Staff;
130
Exemplo 5.4 Campos Calculados
 Para
dar um nome a uma coluna usar AS :
SELECT staffNo, fName, lName, salary/12
AS monthlySalary
FROM Staff;
131
Exemplo 5.5
Comparação
Condição de procura por
Listar todo o staff com o salário superior a 10,000.
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary > 10000;
132
Exemplo 5.6 Condição de procura por
Comparação Composta
Listar as moradas de todos os escritórios em
London e Glasgow.
SELECT *
FROM Branch
WHERE city = ‘London’ OR city = ‘Glasgow’;
133
Exemplo 5.7
intervalo
Condição de procura num
Listar todo o staff com o salário entre 20,000 e
30,000.
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary BETWEEN 20000 AND 30000;
 BETWEEN
inclui os valores limites.
134
Exemplo 5.7
intervalo
Condição de procura num
135
Exemplo 5.7
intervalo


Condição de procura num
Existe também a condição negada NOT BETWEEN.
BETWEEN não adiciona muito ao poder expressivo do
SQL. Pode-se também escrever:
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary>=20000 AND salary <= 30000;

No entanto, é útil para intervalos de valores.
136
Exemplo 5.8 Pertença de um conjunto
Listar todos os managers e supervisors.
SELECT staffNo, fName, lName, position
FROM Staff
WHERE position IN (‘Manager’, ‘Supervisor’);
137
Exemplo 5.8 Pertença de um conjunto
Existe
a versão negada (NOT IN).
 IN não adiciona muito ao poder expressivo do SQL.
 Podia-se ter escrito assim:
SELECT staffNo, fName, lName, position
FROM Staff
WHERE position=‘Manager’ OR
position=‘Supervisor’;
IN é mais eficiente quando o conjunto contém muitos
valores.

138
Exemplo 5.9 Procura de Padrões
Procure todos os proprietários com ‘Glasgow’ na
sua morada.
SELECT clientNo, fName, lName, address, telNo
FROM PrivateOwner
WHERE address LIKE ‘%Glasgow%’;
139
Exemplo 5.9 Procura de Padrões
 SQL
tem dois símbolos especiais para se procurar
padrões:
– %: sequência de zero ou mais caracteres;
– _ (underscore): um qualquer caracter.
 LIKE
‘%Glasgow%’ significa uma sequência de
qualquer tamanho de caracteres contendo
‘Glasgow’.
140
Exemplo 5.10 Condição de Procura de Nulos
Listar o detalhe de todas as visitas à propriedade
PG4 onde não existam comentários.
 Existem
2 visitas à propriedade PG4, uma com e
outra sem qualquer comentário.
 É necessário testar nulos usando a palavra especial
IS NULL:
SELECT clientNo, viewDate
FROM Viewing
WHERE propertyNo = ‘PG4’ AND
comment IS NULL;
141
Exemplo 5.10 Condição de Procura de Nulos
 Versão
Negada (IS NOT NULL) testa valores não
nulos.
142
Exemplo 5.11 Ordenação por uma coluna
Listar os salários de todo o staff, ordenando os
salários por ordem decrescente.
SELECT staffNo, fName, lName, salary
FROM Staff
ORDER BY salary DESC;
143
Exemplo 5.11 Ordenação por uma coluna
144
Exemplo 5.12 Ordenação por várias colunas
Produza uma lista abreviada das propriedades por
ordem do tipo da propriedade.
SELECT propertyNo, type, rooms, rent
FROM PropertyForRent
ORDER BY type;
145
Exemplo 5.12 Ordenação por várias colunas
146
Exemplo 5.12 Ordenação por várias colunas


Quatro flats nesta lista – como não existe mais nenhum
requisito de como ordenar a listagem, o sistema ordena as
linhas na ordem que bem entende.
Para ordenar por rent, especificar o segundo campo:
SELECT propertyNo, type, rooms, rent
FROM PropertyForRent
ORDER BY type, rent DESC;
147
Exemplo 5.12 Ordenação por várias colunas
148
Expressão SELECT - Agregações
 ISO
standard define cinco funções agregadas:
COUNT retorna número de ocorrências numa
determinada coluna.
SUM retorna a soma dos valores de uma coluna.
AVG retorna a média dos valores de uma coluna.
MIN retorna o valor mais pequeno de uma coluna.
MAX retorna o maior valor de uma coluna.
149
Expressão SELECT - Agregações
 Cada
uma opera sobre uma só coluna e retorna um
só valor.
 COUNT,
MIN, e MAX aplica-se a campos
numéricos e não-numéricos, mas SUM e AVG só se
aplicam a campos numéricos.
À
parte de COUNT(*), cada função elimina
primeiro os nulos e opera apenas nos valores
restantes.
150
Expressão SELECT - Agregações
 COUNT(*)
conta todas as linhas da tabela,
independentemente de haver nulos ou valores
duplicados.
 Pode-se usar DISTINCT antes do nome da coluna
para eliminar duplicados.
 DISTINCT não afecta as funções MIN/MAX, mas
pode afectar as funções SUM/AVG.
151
Expressão SELECT - Agregações

Funções de Agregação podem apenas ser usadas na lista de
colunas da expressão SELECT e na clausula HAVING.

Se a lista de colunas da expressão SELECT inclui uma
função de agregação e não existe a clausula GROUP BY, a
lista de colunas da expressão SELECT não pode conter
uma referência a uma coluna fora da função de agregação.
Por exemplo, o seguinte é ilegal:
SELECT staffNo, COUNT(salary)
FROM Staff;
152
Exemplo 5.13 Uso de COUNT(*)
Quantas propriedades têm o aluguer superior a
£350 por mês?
SELECT COUNT(*) AS count
FROM PropertyForRent
WHERE rent > 350;
153
Exemplo 5.14 Uso de COUNT(DISTINCT)
Quantas propriedades diferentes foram visitadas
no mês de Maio de 2001?
SELECT COUNT(DISTINCT propertyNo) AS count
FROM Viewing
WHERE viewDate BETWEEN ‘1-May-01’
AND ‘31-May-01’;
154
Exemplo 5.15 Uso de COUNT e SUM
Procure quantos Managers existem e qual a soma dos
seus salários.
SELECT COUNT(staffNo) AS count,
SUM(salary) AS sum
FROM Staff
WHERE position = ‘Manager’;
155
Exemplo 5.16 Uso de MIN, MAX, AVG
Procure o mínimo, máximo e média dos salários.
SELECT MIN(salary) AS min,
MAX(salary) AS max,
AVG(salary) AS avg
FROM Staff;
156
Expressão SELECT - Agrupar
 Use
a clausula GROUP BY para obter sub-totais.
 SELECT e GROUP BY em conjunto: cada coluna
na lista da expressão SELECT tem que ter um só
valor por grupo, e a clausula SELECT apenas pode
conter:
- nomes de colunas
- funções de agregação
- constantes
- expressões contendo combinações das anteriores.
157
Expressão SELECT - Agrupar

Todos nomes das colunas existentes na expressão SELECT
tem que estar também na clausula GROUP BY com
excepção dos nomes que são apenas usados nas funções de
agregação.

Se WHERE é usado em conjunção com GROUP BY,
WHERE é aplicado primeiro, depois os grupos são
formados das linhas resultantes que satisfaçam o
predicado.

ISO considera que dois nulos são iguais para a clausula
GROUP BY.
158
Exemplo 5.17 Uso do GROUP BY
Quantos trabalhadores existem por escritório e o
total dos seus salários.
SELECT
branchNo,
COUNT(staffNo) AS count,
SUM(salary) AS sum
FROM Staff
GROUP BY branchNo
ORDER BY branchNo;
159
Exemplo 5.17 Uso do GROUP BY
160
Agrupamentos Restrictos – clausula HAVING

A clausula HAVING usa-se em conjunto com a clausula
GROUP BY para restringir os grupos que aparecem na
tabela final.

Parecido com o WHERE, mas o WHERE filtra linhas
individuais enquanto que HAVING filtra grupos.

Os nomes das colunas que aparecem na clausula HAVING
têm de aparecer também na clausula GROUP BY ou
estarem contidos numa função de agregação.
161
Exemplo 5.18 Uso do HAVING
Para cada escritório com mais que 1 funcionário,
quantos funcionários existem em cada escritório e
qual a soma dos seus salários.
SELECT branchNo,
COUNT(staffNo) AS count,
SUM(salary) AS sum
FROM Staff
GROUP BY branchNo
HAVING COUNT(staffNo) > 1
ORDER BY branchNo;
162
Exemplo 5.18 Uso do HAVING
163
Subqueries
 Algumas
expressões SQL podem conter uma
expressão SELECT embebida.
 Uma
subselecção pode ser usada nas clausulas
WHERE e HAVING de um SELECT, e é
denominada de subquery ou query aninhada.
 Subselecções
podem também aparecer
expressões INSERT, UPDATE, e DELETE.
nas
164
Exemplo 5.19 Subquery com Igualdade
Listar o staff que trabalha no escritório de ‘163
Main St’.
SELECT staffNo, fName, lName, position
FROM Staff
WHERE branchNo =
(SELECT branchNo
FROM Branch
WHERE street = ‘163 Main St’);
165
Exemplo 5.19 Subquery com Igualdade
 SELECT
interno determina o número do
escritório de ‘163 Main St’ (‘B003’).
 SELECT externo retorna o detalhe de todo o staff
que trabalha nesse escritório.
 SELECT externo transforma-se em:
SELECT staffNo, fName, lName, position
FROM Staff
WHERE branchNo = ‘B003’;
166
Exemplo 5.19 Subquery com Igualdade
167
Exemplo 5.20 Subquery com Agregação
Listar todos os funcionários cujo salário seja superior á
média dos salários e qual a diferença.
SELECT staffNo, fName, lName, position,
salary – (SELECT AVG(salary) FROM Staff) As SalDiff
FROM Staff
WHERE salary >
(SELECT AVG(salary)
FROM Staff);
168
Exemplo 5.20 Subquery com Agregação


Não podemos escrever ‘WHERE salary > AVG(salary)’
Usamos uma subquery para determinar a média dos
salários (17000), e depois usamos o SELECT externo para
sabermos quais os funcionários que ganham mais que a
média:
SELECT staffNo, fName, lName, position,
salary – 17000 As salDiff
FROM Staff
WHERE salary > 17000;
169
Exemplo 5.20 Subquery com Agregação
170
Regras das Subqueries
 A clausula
ORDER BY não pode ser usada dentro
de uma subquery (no entanto pode ser usada no
SELECT externo).
A
lista da subquery SELECT consiste de apenas
uma coluna ou expressão, exceptuando as
subqueries que usem a clausula EXISTS.
 Por
defeito, os nomes das colunas referem-se à
tabela da clausula FROM da subquery. Pode-se
referir à tabela do FROM através de um alias.
171
Regras das Subqueries
 Quando
a subquery é um operando numa
comparação, a subquery tem de aparecer no lado
direito.
 Uma
subquery não pode ser utilizada como um
operando numa expressão.
172
Exemplo 5.21 Subquery aninhada: uso do IN
Listar as propriedades geridas pelo staff de ‘163 Main St’.
SELECT propertyNo, street, city, postcode, type, rooms, rent
FROM PropertyForRent
WHERE staffNo IN
(SELECT staffNo
FROM Staff
WHERE branchNo =
(SELECT branchNo
FROM Branch
WHERE street = ‘163 Main St’));
173
Exemplo 5.21 Subquery aninhada: uso do IN
174
ANY e ALL
 ANY e
ALL podem ser usados em subqueries que
produzam uma só coluna de números.
 Com
ALL, a condição apenas será verdade se
esta for satisfeita por todos os valores produzidos
pela subquery.
 Com
ANY, a condição é verdadeira se esta for
satisfeita por algum dos valores produzidos pela
subquery.
 Se
a subquery for vazia,
verdadeiro, ANY retorna falso.
 SOME
ALL
pode ser usado em vez de ANY.
retorna
175
Exemplo 5.22 Uso de ANY/SOME
Listar os funcionários cujo salário seja superior ao
salário de pelo menos um funcionário do escritório
B003.
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary > SOME
(SELECT salary
FROM Staff
WHERE branchNo = ‘B003’);
176
Exemplo 5.22 Uso de ANY/SOME
A
query interna produz o conjunto {12000, 18000,
24000} e a query externa selecciona os
funcionários cujo salário é superior a qualquer um
dos valores do conjunto.
177
Exemplo 5.23 Uso do ALL
Liste os funcionários cujo salário seja superior ao
salário de todos os funcionários do escritório B003.
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary > ALL
(SELECT salary
FROM Staff
WHERE branchNo = ‘B003’);
178
Exemplo 5.23 Uso do ALL
179
Queries Multi-Tabela
 Podemos
usar subquerys desde que as colunas
resultado sejam da mesma tabela.
 Se
as colunas resultado pertencem a mais que uma
tabela temos de usar uma junção.
 Para
fazermos uma junção temos que mencionar o
nome das tabelas na clausula FROM .
 Usar
a virgula como separador e usar a clausula
WHERE para especificar as colunas da operação
de junção.
180
Queries Multi-Tabela
È
possível usar um alias em vez do nome da tabela
na clausula FROM.
O
alias está separado do nome da tabela por um
espaço.
O
alias pode ser usado para melhor identificar a
proveniência de uma coluna quando existe
ambiguidade.
181
Exemplo 5.24 Junção Simples
Listar os nomes de todos os clientes que visitaram
uma propriedade assim como o respectivo
comentário.
SELECT c.clientNo, fName, lName,
propertyNo, comment
FROM Client c, Viewing v
WHERE c.clientNo = v.clientNo;
182
Exemplo 5.24 Junção Simples
 Apenas
são incluídas no resultado as linhas de
ambas as tabelas que têm valores idênticos na
coluna clientNo (c.clientNo = v.clientNo).
 Equivalente
a equi-join na algebra relacional.
183
Construções de JOIN Alternativas
 SQL
proporciona
especificar joins:
várias
alternativas
para
FROM Client c JOIN Viewing v ON c.clientNo = v.clientNo
FROM Client JOIN Viewing USING clientNo
FROM Client NATURAL JOIN Viewing
 Em
cada caso, FROM substitui o FROM e
WHERE original. No entanto, a primeira
alternativa produz uma tabela com duas colunas
idênticas chamadas clientNo.
184
Exemplo 5.25 Ordenando uma Junção
Para cada escritório, liste os números e nomes de
todos os funcionários que gerem propriedades, e
que propriedades.
SELECT s.branchNo, s.staffNo, fName, lName,
propertyNo
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
ORDER BY s.branchNo, s.staffNo, propertyNo;
185
Exemplo 5.25 Ordenando uma Junção
186
Exemplo 5.26 Junção de Três Tabelas
Para cada escritório, liste os funcionários que
gerem propriedades, incluindo a cidade em que
se situa o escritório assim como o número da
propriedade.
SELECT b.branchNo, b.city, s.staffNo, fName, lName,
propertyNo
FROM Branch b, Staff s, PropertyForRent p
WHERE b.branchNo = s.branchNo AND
s.staffNo = p.staffNo
ORDER BY b.branchNo, s.staffNo, propertyNo;
187
Exemplo 5.26 Junção de Três Tabelas

Formulação alternativa para o FROM e WHERE:
FROM (Branch b JOIN Staff s USING branchNo) AS
bs JOIN PropertyForRent p USING staffNo
188
Exemplo 5.27 Agrupar Múltiplas Colunas
Quantas propriedades são geridas por cada
funcionário.
SELECT s.branchNo, s.staffNo, COUNT(*) AS count
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo
ORDER BY s.branchNo, s.staffNo;
189
Exemplo 5.27 Agrupar Múltiplas Colunas
190
Computação de uma Junção
Procedimentos para geração de resultados de uma
operação de junção:
1. Faz o produto cartesiano das tabelas que estão na
clausula FROM.
2. Se existir a clausula WHERE, aplica a condição de
procura a cada linha da tabela do produto
cartesiano, retendo as linhas que satisfazem a
condição.
3. Para as linhas restantes, determina o valor de
cada item na lista da clausula SELECT para
191
termos uma só linha na tabela resultante.
Computação de uma Junção
4. Se a clausula DISTINCT foi especificada, elimina
as linhas duplicadas da tabela resultante.
5. Se existe uma clasula ORDER BY, ordena a
tabela resultante como especificado.
 SQL
providência um formato especial
SELECT para o produto cartesiano:
do
SELECT [DISTINCT | ALL] {* | columnList}
FROM Table1 CROSS JOIN Table2
192
Outer Joins
 Se
uma linha de uma tabela de junção não tem
correspondência, essa linha é omitida da tabela
resultante.
 As operações de Outer join mantêm as linhas que
não satisfazem a condição de junção.
 Considere as seguintes tabelas:
193
Outer Joins
 A (inner
join) junção destas duas tabelas:
SELECT b.*, p.*
FROM Branch1 b, PropertyForRent1 p
WHERE b.bCity = p.pCity;
194
Outer Joins
A
tabela resultante tem duas linhas onde as
cidades são as mesmas.
 Não existem linhas correspondentes a escritórios
em Bristol e Aberdeen.
 Para
incluir as linhas que não têm
correspondência na tabela resultante, use um
Outer join.
195
Exemplo 5.28 Left Outer Join
Listar os escritórios e propriedades que estão
localizados na mesma cidade assim como
escritórios que não tenham correspondência.
SELECT b.*, p.*
FROM Branch1 b LEFT JOIN
PropertyForRent1 p ON b.bCity = p.pCity;
196
Exemplo 5.28 Left Outer Join
 Inclui
as linhas da primeira (left) tabela que não
têm correspondência com as linhas da segunda
(right) tabela.
 Colunas da segunda tabela são preenchidas com
NULLs.
197
Exemplo 5.29 Right Outer Join
Liste escritórios e propriedades da mesma cidade
assim como propriedades que não tenham
correspondência.
SELECT b.*, p.*
FROM Branch1 b RIGHT JOIN
PropertyForRent1 p ON b.bCity = p.pCity;
198
Exemplo 5.29 Right Outer Join
 Right
Outer join inclui as linhas da segunda
(right) tabela que não têm correspondência com as
linhas da primeira (left) tabela.
 Colunas da primeira tabela são preenchidas com
NULLs.
199
Exemplo 5.30 Full Outer Join
Liste escritórios e propriedades que estão na
mesma cidade assim como escritórios e
propriedades que não têm correspondência.
SELECT b.*, p.*
FROM Branch1 b FULL JOIN
PropertyForRent1 p ON b.bCity = p.pCity;
200
Exemplo 5.30 Full Outer Join
 Inclui
linhas que não têm correspondência em
ambas as tabelas.
 Colunas sem correspondência são preenchidas
com NULLs.
201
EXISTS e NOT EXISTS

EXISTS e NOT EXISTS são apenas usadas com
subqueries.

Produzem com resultado apenas verdadeiro/falso.

Verdadeiro se e só se existe pelo menos uma linha na tabela
resultante devolvida pela subquery.

Falso se a subquery devolve uma tabela resultante vazia.

NOT EXISTS é o contrário de EXISTS.
202
EXISTS e NOT EXISTS
 Como
(NOT) EXISTS apenas verifica a existência
ou não de linhas na tabela resultante da subquery,
a subquery pode conter qualquer número de
colunas.
É
comum as subquerys a seguir a (NOT) EXISTS
serem da seguinte forma:
(SELECT * ...)
203
Exemplo 5.31 Query usando EXISTS
Todos os funcionários que trabalham no escritório
de Londres.
SELECT staffNo, fName, lName, position
FROM Staff s
WHERE EXISTS
(SELECT *
FROM Branch b
WHERE s.branchNo = b.branchNo AND
city = ‘London’);
204
Exemplo 5.31 Query usando EXISTS
205
Exemplo 5.31 Query usando EXISTS
 Nota,
a condição de procura s.branchNo =
b.branchNo é necessária para considerar o
escritório correcto para cada funcionário.
 Se omitido, teriamos todos os funcionários porque
a subquery:
SELECT * FROM Branch WHERE city=‘London’
 seria
sempre verdadeira e a query ficaria:
SELECT staffNo, fName, lName, position FROM Staff
WHERE true;
206
Exemplo 5.31 Query usando EXISTS
 Podíamos
também escrever esta query usando
uma junção:
SELECT staffNo, fName, lName, position
FROM Staff s, Branch b
WHERE s.branchNo = b.branchNo AND
city = ‘London’;
207
União, Intersecção, e Diferença (Excepto)
 Podemos
usar as operações normais sobre
conjuntos como União, Intersecção, e Diferença
para combinar o resultado de duas ou mais querys
numa só tabela resultante.
 União de duas tabelas, A e B, dá uma tabela
contendo todas as linhas de A ou B ou ambas.
 Intersecção dá uma tabela com as linhas comuns
às tabelas A e B.
 Diferença dá uma tabela com todas as linhas de A
que não estaõ em B..
 As duas tabelas têm de ser compatíveis na união.
208
União, Intersecção, e Diferença (Excepto)

Formato da clausula de operações sobre conjuntos é:
op [ALL] [CORRESPONDING [BY {column1 [, ...]}]]



Se CORRESPONDING BY for especificado, a operação é
efectuada sobre as colunas indicadas.
Se CORRESPONDING for especificado mas a clausula BY
não, a operação é efectuada sobre as colunas comuns.
Se ALL for especificado, o resultado pode incluir as linhas
duplicadas.
209
União, Intersecção, e Diferença (Excepto)
210
Exemplo 5.32 Uso de UNION
Listar todas as cidades onde existe ou um escritório
ou uma propriedade.
(SELECT city
FROM Branch
WHERE city IS NOT NULL) UNION
(SELECT city
FROM PropertyForRent
WHERE city IS NOT NULL);
211
Exemplo 5.32 Uso de UNION
– Ou
(SELECT *
FROM Branch
WHERE city IS NOT NULL)
UNION CORRESPONDING BY city
(SELECT *
FROM PropertyForRent
WHERE city IS NOT NULL);
212
Exemplo 5.32 Uso de UNION
 Produz
tabelas resultantes de ambas as queries e
une ambas numa só tabela.
213
Exemplo 5.33 Uso de INTERSECT
Listar todas as cidades onde existe um escritório e
também uma propriedade.
(SELECT city FROM Branch)
INTERSECT
(SELECT city FROM PropertyForRent);
214
Exemplo 5.33 Uso de INTERSECT
 Ou
(SELECT * FROM Branch)
INTERSECT CORRESPONDING BY city
(SELECT * FROM PropertyForRent);
215
Exemplo 5.33 Uso de INTERSECT
 Podíamos
rescrever esta query sem o operador
INTERSECT :
SELECT b.city
FROM Branch b PropertyForRent p
WHERE b.city = p.city;
 Ou:
SELECT DISTINCT city FROM Branch b
WHERE EXISTS
(SELECT * FROM PropertyForRent p
WHERE p.city = b.city);
216
Exemplo 5.34 Uso de EXCEPT
Listar todas as cidades onde existe um escritório
mas não existe nenhuma propriedade.
(SELECT city FROM Branch)
EXCEPT
(SELECT city FROM PropertyForRent);

Ou
(SELECT * FROM Branch)
EXCEPT CORRESPONDING BY city
(SELECT * FROM PropertyForRent);
217
Exemplo 5.34 Uso de EXCEPT
 Podíamos
rescrever essa query sem o EXCEPT:
SELECT DISTINCT city FROM Branch
WHERE city NOT IN
(SELECT city FROM PropertyForRent);
 Ou
SELECT DISTINCT city FROM Branch b
WHERE NOT EXISTS
(SELECT * FROM PropertyForRent p
WHERE p.city = b.city);
218
INSERT
INSERT INTO TableName [ (columnList) ]
VALUES (dataValueList)
é opcional; se omitida, SQL assume a
lista de todas as colunas que estão originalmente
no CREATE TABLE.
 Qualquer coluna omitida tem de ter sido
declarada como NULL na criação da tabela, a não
ser que tenha sido definido um valor DEFAULT.
 columnList
219
INSERT
 dataValueList
tem em comum com columnList o
seguinte:
– número de items em cada lista é o mesmo;
– tem de haver correspondência directa entre a
posição dos items nas duas listas;
– o tipo de dados de cada item na dataValueList
tem que ser compatível com o tipo de dados
da coluna correspondente.
220
Exemplo 5.35 INSERT … VALUES
Inserir uma nova linha na tabela Staff incluindo
valores para todas as colunas.
INSERT INTO Staff
VALUES (‘SG16’, ‘Alan’, ‘Brown’, ‘Assistant’,
‘M’, Date‘1957-05-25’, 8300, ‘B003’);
221
Exemplo 5.36 INSERT usando Defaults
Inserir uma nova linha na tabela
preenchendo todas as colunas obrigatórias.
Staff
INSERT INTO Staff (staffNo, fName, lName,
position, salary, branchNo)
VALUES (‘SG44’, ‘Anne’, ‘Jones’,
‘Assistant’, 8100, ‘B003’);
 Ou
INSERT INTO Staff
VALUES (‘SG44’, ‘Anne’, ‘Jones’, ‘Assistant’, NULL,
NULL, 8100, ‘B003’);
222
INSERT … SELECT
 Uma
outra forma de utilizar o INSERT permite
que várias linhas sejam copiadas de uma ou mais
tabelas para outra:
INSERT INTO TableName [ (columnList) ]
SELECT ...
223
Exemplo 5.37 INSERT … SELECT
Assuma que existe a tabela StaffPropCount que
contém nomes de staff e as propriedades que estes
gerem:
StaffPropCount(staffNo, fName, lName, propCnt)
Preencha StaffPropCount usando a tabela Staff e
PropertyForRent.
224
Exemplo 5.37 INSERT … SELECT
INSERT INTO StaffPropCount
(SELECT s.staffNo, fName, lName, COUNT(*)
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.staffNo, fName, lName)
UNION
(SELECT staffNo, fName, lName, 0
FROM Staff
WHERE staffNo NOT IN
(SELECT DISTINCT staffNo
FROM PropertyForRent));
225
Exemplo 5.37 INSERT … SELECT
 Se
a segunda parte do UNION for omitida, exclui
os funcionários que neste momento não gerem
nenhuma propriedade.
226
UPDATE
UPDATE TableName
SET columnName1 = dataValue1
[, columnName2 = dataValue2...]
[WHERE searchCondition]
pode ser o nome de uma tabela base ou
de uma vista actualizável.
 a clausula SET especifica os nomes de uma ou
mais colunas que vão ser actualizadas.
 TableName
227
UPDATE
 clausula
WHERE é opcional:
– se omitida, as colunas identificadas vão ser
actualizadas em todos os registos;
– se especificada, só as linhas que satisfazem a
condição searchCondition é que vão ser
actualizadas.
 Os novos dataValue(s) têm de ser compatíveis com
o tipo de dados da coluna correspondente.
228
Exemplo 5.38/39 UPDATE Todas as linhas
Dê uma aumento de 3% a todo o pessoal.
UPDATE Staff
SET salary = salary*1.03;
Dê a todos os Managers um aumento de 5%.
UPDATE Staff
SET salary = salary*1.05
WHERE position = ‘Manager’;
229
Exemplo 5.40 UPDATE Várias Colunas
Promova David Ford (staffNo=‘SG14’) para
Manager e mude o salário para £18,000.
UPDATE Staff
SET position = ‘Manager’, salary = 18000
WHERE staffNo = ‘SG14’;
230
DELETE
DELETE FROM TableName
[WHERE searchCondition]
pode ser o nome de uma tabela base ou
de uma vista actualizável.
 searchCondition é opcional; se omitida, todas as
linhas são apagadas da tabela. Não apaga a tabela.
Se search_condition é especificada, só as linhas que
satisfazem a condição é que são apagadas.
 TableName
231
Exemplo
5.41/42
Especificadas
DELETE
Linhas
Apague todas as visitas relacionadas com a
propriedade PG4.
DELETE FROM Viewing
WHERE propertyNo = ‘PG4’;
Apague todos os registos da tabela Viewing.
DELETE FROM Viewing;
232
Capitulo 6
SQL: Definição de Dados
Transparências
Capitulo 6 - Objectivos
 Tipos
de Dados suportados pelo standard SQL.
 Objectivo
 Como
das melhorias de integridade no SQL.
definir restrições de integridade usando
SQL.
 Como
usar as melhorias de integridade nas
expressões CREATE e ALTER TABLE.
234
Capitulo 6 - Objectivos
 Objectivo
das Vistas.
 Como criar e apagar Vistas usando SQL.
 Como o SGBD efectua operações sobre vistas.
 Sobre que condições as vistas são actualizáveis.
 Vantagens e Desvantagens das Vistas.
 Como funciona o modelo de transacções ISO.
 Como usar as expressões GRANT e REVOKE
como controlo de segurança.
235
ISO SQL Tipos de Dados
236
Melhorias de Integridade
 Considere
–
–
–
–
–
cinco tipos de restrições de integridade:
Dados Obrigatórios.
Restrições de Domínio.
Integridade de entidades.
Integridade referencial.
Restrições de negócio.
237
Melhorias de Integridade
Dados Obrigatórios
position
VARCHAR(10)
NOT NULL
Restrições de Domínio
(a) CHECK
sex
CHAR
NOT NULL
CHECK (sex IN (‘M’, ‘F’))
238
Melhorias de Integridade
(b) CREATE DOMAIN
CREATE DOMAIN DomainName [AS] dataType
[DEFAULT defaultOption]
[CHECK (searchCondition)]
Por exemplo:
CREATE DOMAIN SexType AS CHAR
CHECK (VALUE IN (‘M’, ‘F’));
sex SexType
NOT NULL
239
Melhorias de Integridade

searchCondition pode conter table lookup:
CREATE DOMAIN BranchNo AS CHAR(4)
CHECK (VALUE IN (SELECT branchNo
FROM Branch));

Domínios podem ser removidos usando DROP DOMAIN:
DROP DOMAIN DomainName
[RESTRICT | CASCADE]
240
IEF – Integridade de Entidades


Chave primária de uma tabela tem que conter um valor
único, não nulo para cada linha.
O standard ISO suporta a clausula FOREIGN KEY nas
expressões CREATE e ALTER TABLE :
PRIMARY KEY(staffNo)
PRIMARY KEY(clientNo, propertyNo)

Só se pode ter uma clausula PRIMARY KEY por tabela.
Pode-se no entanto garantir valores únicos para chaves
alternativas usando UNIQUE:
UNIQUE(telNo)
241
IEF – Integridade Referencial
 FK
é uma coluna ou um conjunto de colunas que
ligam cada linha da tabela filha que contém a FK à
linha da tabela pai que contém uma PK igual.
 Integridade referencial significa que, se FK contém
um valor, esse valor tem que se referir a uma linha
existente na tabela pai.
 O standard ISO suporta a definição de FKs com a
clausula FOREIGN KEY nas expressões CREATE
e ALTER TABLE:
FOREIGN
Branch
KEY(branchNo)
REFERENCES
242
IEF – Integridade Referencial


Qualquer INSERT/UPDATE que tente criar um valor na
FK da tabela filha sem que exista um valor idêntico na
chave candidata da tabela pai é rejeitado.
A tentativa de actualizar/apagar o valor de uma chave
candidata na tabela pai com linhas idênticas nas tabelas
filhas, está dependente da acção referencial especificada
nas subclausulas de ON UPDATE e ON DELETE:
– CASCADE
– SET DEFAULT
- SET NULL
- NO ACTION
243
IEF – Integridade Referencial
CASCADE: Apaga a linha da tabela pai e linhas
correspondentes das tabelas filhas, e assim sucessivamente em
cascata.
SET NULL: Apaga a linha da tabela pai e muda todas as
colunas FK na tabela filha para NULL. Só é valido se as
colunas FK não estiverem a NOT NULL.
SET DEFAULT: Apaga a linha da tabela pai e muda cada
componente da FK da tabela filha para o valor default
especificado. Só é válido se houver um valor DEFAULT
especificado para as colunas FK.
NO ACTION: Rejeita a operação na tabela pai. Default.
244
IEF – Integridade Referencial
FOREIGN KEY (staffNo) REFERENCES Staff
ON DELETE SET NULL
FOREIGN KEY (ownerNo) REFERENCES Owner
ON UPDATE CASCADE
245
IEF – Restrições de Negócio
 Podemos
usar CHECK/UNIQUE no CREATE e
ALTER TABLE.
 Também existe:
CREATE ASSERTION AssertionName
CHECK (searchCondition)
 que
é muito semelhante à clausula CHECK.
246
IEF – Restrições de Negócio
CREATE ASSERTION StaffNotHandlingTooMuch
CHECK (NOT EXISTS (SELECT staffNo
FROM PropertyForRent
GROUP BY staffNo
HAVING COUNT(*) > 100))
247
Definição de Dados
 SQL
LDD permite a criação e remoção de objectos
de base de dados como esquemas, domínios,
tabelas, vistas e índices.
 Principais expressões de SQL LDD são:
CREATE SCHEMA
CREATE/ALTER DOMAIN
CREATE/ALTER TABLE
CREATE VIEW
 Muitos
DROP SCHEMA
DROP DOMAIN
DROP TABLE
DROP VIEW
SGBDs também permitem:
CREATE INDEX DROP INDEX
248
Definição de Dados




Relações e outros objectos de bases de dados existem dentro
de um ambiente.
Cada ambiente contém um ou mais catálogos, e cada
catálogo consiste de um conjunto de esquemas.
Um esquema é uma colecção de objectos de bases de dados
relacionados.
Os objectos de um esquema podem ser tabelas, vistas,
domínios, assertions, collations, translations, e conjuntos de
caracteres. Todos pertencem ao mesmo owner.
249
CREATE SCHEMA
CREATE SCHEMA [Name |
AUTHORIZATION CreatorId ]
DROP SCHEMA Name [RESTRICT | CASCADE ]
 Com
a opção RESTRICT (default), o esquema
tem de estar vazio ou a operação falha.
 Com a opção CASCADE, a operação remove
todos os objectos associados ao esquema em
cascata. Se alguma destas operações falhar, o
DROP SCHEMA falha.
250
CREATE TABLE
CREATE TABLE TableName
{(colName dataType [NOT NULL] [UNIQUE]
[DEFAULT defaultOption]
[CHECK searchCondition] [,...]}
[PRIMARY KEY (listOfColumns),]
{[UNIQUE (listOfColumns),] […,]}
{[FOREIGN KEY (listOfFKColumns)
REFERENCES ParentTableName [(listOfCKColumns)],
[ON UPDATE referentialAction]
[ON DELETE referentialAction ]] [,…]}
{[CHECK (searchCondition)] [,…] })
251
CREATE TABLE





Cria uma tabela com uma ou mais colunas do tipo
dataType.
Com NOT NULL, o sistema rejeita qualquer tentativa de
inserção de um valor nulo nesta coluna.
Podemos especificar um valor DEFAULT para a coluna.
Chaves primárias devem ser sempres especificadas como
NOT NULL.
A clausula FOREIGN KEY especifica FK em conjunto
com a acção referencial
252
Exemplo 6.1 - CREATE TABLE
CREATE DOMAIN OwnerNumber AS VARCHAR(5)
CHECK (VALUE IN (SELECT ownerNo FROM
PrivateOwner));
CREATE DOMAIN StaffNumber AS VARCHAR(5)
CHECK (VALUE IN (SELECT staffNo FROM Staff));
CREATE DOMAIN PNumber AS VARCHAR(5);
CREATE DOMAIN PRooms AS SMALLINT;
CHECK(VALUE BETWEEN 1 AND 15);
CREATE DOMAIN PRent AS DECIMAL(6,2)
CHECK(VALUE BETWEEN 0 AND 9999.99);
253
Exemplo 6.1 - CREATE TABLE
CREATE TABLE PropertyForRent (
propertyNo PNumber NOT NULL, ….
rooms PRooms
NOT NULL DEFAULT 4,
rent
PRent
NOT NULL, DEFAULT 600,
ownerNo
OwnerNumber
NOT NULL,
staffNo
StaffNumber
Constraint StaffNotHandlingTooMuch ….
branchNo BranchNumber
NOT NULL,
PRIMARY KEY (propertyNo),
FOREIGN KEY (staffNo) REFERENCES Staff
ON DELETE SET NULL ON UPDATE CASCADE ….);
254
ALTER TABLE
 Adiciona
uma nova coluna à tabela.
 Remove uma coluna da tabela.
 Adiciona uma nova restrição à tabela.
 Remove uma restrição da tabela.
 Especifica um valor por defeito para uma coluna.
 Remove o valor por defeito de uma coluna.
255
Exemplo 6.2(a) - ALTER TABLE
Altere a tabela Staff e remova o valor por defeito
‘Assistant’ da coluna position e determine o para
valor por defeito da coluna sex o valor (‘F’).
ALTER TABLE Staff
ALTER position DROP DEFAULT;
ALTER TABLE Staff
ALTER sex SET DEFAULT ‘F’;
256
Exemplo 6.2(b) - ALTER TABLE
Remova a restrição de que um funcionário não
pode gerir mais de 100 propriedades ao mesmo
tempo da tabela PropertyForRent. Adicione uma
nova coluna (prefNoRooms) na tabela Client.
ALTER TABLE PropertyForRent
DROP CONSTRAINT StaffNotHandlingTooMuch;
ALTER TABLE Client
ADD prefNoRooms PRooms;
257
DROP TABLE
DROP TABLE TableName [RESTRICT | CASCADE]
ex.



DROP TABLE PropertyForRent;
Remove uma determinada tabela e todas as suas linhas.
Com a opção RESTRICT, se a existência de algum objecto
depender da existência desta tabela,, SQL não permite a
execução deste pedido.
Com a opção CASCADE, SQL remove todos os objectos
dependentes (e objectos dependentes destes).
258
Vistas
Vista
Resultado dinâmico de uma ou mais operações
relacionais sobre tabelas bases para produzir
uma nova relação.
 Relação
Virtual que não necessita de existir na
base de dados mas é produzida quando necessária
na altura do pedido.
259
Vistas
 Conteúdo
de uma vista é definido como uma
query sobre uma ou mais tabelas base.
 Com view resolution, qualquer operação efectuada
sobre uma vista é automaticamente traduzida em
operações sobre as relações da qual esta deriva.
 Com view materialization, a vista é armazenada
como uma tabela temporária, que é mantida à
medida que as tabelas base são actualizadas.
260
SQL - CREATE VIEW
CREATE VIEW ViewName [ (newColumnName [,...]) ]
AS subselect
[WITH [CASCADED | LOCAL] CHECK OPTION]
 Podemos
determinar um nome para cada coluna da vista.
 Se for especificado uma lista de nomes de colunas, tem de
ter o mesmo número de items que o número de colunas
produzidas pelo subselect.
 Se omitida, cada coluna toma o nome da coluna
correspondente do subselect.
261
SQL - CREATE VIEW




A lista de nomes tem de ser especificada se houver alguma
ambiguidade com os nomes das colunas.
O subselect é conhecido como defining query.
WITH CHECK OPTION assegura que se uma linha não
satisfizer a clausula WHERE da defining query, não é
adicionada a tabela base correspondente.
É necessário privilégio SELECT em todas as tabelas
referenciadas no subselect e privilégio USAGE em
qualquer domínio usado nas colunas referenciadas.
262
Exemplo 6.3 – Crie uma Vista Horizontal
Crie uma vista tal que o gerente (manager) do
escritório B003 só possa ver os detalhes dos
funcionários que trabalham no seu escritório.
CREATE VIEW Manager3Staff
AS
SELECT *
FROM Staff
WHERE branchNo = ‘B003’;
263
Exemplo 6.4 - Crie uma Vista Vertical
Crie uma vista do detalhe do staff do escritório
B003 excluindo os salários.
CREATE VIEW Staff3
AS SELECT staffNo, fName, lName, position, sex
FROM Staff
WHERE branchNo = ‘B003’;
264
Exemplo 6.5-Vistas com Junção e Agrupamento
Crie uma vista do staff que administre
propriedades para arrendar, incluindo o número
do escritório em que trabalham, código do
trabalhador e a quantidade de propriedades que
administram.
CREATE VIEW StaffPropCnt (branchNo, staffNo, cnt)
AS SELECT s.branchNo, s.staffNo, COUNT(*)
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo;
265
Exemplo 6.5-Vistas com Junção e Agrupamento
266
SQL - DROP VIEW
DROP VIEW ViewName [RESTRICT | CASCADE]
 Remove
a definição da vista da base de dados.
 Por exemplo:
DROP VIEW Manager3Staff;
267
SQL - DROP VIEW
 Com
a opção CASCADE, todos os objectos
relacionados com a vista são removidos; i.e.
quaisquer vistas definidas sobre esta vista são
removidas.
 Com a opção RESTRICT (default), se a existência
de algum outro objecto depender da existência da
vista a ser removida, o comando é rejeitado.
268
Resolução de Vistas
Contar o número de propriedades geridas por cada
membro do escritório B003.
SELECT staffNo, cnt
FROM StaffPropCnt
WHERE branchNo = ‘B003’
ORDER BY staffNo;
269
Resolução de Vistas
(a) Os nomes das colunas da Vista na lista SELECT
são traduzidos para os nomes das colunas
correspondentes na definição da Vista:
SELECT s.staffNo As staffNo, COUNT(*) As cnt
(b) Os nomes das Vistas no FROM são substituídos
pelos correspondentes da lista do FROM da
definição da Vista:
FROM Staff s, PropertyForRent p
270
Resolução de Vistas
(c) o WHERE da query do utilizador é combinado
com o WHERE da definição da Vista usando o
AND:
WHERE s.staffNo = p.staffNo AND branchNo = ‘B003’
(d) as clausulas GROUP BY e HAVING são copiadas
da definição da Vista:
GROUP BY s.branchNo, s.staffNo
(e) o ORDER BY é copiado da query e o nome da
coluna traduzido para o nome da coluna da
definição da Vista
ORDER BY s.staffNo
271
Resolução de Vistas
(f) A query final é então executada para devolver o
resultado:
SELECT s.staffNo, COUNT(*)
FROM staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo AND
branchNo = ‘B003’
GROUP BY s.branchNo, s.staffNo
ORDER BY s.staffNo;
272
Restricções sobre Vistas
SQL impõe algumas restrições na criação e
utilização das Vistas.
(a) Se uma coluna da Vista for baseada numa função
de agregação:
– A coluna só pode aparecer na clausula SELECT e
na ORDER BY de queries que acedam a esta
Vista.
– A coluna não pode ser utilizada no WHERE nem
ser argumento numa função de agregação de
qualquer query que se baseie nesta Vista.
273
Restricções sobre Vistas
 Por
exemplo, a seguinte query não funciona:
SELECT COUNT(cnt)
FROM StaffPropCnt;
 Igualmente,
a seguinte query também falha:
SELECT *
FROM StaffPropCnt
WHERE cnt > 2;
274
Restricções sobre Vistas
(b) Uma Vista agrupada não pode ser joined com
uma tabela base ou vista.

Por exemplo, a Vista StaffPropCnt é uma Vista
agrupada, por isso qualquer tentativa de junção
desta Vista com outra tabela ou vista falha.
275
Actualização de Vistas
 Todas
as actualizações feitas sobre a tabela base
reflectem-se sobre todas as vistas que utilizem essa
tabela.
 À partida poderíamos esperar que se uma vista
fosse actualizada, as tabelas bases reflectiriam
essas actualizações.
276
Actualização de Vistas
 No
entanto, considerando a Vista StaffPropCnt.
 Se tentarmos inserir o registo em que no escritório
B003, o SG5 gere 2 propriedades:
INSERT INTO StaffPropCnt
VALUES (‘B003’, ‘SG5’, 2);
 Seria
necessário inserir 2 registos na tabela
PropertyForRent mostrando que propriedades é
que SG5 geria. No entanto, não sabemos que
propriedades são; i.e. não sabemos as chaves
primárias!
277
Actualização de Vistas
 Se
mudarmos a definição da vista e substituirmos
a contagem pelos códigos das propriedades:
CREATE VIEW StaffPropList (branchNo,
staffNo, propertyNo)
AS SELECT s.branchNo, s.staffNo, p.propertyNo
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo;
278
Actualização de Vistas
 Tentando
inserir o registo:
INSERT INTO StaffPropList
VALUES (‘B003’, ‘SG5’, ‘PG19’);
 Ainda
existem problemas, porque na tabela
PropertyForRent todas as colunas à excepção de
postcode/staffNo não permitem nulos.
 No entanto, não existe forma de atribuir valores
às colunas que não admitem valores nulos.
279
Actualização de Vistas


ISO especifica quais as vistas que devem ser actualizáveis
no sistema conforme um standard.
Uma vista é actualizável se e só se :
- DISTINCT não for especificado.
- Cada elemento da lista SELECT da definição da vista é um nome de
uma coluna e nenhuma coluna aparece mais que uma vez.
- a clausula FROM especifica apenas uma tabela, excluindo qualquer
vista baseada numa junção, união, intersecção ou diferença.
- Não pode ter SELECT aninhados com referências à tabela externa.
- Não pode ter as clausulas GROUP BY ou HAVING.
- e também, cada linha adicionada via vista não pode violar as regras
de integridade da tabela base.
280
Vista actualizavel
Para uma vista ser actualizável, o SGBD deve
conseguir rastrear qualquer linha ou coluna até à
linha ou coluna da tabela base.
281
WITH CHECK OPTION
 As
linhas existentes numa vista satisfazem a
condição WHERE da query que a define.
 Se uma linha é modificada e deixa de satisfazer a
condição, desaparece da vista.
 Aparecem novas linhas na vista quando existem
insert/update na vista que satisfazem a condição
WHERE.
 Linhas que entram e saiem da vista são
denominadas migrating rows.
 WITH CHECK OPTION proíbe que uma linha
282
saia da vista.
WITH CHECK OPTION



LOCAL/CASCADED aplica-se nas hierarquias de vistas.
Com LOCAL, qualquer insert/update na vista e sobre
qualquer vista definida directa ou indirectamente sobre
esta vista não deve deixar a linha desaparecer da vista a
não ser que esta também desapareça da tabela ou vista de
que deriva.
Com CASCADED (default), qualquer insert/ update nesta
vista e sobre qualquer vista definida directa ou
indirectamente sobre esta vista não deve deixar que a linha
desapareça da vista.
283
Exemplo 6.6 - WITH CHECK OPTION
CREATE VIEW Manager3Staff
AS
SELECT *
FROM Staff
WHERE branchNo = ‘B003’
WITH CHECK OPTION;
 Não
podemos actualizar o número do escritório
B003 para B002 porque iria fazer com que a linha
desaparecesse da vista.
 Também não é possível inserir linhas na vista que
tenham um número de escritório diferente de
B003.
284
Exemplo 6.6 - WITH CHECK OPTION
 Se
Manager3Staffnão for definida directamente
sobre Staff mas sobre outra vista de Staff:
CREATE VIEW LowSalary
AS SELECT * FROM Staff WHERE salary > 9000;
CREATE VIEW HighSalary
AS SELECT * FROM LowSalary
WHERE salary > 10000
WITH LOCAL CHECK OPTION;
CREATE VIEW Manager3Staff
AS SELECT * FROM HighSalary
WHERE branchNo = ‘B003’;
285
Exemplo 6.6 - WITH CHECK OPTION
UPDATE Manager3Staff
SET salary = 9500
WHERE staffNo = ‘SG37’;
O
Update falhava: embora o update causasse o
desaparecimento da linha de HighSalary, a linha
não desapareceria de LowSalary.
 No entanto, se o update fosse salary = 8000, este
seria executado uma vez que a linha também
desapareceria de LowSalary.
286
Exemplo 6.6 - WITH CHECK OPTION
 Se
HighSalary fosse especificada WITH
CASCADED CHECK OPTION, determinar
salary = 9500 ou 8000 seria rejeitado porque a
linha iria desaparecer de HighSalary.
 Para prevenir este tipo de anomalias, cad vista
deveria ser criada usando WITH CASCADED
CHECK OPTION.
287
Vantagens das Vistas
 Independência
de Dados
 Actualidade
 Segurança
melhorada
 Complexidade reduzida
 Conveniência
 Customização
 Integridade de Dados
288
Desvantagens das Vistas
 Restrições
nas actualizações
 Restrição da Estrutura
 Performance
289
Materialização das Vistas




Mecanismo de resolução de vistas pode ser lento,
particularmente quando a vista é acedida frequentemente.
Materialização de vistas armazena a vista numa tabela
temporária no primeiro acesso à vista.
Daí em diante, queries baseadas na vista materializada
podem ser mais rápidas que a recomputação da vista em
cada acesso.
Dificuldade é manter a actualidade da vista à medida que
as tabelas base são actualizadas.
290
Manutenção das Vistas
 Manutenção
das Vistas visa aplicar apenas as
alterações necessárias para manter a vista
actualizada.
 Considere a seguinte vista:
CREATE VIEW StaffPropRent(staffNo)
AS SELECT DISTINCT staffNo
FROM PropertyForRent
WHERE branchNo = ‘B003’ AND
rent > 400;
291
Materialização de Vistas





Se inserirmos uma linha em PropertyForRent com rent
400 então a vista não seria actualizada.
Se inserirmos uma linha com propriedade PG24 no
escritório B003 com staffNo = SG19 e rent = 550, então a
linha apareceria na vista materializada.
Se inserirmos uma linha com propriedade PG54 no
escritório B003 com staffNo = SG37 e rent = 450, então
nenhuma nova linha seria adicionada na vista
materializada.
Se removermos a propriedade PG24, a linha deveria ser
removida da vista materializada.
Se removermos a propriedade PG54, então a linha de
SG37 não deveria ser removida (devido a existência da
292
propriedade PG21).
Transacções




SQL define um modelo de transacções baseado em no
COMMIT e ROLLBACK.
Uma transacção é uma unidade lógica de trabalho, com
uma ou mais expressões SQL, que é executada
atomicamente no que diz respeito à recuperação.
Uma transacção SQL começa automaticamente com uma
das seguintes expressões SQL (e.g., SELECT, INSERT,
UPDATE).
Alterações provocadas por uma transacção não são visíveis
a transacções concorrentes até essa transacção finalizar.
293
Transacções

Uma transacção pode acabar de quatro formas diferentes:
- COMMIT acaba a transacção com sucesso, tornando as
alterações permanentes.
- ROLLBACK aborta a transacção, repondo os valores
alterados pela transacção.
- Para programmatic SQL, se o programa termina com
sucesso então a transacção termina com sucesso, mesmo
que o COMMIT nao tenha sido executado.
- Para programmatic SQL, se o programa terminal
anormalmente, a transacção é abortada.
294
Transacções
 Novas
transacções começam com a proxima
expressão transaction-initiating.
 Transacções SQL não podem ser aninhadas.
 SET TRANSACTION determina a transacção:
SET TRANSACTION
[READ ONLY | READ WRITE] |
[ISOLATION LEVEL READ UNCOMMITTED |
READ
COMMITTED|REPEATABLE
READ
|SERIALIZABLE ]
295
Restrição de Integridade Imediata ou Deferida
 Nem
sempre se quer que as restrições sejam
verificadas imediatamente, mas sim no final da
transacção.
 Restrição pode ser definida como INITIALLY
IMMEDIATE ou INITIALLY DEFERRED,
indicando o modo como cada restrição se
comporta no inicio de cada transacção.
 No ultimo caso, também é possível especificar se o
modo pode ser alterado usando a opção [NOT]
DEFERRABLE.
 Por defeito o modo é INITIALLY IMMEDIATE.
296
Restrição de Integridade Imediata ou Deferida
A
expressão SET CONSTRAINTS é usada da
seguinte forma:
SET CONSTRAINTS
{ALL | constraintName [, . . . ]}
{DEFERRED ¦ IMMEDIATE}
297
Controlo de Acessos – Identificadores de
Autorização e de Propriedade
O
Identificador de autorização é um identificador
normal SQL utilizado para estabelecer a
identidade de um utilizador. Tem normalmente
uma palavra passe a si associado.
 Usado para definir quais os objectos o utilizador
pode utilizar e quais as operações que pode
efectuar sobre esses objectos.
 Cada objecto criado em SQL tem um proprietário,
definido na clausula AUTHORIZATION do
esquema a que esse objecto pertence.
298
Privilégios
 Acções
permitidas ao utilizador numa determinada
tabela ou vista:
SELECT Consultar dados de uma tabela.
INSERT Inserir novas linhas numa tabela.
UPDATE Modificar linhas de dados numa tabela.
DELETE Remover linhas de dados de uma tabela.
REFERENCES Referencia colunas de tabelas nas
restrições de integridade.
USAGE
Usa dominios, collations, character sets, e
translations.
299
Privilégios
 Pode-se
restringir
INSERT/UPDATE/
REFERENCES a determinadas colunas.
 O proprietário da tabela tem de permitir aos
outros utilizadores os privilégios necessários
usando a expressão GRANT.
 Para criar uma vista, o utilizador tem de ter
privilégio de SELECT em todas as tabelas
necessárias à vista e privilégio REFERENCES nas
colunas a utilizar.
300
GRANT
GRANT {PrivilegeList | ALL PRIVILEGES}
ON
ObjectName
TO
{AuthorizationIdList | PUBLIC}
[WITH GRANT OPTION]
consiste em um ou mais dos
privilégios já enunciados separados por virgulas.
 ALL PRIVILEGES atribui todos os privilégios a
um utilizador.
 PrivilegeList
301
GRANT
 PUBLIC
permite que todos os utilizadores (
actuais e futuros ) tenham acesso.
 ObjectName pode ser uma tabela, vista, domínio,
character set, collation ou translation.
 WITH GRANT OPTION permite que os
privilégios sejam “passados” a outros.
302
Exemplo 6.7/8 - GRANT
Atribuir a Manager privilégios totais sobre a
tabela Staff.
GRANT ALL PRIVILEGES
ON Staff
TO Manager WITH GRANT OPTION;
Atribuir aos utilizadores Personnel e Director
privilégios SELECT e UPDATE na coluna salary
da tabela Staff.
GRANT SELECT, UPDATE (salary)
ON Staff
TO Personnel, Director;
303
Exemplo 6.9 – GRANT - Atribuir privilégios
específicos a PUBLIC
Atribuir a todos os utilizadores
SELECT na tabela Branch.
privilégio
GRANT SELECT
ON Branch
TO PUBLIC;
304
REVOKE

REVOKE retira privilégios atribuídos por GRANT.
REVOKE [GRANT OPTION FOR]
{PrivilegeList | ALL PRIVILEGES}
ON ObjectName
FROM {AuthorizationIdList | PUBLIC}
[RESTRICT | CASCADE]

ALL PRIVILEGES refere-se a todos os privilégios
atribuídos a esse utilizador pelo utilizador que esta a usar o
REVOKE.
305
REVOKE
 GRANT
OPTION FOR permite que os privilégios
“passados” via WITH GRANT OPTION do
GRANT possam ser retirados separadamente
destes privilégios.
 REVOKE falha se o seu resultado for um objecto
abandonado, p.ex. uma vista, a não ser que a
palavra chave CASCADE tenha sido especificada.
 Privilégios atribuídos a este utilizador por outros
utilizadores não são afectados.
306
REVOKE
307
Example 6.10/11 - REVOKE Specific Privileges
Retirar o privilégio SELECT sobre a tabela
Branch a todos os utilizadores.
REVOKE SELECT
ON Branch
FROM PUBLIC;
Retirar todos os privilégios atribuídos a Director
sobre a tabela Staff.
REVOKE ALL PRIVILEGES
ON Staff
FROM Director;
308
Capitulo 9
Planeamento, Desenho e Administração
de Bases de Dados
Transparências
Capitulo 9 - Objectivos







Principais componentes de um sistema de informação.
Principais estágios do ciclo de vida de uma aplicação de
base de dados.
Principais fases do desenho de base de dados: desenho
conceptual, lógico, e físico.
Benefícios das ferramentas CASE.
Como avaliar e seleccionar um SGBD.
Distinção entre administração de daos e administração
de base de dados.
Propósito e tarefas associadas à administração de
dados e administração de base de dados.
3102
Software Depression
 Nas
ultimas décadas tem-se observado a
proliferação de aplicações de software, muitas
das quais requerem constante manutenção:
– Corrigir falhas,
– Implementar novos requisitos para os utilizadores,
– Modificar software para funcionar em novas/melhoradas
plataformas.

Esforço despendido na manutenção começou a
absorver recursos a uma taxa alarmante.
311
Software Depression

Como resultado, muitos projectos de software ficavam
– atrasados,
– fora do orçamento,
– pouco fiáveis,
– manutenção difícil,
– fraca performance.

No fim dos anos 60s, levou a ‘software crisis’, referido
agora como ‘software depression’.
312
Software Depression

As principais razões para a falha dos projectos de
software eram:
- falta da especificação completa dos requisitos;
- falta de métodos apropriados de desenvolvimento;
- fraca decomposição do design em componentes
específicos.

Uma aproximação estruturada para o desenvolvimento foi
proposta e chamava-se ciclo de vida dos sistemas de
informação ( information systems lifecycle ).
313
Sistema de Informação
Recursos que permitem a recolha,
manuseamento, controlo e dessiminação de
informação na organização.
 A Base
de Dados é um componente
fundamental do S.I., e o seu desenvolvimento/
uso deve ser visto segundo a perspectiva geral
dos requisitos da organização.
314
Ciclo de vida de uma aplicação de Base de
Dados
 Planeamento
 Definição
da base de dados
do Sistema
 Requisitos
de recolha e analise
 Desenho
da base de dados
 Selecção
do SGBD (opcional)
315
Ciclo de vida de uma aplicação de Base de
Dados
 Desenho
da Aplicação
 Prototipagem
(opcional)
 Implementação
 Conversão
e Alimentação de Dados
 Testes
 Manutenção
operacional.
316
Estágios do ciclo de vida de uma aplicação de
base de dados
317
Planeamento da Base de Dados
Actividades de Gestão que permitem que os
estágios do ciclo de vida de um aplicação de
base de dados sejam realizados tão eficiente e
objectivamente quanto possível.
 Devem
ser integradas com a estratégia global
do S.I. da organização.
318
Planeamento da Base de Dados –
Mission Statement

Mission statement para o projecto da base de dados
define os principais objectivos da aplicação de base de
dados.

Os orientadores do projecto de base de dados
normalmente definem o mission statement.

Mission statement ajuda a clarificar o propósito do
projecto de base de dados e providencia um caminho
mais claro para a criação de uma aplicação de base de
dados mais eficiente e objectiva.
319
Planeamento da Base de Dados –
Objectivos
 Uma
vez definido o mission statement, os
objectivos são também definidos.
 Cada
objectivo deve identificar uma tarefa
particular que a base de dados deve suportar.
 Pode
também incluir alguma informação
adicional que especifique o trabalho a relaizar,
os recursos a utilizar, e o dinheiro necessário.
320
Planeamento da Base de Dados
O
planeamento da base de dados deve também
incluir o desenvolvimento de standards que
determinem:
–
–
–
–
como vai ser feita a recolha da informação,
em que formato ela deve ser especificada,
qual a documentação necessária,
como deve ser feito o desenho e a
implementação.
321
Definição do Sistema
Descreve o escopo e os limites da aplicação de
base de dados e as vistas globais dos
utilizadores.
 Vista
do utilizador define o que é requerido da
aplicação de base de dados da perspectiva de:
– determinada função (como Manager ou
Supervisor) ou
– determinada secção (como marketing,
seccção pessoal, ou controlo de stock).
322
Definição do Sistema

Aplicação de Base de dados pode ter uma ou mais
vistas de utilizadores.

A identificação das vistas dos utilizadores garantem
que não sejam esquecidos potenciais utilizadores da
base de dados no desenvolvimento dos requisitos para
a nova aplicação.

As vistas dos utilizadores também ajudam no
desenvolvimento de uma aplicação de base de dados
complexa, permitindo que os requisitos sejam divididos
em peças mais simples.
323
Representação de uma Aplicação de Base de
Dados com Múltiplas Vistas de Utilizadores
324
Recolha e Analise de Requisitos
É um processo de recolha e analise de
informação sobre parte da organização a ser
suportada pela aplicação de base de dados, e
utilizar esta informação para identificar os
requisitos dos utilizadores no novo sistema.
325
Recolha e Analise de Requisitos

A informação é recolhida para cada vista global
incluindo:
– Descrição dos dados utilizados ou produzidos;
– Detalhes sobre como esses dados serão
usados/produzidos;
– Quaisquer novos requisitos para a nova aplicação de
base de dados.

A informação é analisada para identificar requisitos a
serem incluídos na nova aplicação de base de dados.
326
Recolha e Analise de Requisitos
 Outra
actividade importante é decidir como
gerir a aplicação de base de dados tendo em
conta várias vistas de utilizadores.
 Três principais aproximações:
– centralizada;
– integração de vistas;
– combinação das duas anteriores.
327
Recolha e Analise de Requisitos
 Centralizada
– Requisitos de cada vista de utilizador é
agregada numa só colecção de requisitos.
– É criado um modelo global de dados
baseado neste conjunto de requisitos (que
representam todas as vistas dos
utilizadores).
328
Versão Centralizada para a Gestão de
várias Vistas de Utilizadores
329
Recolha e Analise de Requisitos
 Integração
de Vistas
– São utilizados os requisitos de cada
vista de utilizador para criar um
modelo de dados separado.
330
Recolha e Analise de Requisitos

Ao modelo de dados que representa uma vista de um
utilizador chama-se modelo de dados local, e é composto
por diagramas e documentação que descreve os
requisitos de uma vista particular de um utilizador sobre
a base de dados.

Os modelos de dados locais são depois fundidos de forma
a produzir o modelo de dados global, que representa a
vista global de todos os utilizadores sobre a base de
dados.
331
Integração de Vistas para a Gestão de
várias Vistas de Utilizadores
332
Desenho da Base de Dados
É o processo de criação do desenho da base de
dados que irá suportar as operações e
objectivos de uma empresa.
333
Desenho da Base de Dados
 Principais
Objectivos:
– Representar os dados e relacionamentos entre os
dados requeridos pelas principais áreas de aplicação
e grupos de utilizadores.
– Providenciar um modelo de dados que suporte
qualquer transacção sobre determinados dados.
– Especificar um desenho que seja estruturalmente
apropriado para responder aos requisitos minimos
de performance. (ex: tempos de resposta).
334
Desenho da Base de Dados

Aproximações são:
– Top-down (entidades  atributos )
» Bases de Dados complexas
– Bottom-up ( atributos  entidades )
» Bases de Dados simples
– Inside-out
» Semelhante a Bottom-up, mas identificando um conjunto
principal de entidades e pormenorizando daí em diante.
– Mixed
» Usa Bottom-up e Top-down, convergindo no final para um só
modelo.
335
Desenho da Base de Dados
 Os
principais objectivos da modelação de
dados são:
– ajudar a perceber o significado (semântica)
dos dados;
– facilitar a divulgação sobre os requisitos de
informação.
 Para
a construção do modelo de base de dados
é necessário responder a questões sobre as
entidades, relacionamentos, e atributos.
336
Desenho da Base de Dados
 Um
modelo de dados garante que se percebeu:
- a perspectiva de cada utilizador sobre os
dados;
- natureza dos dados, independentemente da
sua representação fisica;
- uso dos dados em todas as vistas dos
utilizadores.
337
Critérios para a Elaboração de um Modelo
de Dados Óptimo
338
Desenho da Base de Dados
 Três
fases no desenho da base de dados:
– Desenho Conceptual
– Desenho Lógico
– Desenho Físico.
339
Desenho Conceptual da Base de Dados
É o processo de construção de um modelo da
informação utilizada pela empresa,
independentemente de todas as considerações
físicas.
O
modelo de dados é construído utilizando a
informação recolhida na especificação de
requisitos dos utilizadores.
 Fonte
de informação para o desenho lógico.
340
Desenho Lógico da Base de Dados
É o processo de construção de um modelo de
informação utilizada numa empresa baseado
num modelo de dados especifico (e.g.
relacional), mas independente do SGBD e de
outras considerações físicas.
O
modelo conceptual é refinado e convertido
num modelo lógico de dados.
341
Desenho Físico de Base de Dados
É o processo de elaboração da descrição da
implementação da base de dados em
armazenamento secundário.
 Descreve
as estruturas de armazenamento e
métodos de acesso utilizados para alcançar um
acesso eficiente aos dados.
 Criado
para um determinado SGBD.
342
Arquitectura ANSI-SPARC de três níveis e
as Fases do Desenho da Base de Dados
343
Escolha do SGBD
Escolha de um SBGD apropriado para
suportar uma aplicação de base de dados.
 Executado assim que houver informação
suficiente sobre os requisitos do sistema.
 Principais passos para a escolha de um SGBD:
–
–
–
–
definir os pontos de referência no estudo;
lista de dois ou três produtos;
avaliar os produtos;
aconselhar a escolha e produzir um relatório.
344
Características da Avaliação de um SGBD
345
Características da Avaliação de um SGBD
346
Exemplo - Características da Avaliação de
um SGBD
347
Desenho da Aplicação
Desenho do interface com o utilizador e das
aplicações que usam e processam a base de
dados.
O
Desenho da Base de Dados e das Aplicações
são actividades paralelas.
 Inclui
duas actividades importantes:
– desenho das transacções;
– desenho do interface com o utilizador.
348
Desenho das Aplicações - Transacções
Uma tarefa, ou serie de tarefas, executadas por
um só utilizador ou aplicação, que acede ou
modifica o conteúdo da base de dados.
 Deve
especificar e documentar as
características de alto-nível das transacções
requeridas.
349
Desenho das Aplicações - Transacções
 Características
–
–
–
–
–
importantes das transacções:
dados a ser utilizados pela transacção;
características funcionais da transacção;
resultado da transacção;
importância para os utilizadores;
taxa de utilização.
 Três
tipos principais de transacções: recolha,
actualização, e composto.
350
Prototipagem
Construção de um modelo de trabalho da aplicação da base
de dados.

Objectivos
– identificar características do sistema que funcionam
adequadamente, ou inadequadamente;
– sugerir melhorias ou novas características;
– clarificar os requisitos dos utilizadores;
– avaliar fiabilidade do desenho do sistema.
351
Implementação
 Realização
aplicações.
física da base de dados e do desenho das
– Usar LDD para criar os esquemas das bases de
dados.
– Usar LDD para criar vistas especificas por
utilizadores.
– Usar 3GL ou 4GL para criar as aplicações. Inclui as
transacções das bases de dados usando a LMD,
possivelmente embebidas na linguagem de
programação.
352
Conversão e Alimentação de Dados
Transferência de quaisquer dados já existentes para a nova
base de dados e converter quaisquer aplicações para
trabalharem com a nova base de dados.


Só é necessário quando a nova base de dados vem substituir
um sistema antigo.
– O SGBD normalmente tem funções que importam
ficheiros para a nova base de dados.
Pode ser possível converter e utilizar aplicações do sistema
antigo para uso com o novo sistema.
353
Testes
Processo de execução da aplicação com o objectivo
de detecção de erros.
 Utilizar estratégias
planeadas de teste e dados reais.
 Os testes não mostram a falta de erros; apenas
mostram que existem erros.
 Demonstra que a base de dados e as aplicações
funcionam ( em principio ) segundo os requisitos.
354
Manutenção Operacional
Processo de monitorização e manutenção do sistema
após a instalação.



Monitorização da performance do sistema.
– Se houver falha de performance, pode ser
necessário a reorganização ou melhoramentos na
base de dados.
Manutenção e actualização da aplicação da base de
dados (quando necessário).
Implementação de novos requisitos na aplicação de
base de dados.
355
Ferramentas CASE

As ferramentas CASE providência alguns destes tipo
de suporte:
- dicionário de dados que armazena informação sobre
os dados da aplicação de B.D.;
- ferramentas de desenho para suporte à analise de
dados;
- ferramentas que permitem o desenvolvimento do
modelo de dados organizacional, e o modelo de
dados conceptual e lógico;
- ferramentas que permitem a prototipagem de
aplicações.
356
Ferramentas CASE
 Tem
–
–
–
–
–
os seguintes benefícios:
standards;
integração;
suporte a métodos standard;
consistência;
automatização .
357
Ferramentas CASE e Ciclo de Vida de uma
Aplicação de Base de Dados
358
Administração de Dados e Administração
de Bases de Dados
 O Administrador
de Dados (DA) e o
Administrador de Bases de Dados (DBA) são
responsáveis, respectivamente, pela gestão e
controlo das actividades associadas aos dados
da empresa e à base de dados da empresa.
O
DA preocupa-se mais com os estágios iniciais
do ciclo de vida e o DBA preocupa-se mais com
os últimos estágios.
359
Administração de Dados
 A gestão
dos recursos de dados inclui:
– planeamento das bases de dados,
– desenvolvimento e manutenção de
standards, políticas e procedimentos, e o
desenho conceptual e lógico das bases de
dados.
360
Administração de Bases de Dados
 Gestão
da implementação física da aplicação
de base de dados incluindo:
– desenho físico e implementação da base de
dados,
– determinar controlos de segurança e de
integridade,
– monitorização da performance do sistema, e
reorganização da base de dados.
361
Capitulo 10
Técnicas de Descoberta de Factos
Transparências
362
Capitulo 10 - Objectivos
 Quando
é que as técnicas de descobertas de
factos são utilizadas no ciclo de vida de uma
aplicação de base de dados.
 Tipo
de factos recolhidos em cada estágio do
ciclo de vida da aplicação de base de dados.
 Tipo
de documentação elaborada em cada
estágio do ciclo de vida de uma aplicação de
base de dados.
 Técnicas
mais comuns na descoberta de factos.
363
Capitulo 10 - Objectivos
 Como
usar cada técnica de descoberta de
factos e quais as suas vantagens e
desvantagens.
 Como
aplicar técnicas de descoberta de factos
nos estágios iniciais do ciclo de vida de uma
aplicação de base de dados.
364
Técnicas de Descoberta de Factos
 Necessárias
à captura de factos importantes à
construção da aplicação de base de dados.
 Estes
factos são recolhidos usando técnicas de
descoberta de factos.
 Processo
formal em que se usam técnicas como
entrevistas e questionários para a recolha de
factos sobre o sistema, requisitos e
preferências.
365
Quando são utilizadas as técnicas de
descoberta de factos?
 A descoberta
de factos é utilizada durante todo o
ciclo de vida de uma aplicação de base de dados.
No entanto, é crucial nos estágios iniciais como no
planeamento da base de dados, na definição do
sistema, e na recolha e analise de requisitos.
 Permite
que se aprenda a terminologia, os
problemas, oportunidades, restrições, requisitos e
prioridades da organização e dos utilizadores do
sistema.
366
Exemplos de Dados Recolhidos e da Documentação
Elaborada Durante o Ciclo de Vida de uma
Aplicação de Base de Dados
367
Exemplos de Dados Recolhidos e da Documentação
Elaborada Durante o Ciclo de Vida de uma
Aplicação de Base de Dados
368
Técnicas de Descoberta de Factos
O
responsável pelo desenvolvimento da base de
Dados usa normalmente várias técnicas de
descoberta de factos durante o projecto da base
de dados:
– análise da documentação
– entrevistas
– observando o funcionamento da organização
– pesquisa
– questionários
369
Análise da Documentação
 Pode
ser útil:
– para perceber o porquê da necessidade da
existência de uma base de dados;
– identificar parte da organização associada
ao problema;
– entender o sistema actual.
370
Exemplos do tipo de documentação que
deve ser analisada
371
Entrevistas
 Técnica
de Descoberta de Factos mais utilizada
e normalmente a mais útil.
 Permite
a recolha de informação de indivíduos
cara-a-cara.
 Os
objectivos são descobrir factos, verificar
factos, esclarecer factos, gerar entusiasmo,
envolver o utilizador final, identificar
requisitos, e recolher ideias e opiniões.
372
Vantagens e Desvantagens das Entrevistas
373
Entrevistas
 Dois
tipo de entrevistas: livres e estruturadas.
 Questões
abertas permitem ao entrevistado
responder da forma que acha mais adequada.
 Questões
fechadas restringem a resposta para
um conjunto de opções ou para respostas curtas
e directas.
374
Observar o Funcionamento da organização
 Técnica
eficiente para perceber o sistema.
 Possibilidade
de participar, ou observar, uma
pessoa a fazer determinada actividade para
aprender sobre o sistema.
 Útil
quando a validade de determinados dados
são questionados, ou quando a complexidade
de certos aspectos do sistema não permitem
uma explicação clara pelos utilizadores finais.
375
Vantagens e Desvantagens do uso da
Observação
376
Pesquisa
É
Útil pesquisar o problema e a aplicação.
 Usar
jornais electronicos, livros de referência, e
a Internet (incluindo grupos de discussão e
foruns).
 Providencia
informação sobre como outros
resolveram problemas similares, se existem ou
não pacotes de software para resolver parcial
ou totalmente o problema.
377
Vantagens e Desvantagens do uso da
Pesquisa
378
Questionarios
 Coordenar a
consulta através de questionários
– documentos específicos que permitem a
recolha de factos de um grande número de
pessoas mantendo algum controle sobre as suas
respostas.
 Dois
tipo de questões, formato livre ou fixo.
379
Vantagens e Desvantagens do uso de
Questionários
380
Capitulo 13
Normalização
Transparências
Capitulo 13 - Objectivos
 Propósito
da Normalização.
 Problemas
associados aos dados redundantes.
 Identificação
de vários tipos de anomalias de
actualização como p. ex. inserções, remoções e
modificações.
382
Capitulo 13 - Objectivos
 Como
usar as dependências funcionais para
agrupar atributos em relações que estão numa
determinada forma normal.
 Como
usar o processo de normalização.
 Como
identificar as formas normais mais
comuns, nomeadamente 1FN, 2FN, 3FN, e
Boyce–Codd (BCNF).
 Como
identificar a quarta (4FN) e quinta
(5FN) forma normal.
383
Normalização
O
principal objectivo no desenvolvimento do
modelo lógico para sistemas de bases de dados
relacionais é a representação correcta dos
dados, dos suas relações e restrições.
 Para
atingir este objectivo, devemos identificar
um conjunto acertado de relações.
384
Normalização

As quatro formas normais mais utilizadas são a primeira
(1FN), segunda (2FN) e terceira (3FN) forma normal, e a
forma normal Boyce–Codd (BCNF).

Baseadas nas dependências funcionais entre atributos de
uma relação.

Uma relação pode ser normalizada até uma forma
especifica para evitar a ocorrência de anomalias
provenientes de actualizações.
385
Redundância de Dados
O
principal objectivo do desenho da base de
dados relacional é agrupar atributos em
relações de forma a minimizar a redundância
de dados e reduzir o espaço de armazenamento
necessário pelas relações.
 Problemas
associados à redundância de dados
são ilustrados através da comparação das
relações Staff e Branch com a relação
StaffBranch.
386
Redundância de Dados
387
Redundância de Dados
 A relação
StaffBranch tem dados redundantes: a
informação de cada escritório é repetida para
cada membro do staff.
 Em
contraste, a informação de cada escritório só
aparece uma vez por cada escritório na relação
Branch e apenas o branchNo é repetido na
relação Staff, para representar onde cada
membro do staff trabalha.
388
Anomalias nas Actualizações
 Relações
que contêm informação redundante
podem sofrer de anomalias nas actualizações.
 Tipo
de anomalias nas actualizações incluem:
– Inserções,
– Remoções,
– Modificações.
389
Propriedade Lossless-join e Preservação de
Dependências
 Duas
propriedades importantes da
decomposição:
- propriedade Lossless-join permite-nos
encontrar qualquer instância da relação
original através das instâncias correspondentes
das relações mais simples.
- propriedade de preservação de dependências
permite-nos manter as restrições da relação
original aplicando restrições às tabelas mais
simples.
390
Dependência Funcional

Principal Conceito associado à normalização.

Dependência Funcional
– Descreve o relacionamento entre atributos de uma
relação.
– Se A e B são atributos da relação R, B é
funcionalmente dependente de A ( notação A  B ),
se cada valor de A em R está associado a
exactamente um valor de B em R.
391
Dependência Funcional
 Propriedade
do significado (ou
semântica) dos atributos numa relação.
 Representação
Gráfica:
de uma dependência funcional
refere-se ao atributo ou grupo de atributos na
parte esquerda da seta.
 Determinante
392
Exemplo - Dependência Funcional
393
Dependência Funcional
 Principais
características das dependências
funcionais usadas na normalização:
– ter uma relação 1:1 entre o(s) atributo(s) do
lado esquerdo e os do lado direito da
dependência;
– sempre válidas;
– não triviais.
394
Dependência Funcional
O
conjunto de todas as dependências
funcionais para uma dada relação pode ser
muito grande.
É
importante encontrar um método que reduza
este conjunto para um tamanho razoável.
É
necessário identificar um conjunto de
dependências funcionais (X) para uma relação
que seja inferior ao conjunto completo de
dependência funcionais (Y) para essa relação e
que esse conjunto tenha a propriedade de
incluir todas as dependências funcionais de Y.
395
Dependência Funcional
 Seja
A, B, e C subconjuntos de atributos da
relação R. Os axiomas de Armstrong são:
1. Reflexividade
Se B é um subconjunto de A, então A  B
2. Augmentation
Se A  B, então A,C  C
3. Transitividade
Se A  B e B  C, então A  C
396
O Processo de Normalização
 Técnica
formal para analisar uma relação com
base na sua chave primária e nas dependências
funcionais entre atributos.
 Executada
normalmente num conjunto de
passos. A cada passo corresponde um forma
normal específica, que tem propriedades
conhecidas.
À
medida que a normalização progride, as
relações tornam-se mais restritivas (fortes) no
seu formato e também menos vulneráveis a
anomalias de actualização.
397
Relação entre Formas Normais
398
Forma não normalizada (UNF)
 Uma
tabela que contém um ou mais grupos
repetidos.
 Para
se criar uma tabela desnormalizada:
– Transformar os dados da fonte de
informação (ex. form) para uma tabela com
colunas e linhas.
399
Primeira Forma Normal (1FN)
 Uma
relação em que a intersecção entre uma
linha e uma coluna contenha um e um só valor.
400
UNF para 1FN
 Nomear
um atributo ou grupo de atributos
para chave da tabela não normalizada.
 Identificar grupos
repetidos na tabela
desnormalizada para os atributos chave.
401
UNF para 1FN
 Remover
grupos repetidos:
– Introduzindo dados apropriados nas colunas
vazias das linhas que contêm grupos
repetidos (‘flattening’ the table).
ou
– Colocar os dados repetidos assim como uma
cópia dos valores dos atributos chave numa
nova relação.
402
Segunda Forma Normal (2FN)
 Baseada
no conceito de dependência funcional
total:
– A e B são atributos de uma relação,
– B é totalmente dependente de A se B é
funcionalmente dependente de A mas não o é
de qualquer subconjunto de A.
 2FN
– Uma relação que está na 1FN e todo o
atributo não pertencente à chave primária é
totalmente dependente da chave primária.
403
1FN para 2FN
 Identifique
a chave primária da relação que
está na 1FN.
 Identifique
as dependências funcionais da
relação.
 Se
existem dependências parciais sobre a chave
primária, remova-as e coloque-as numa nova
relação em conjunto com uma cópia do seu
determinante.
404
Terceira Forma Normal (3FN)

Baseada no conceito de dependência transitiva:
– A, B e C são atributos de uma relação tal que se A  B
e B  C,
– então C é transitivamente dependente de A através de
B. (Desde que A não seja funcionalmente dependente de
B ou C).

3FN - Uma relação que está na 1FN e na 2FN em que
nenhum atributo não pertencente à chave primária é
transitivamente dependente da chave primária.
405
2FN para 3FN
 Identifique
a chave primária da relação que
está na 2FN.
 Identifique
as dependências funcionais da
relação.
 Se
existem dependências transitivas sobre a
chave primária, remova-as e coloque-as numa
nova relação em conjunto com uma cópia do
seu determinante.
406
Definições Gerais da 2FN e 3FN

Segunda Forma Normal (2FN)
– Uma relação que está na 1FN e todos os atributos
não pertencentes à chave primária são totalmente
dependentes de qualquer chave candidata.

Terceira Forma Normal (3FN)
– Uma relação que está na 1FN e na 2FN e na qual
nenhum atributo não pertencente à chave primária
depende de qualquer chave candidata.
407
Forma Normal Boyce–Codd (FNBC)
 Baseada
nas dependências funcionais,
incluindo sobre as chaves candidatas de uma
relação, no entanto a FNBC tem restrições
adicionais quando comparada com a definição
geral da 3FN.
 FNBC
– Uma relação está na FNBC se e só se
todo o determinante é chave candidata.
408
Forma Normal Boyce–Codd (FNBC)
 A diferença
entre a 3FN e a FNBC é que para
uma dependência funcional A  B, a 3FN
permite este tipo de dependência numa relação
se B for um atributo da chave primária e A não
é uma chave candidata.
 Enquanto
que , FNBC insiste que para este
tipo de dependência permanecer na relação, A
tem de ser chave candidata.
 Todas
as relações na FNBC estão também na
3FN. No entanto, uma relação na 3FN pode
não estar na FNBC.
409
Forma Normal Boyce–Codd (FNBC)
 Violação
da FNBC é bastante rara.
O
potencial para uma violação da FNBC pode
acontecer numa relação que:
– contém duas (ou mais) chaves candidatas
compostas;
– as chaves candidatas sobrepõem-se (i.e. têm
pelo menos um atributo em comum).
410
Revisão da Normalização (UNF até FNBC)
411
Revisão da Normalização (UNF até FNBC)
412
Revisão da Normalização (UNF até FNBC)
413
Revisão da Normalização (UNF até FNBC)
414
Quarta Forma Normal (4FN)
 Embora
a FNBC remova as anomalias
resultantes das dependências funcionais, outro
tipo de dependências chamada dependência
multi-valor (MVD) pode causar redundância
de dados.
 A existência
de MVDs numa relação é
resultante da 1FN e pode resultar em
redundância de dados.
415
Quarta Forma Normal (4FN) - MVD
 Dependência
entre atributos (por exemplo, A,
B, e C) numa relação, tal que para cada valor
de A existe um conjunto de valores de B e um
conjunto de valores de C. No entanto, o
conjunto de valores de B e de C são
independentes um do outro.
416
Quarta Forma Normal (4FN)
 MVD
entre atributos A, B, e C numa relação
representa-se com a seguinte notação:
A  B
A  C
417
Quarta Forma Normal (4FN)
 MVD
–
–
–
pode-se definir com sendo trivial ou nãotrivial.
MVD A  B numa relação R é
definida com sendo trivial se (a) B é um
subconjunto de A ou (b) A  B = R.
MVD é definida como sendo não-trivial se nem
(a) nem (b) são satisfeitas.
MVD trivial não especifica uma restrição sobre
a relação, enquanto que uma MVD não-trivial
especifica uma restrição.
418
Quarta Forma Normal (4FN)
 Definida
com uma relação que está na FNBC e
não contém MVDs não-triviais.
419
4FN - Example
420
Quinta Forma Normal (5FN)

Uma relação decomposta em duas relações tem de ter a
propriedade lossless-join, que garante que não serão
criados tuplos adicionais aquando da junção das
tabelas através de uma junção natural (natural join).

No entanto, existem requisitos para a decomposição de
uma relação em mais que duas relações.

Embora raros, estes casos são geridos pela dependência
de junção e pela Quinta Forma Normal (5FN).
421
Quinta Forma Normal (5FN)
 Uma
relação sem dependência de junção.
422
5FN - Exemplo
423
Capitulo 14
Metodologia Desenho Conceptual de Bases de Dados
Transparências
Capitulo 14 - Objectivos

Propósito da metodologia de desenho.

Desenho da Base de Dados tem 3 fases principais:
Desenho Conceptual, Lógico, e Físico.

Como decompor o âmbito do desenho nas vistas
especificas de cada utilizador de uma empresa.

Como usar a modelação ER para construção de um
modelo de dados conceptual baseado em informação
adquirida sobre uma vista da empresa.
425
Capitulo 14 - Objectivos
 Como
validar um modelo conceptual de forma
a garantir uma representação verdadeira e
precisa de uma vista da empresa.
 Como
documentar o processo do desenho
conceptual da Base de Dados.
 Os
utilizadores finais são parte integrante
durante o processo do desenho conceptual da
Base de Dados.
426
Metodologia de Desenho
 Abordagem
estruturada que usa
procedimentos, técnicas, ferramentas e
documentação para o suporte e ajuda do
processo de desenho.
 Metodologia
de Desenho de Base de Dados tem
3 fases principais:
– Desenho Conceptual da Base de Dados;
– Desenho Lógico da Base de Dados;
– Desenho Físico da Base de Dados.
427
Desenho Conceptual e Lógico da Base de
Dados
 Desenho
Conceptual da Base de Dados
– Processo de construção de um modelo de
informação usado numa empresa, independente de
todas as considerações físicas.
 Desenho
Lógico da Base de Dados
– Processo de construção de um modelo de
informação usado numa empresa baseado num
modelo de dados especifico (ex. relacional), mas
independente de um determinado SGBD e de outras
considerações físicas.
428
Desenho Físico da Base de Dados
 Processo
de produção de uma descrição da
implementação da base de dados em
armazenamento secundário; descreve as
relações base, organização de ficheiros, o
desenho dos índices utilizados para alcançar
um acesso eficiente aos dados, as restrições de
integridade e as medidas de segurança.
429
Factores críticos de sucesso no desenho da
Base de Dados
Trabalhar interactivamente o mais possível com os
utilizadores.
 Seguir uma metodologia estruturada durante o
processo de modelação de dados.
 Incorporar as considerações estruturais e de
integridade nos modelos de dados.
 Reunir a conceptualização, normalização e a
validação de transacções na metodologia de
modelação de dados.

430
Factores críticos de sucesso no desenho da
Base de Dados

Usar diagramas para representar o mais possível dos
modelos de dados.

Usar a Linguagem de Desenho de Bases de Dados
(LDBD) para representar semântica de dados
adicionais.

Construir um dicionário de dados para acrescentar aos
diagramas de modelos de dados.

Estar preparado para repetir passos.
431
Resumo da Metodologia – Desenho
Conceptual da Base de Dados
 Passo
1 Construir um modelo conceptual de dados
para cada vista de utilizador
– Passo 1.1 Identificar tipos de entidades
– Passo 1.2 Identificar tipos de relacionamentos
– Passo 1.3 Identificar e associar atributos aos tipos de entidades ou
relacionamentos
– Passo 1.4 Determinar os domínios dos atributos
– Passo 1.5 Determinar os atributos das chaves primárias e candidatas
– Passo 1.6 Considere o uso de conceitos de modelação avançada
(Passo opcional)
– Passo 1.7 Verificar a redundância do modelo
– Passo 1.8 Validar o modelo conceptual local com as transacções dos
utilizadores
– Passo 1.9 Rever o modelo conceptual de dados com o utilizador
432
Resumo da Metodologia – Desenho Lógico da
Base de Dados para o Modelo Relacional
 Passo
2 Construir e validar o modelo lógico de
dados de cada vista
– Passo 2.1 Remover componentes não compatíveis com o
modelo relacional (Passo opcional)
– Passo 2.2 Obter as relações para o modelo lógico de dados
– Passo 2.3 Validar as relações usando a normalização
– Passo 2.4 Validar as relações com as transacções de
utilizadores
– Passo 2.5 Definir restrições de integridade
– Passo 2.6 Rever o modelo lógico de dados com o utilizador
433
Resumo da Metodologia - Desenho Lógico da
Base de Dados para o Modelo Relacional
 Passo
3 Construir e Validar o modelo lógico global
de dados
– Passo 3.1 Fundir os modelos lógicos locais de dados no
modelo global
– Passo 3.2 Validar o modelo lógico global de dados
– Passo 3.3 Verificar crescimento futuro
– Passo 3.4 Rever o modelo lógico global de dados com os
utilizadores
434
Resumo da Metodologia - Desenho Físico da Base
de Dados para o Modelo Relacional
 Passo
4 Traduzir o modelo lógico global de dados
para o SGBD escolhido
– Passo 4.1 Desenhar as relações base
– Passo 4.2 Desenhar a representação dos dados derivados
– Passo 4.3 Desenhar as restrições empresariais
 Passo
–
–
–
–
5 Desenhar a representação física
Passo 5.1
Passo 5.2
Passo 5.3
Passo 5.4
Analisar as transacções
Escolher a organização dos ficheiros
Escolher Índices
Calcular a necessidade de espaço em disco
435
Resumo da Metodologia - Desenho Físico da Base
de Dados para o Modelo Relacional
 Passo
6 Desenhar as vistas dos utilizadores
 Passo 7 Desenhar os mecanismos de segurança
 Passo 8 Avaliar a introdução controlada de
redundância
 Passo 9 Monitorizar e Optimizar o Sistema
Operacional
436
Extracto do Dicionário de Dados da Vista Staff da
DreamHome com a descrição das Entidades
437
Primeiro diagrama ER para a Vista Staff
da DreamHome
438
Extracto do Dicionário de Dados da Vista Staff da
DreamHome com a descrição dos relacionamentos
439
Extracto do Dicionário de Dados da Vista Staff da
DreamHome com a descrição dos Atributos
440
Diagrama ER da Vista Staff da DreamHome com
as Chaves Primárias
441
Diagrama ER Revisto para a Vista Staff da
DreamHome com Specialization / Generalization
442
Usar Caminhos para verificar que o Modelo
Conceptual Suporta as Transacções dos Utilizadores
443
Modelo Conceptual Local de Dados da
Vista Staff com todos os Atributos
444
Passo 2 Build and Validate Local Logical
Data Model
Passo 2.1 Remove features not compatible with the
relational model (optional Passo)

To refine the local conceptual data model to remove
features that are not compatible with the relational
model. This involves:
–
–
–
–
remove *:* binary relationship types;
remove *:* recursive relationship types;
remove complex relationship types;
remove multi-valued attributes.
445
Remover Relacionamentos do Tipo *:*
446
Remover Relacionamentos Recursivos do
Tipo *:*
447
Remover
Complexo
Relacionamentos
do
Tipo
448
Remover Atributos Multivalor
449
Passo 2 Build and Validate Local Logical
Data Model
 Passo
2.2 Derive relations for local logical data
model
– To create relations for the local logical data model to
represent the entities, relationships, and attributes
that have been identified.
450
Passo 2.2 Derive Relations for Local
Logical Data Model
(1) Strong entity types
–
Create a relation that includes all simple attributes
of that entity. For composite attributes, include
only constituent simple attributes.
Staff (staffNo, fName, lName, position, sex, DOB)
Primary Key staffNo
451
Passo 2.2 Derive Relations for Local
Logical Data Model
(2) Weak entity types
–
–
Create a relation that includes all simple attributes
of that entity.
Primary key is partially or fully derived from each
owner entity.
Preference (prefType, maxRent)
Primary Key None (at present)
452
Passo 2.2 Derive Relations for Local
Logical Data Model
(3) 1:* binary relationship types
– Entity on ‘one side’ is designated the parent entity
and entity on ‘many side’ is the child entity.
– Post copy of the primary key attribute(s) of parent
entity into relation representing child entity, to act
as a foreign key.
453
Passo 2.2 Derive Relations for Local
Logical Data Model
(4) 1:1 binary relationship types
– More complex as cardinality cannot be used to
identify parent and child entities in a relationship.
– Instead, participation used to decide whether to
combine entities into one relation or to create two
relations and post copy of primary key from one
relation to the other. Consider following:
– (a) mandatory participation on both sides of 1:1 relationship;
– (b) mandatory participation on one side of 1:1 relationship;
– (c) optional participation on both sides of 1:1 relationship.
454
Passo 2.2 Derive Relations for Local
Logical Data Model
(a) Mandatory participation on both sides of 1:1
relationship
– Combine entities involved into one relation and
choose one of the primary keys of original entities to
be primary key of new relation, while other (if one
exists) is used as an alternate key.
Client (clientNo, fName, lName, telNo, prefType,
maxRent, staffNo)
Primary Key clientNo
Foreign Key staffNo references Staff(staffNo)
455
Passo 2.2 Derive Relations for Local
Logical Data Model
(b) Mandatory participation on one side of a 1:1
relationship
– Identify parent and child entities using participation
constraints.
– Entity with optional participation is designated parent
entity, and other entity designated child entity.
– Copy of primary key of parent placed in relation
representing child entity.
– If relationship has one or more attributes, these
attributes should follow the posting of the primary
key to the child relation.
456
Passo 2.2 Derive Relations for Local
Logical Data Model
(b) Mandatory participation on one side of a 1:1
relationship - Example
457
Passo 2.2 Derive Relations for Local
Logical Data Model
(c) Optional participation on both sides of a 1:1
relationship
– Designation of the parent and child entities is
arbitrary unless can find out more about the
relationship.


Consider 1:1 Staff Uses Car relationship with optional
participation on both sides. Assume majority of cars,
but not all, are used by staff and only minority of staff
use cars.
Car entity, although optional, is closer to being
mandatory than Staff entity. Therefore designate Staff
as parent entity and Car as child entity.
458
Passo 2.2 Derive Relations for Local
Logical Data Model
(5) 1:1 recursive relationships - follow rules for
participation for a 1:1 relationship.
– mandatory participation on both sides: single
relation with two copies of the primary key.
– mandatory participation on only one side: option to
create a single relation with two copies of the
primary key, or create a new relation to represent
the relationship. The new relation would only have
two attributes, both copies of the primary key.
– optional participation on both sides, again create a
new relation as described above.
459
Passo 2.2 Derive Relations for Local
Logical Data Model
(6) Superclass/subclass relationship types
– Identify superclass as parent entity and subclass entity
as child entity.
– There are various options on how to represent such a
relationship as one or more relations.
– Most appropriate option dependent on number of
factors such as:
» disjointness and participation constraints on the superclass/subclass
relationship,
» whether subclasses are involved in distinct relationships,
» number of participants in superclass/subclass relationship.
460
Guidelines for Representation of
Superclass / Subclass Relationship
461
Passo 2.2 Derive Relations for Local
Logical Data Model
(7) *:* binary relationship types
– Create relation to represent relationship and
include any attributes that are part of relationship.
– Post a copy of the primary key attribute(s) of the
entities that participate in relationship into new
relation, to act as foreign keys.
– These foreign keys will also form primary key of
new relation, possibly in combination with some of
the attributes of the relationship.
462
Passo 2.2 Derive Relations for Local
Logical Data Model
(7) *:* binary relationship types - Example
463
Passo 2.2 Derive Relations for Local
Logical Data Model
(8) Complex relationship types
– Create relation to represent relationship and include
any attributes that are part of the relationship.
– Post copy of primary key attribute(s) of entities that
participate in the complex relationship into new
relation, to act as foreign keys.
– Any foreign keys that represent a ‘many’
relationship (for example, 1..*, 0..*) generally will
also form the primary key of new relation, possibly
in combination with some of the attributes of the
relationship.
464
Passo 2.2 Derive Relations for Local
Logical Data Model
(8) Complex relationship types - Example
465
Passo 2.2 Derive Relations for Local
Logical Data Model
(9) Multi-valued attributes
– Create new relation to represent multi-valued
attribute and include primary key of entity in new
relation, to act as a foreign key.
– Unless the multi-valued attribute is itself an
alternate key of the entity, primary key of new
relation is combination of the multi-valued attribute
and the primary key of the entity.
466
Passo 2.2 Derive Relations for Local
Logical Data Model
(9) Multi-valued attributes - Example
467
Summary of How to Map Entities and
Relationships to Relations
468
Relations for the Staff View of DreamHome
469
Passo 2 Build and Validate Local Logical
Data Model
 Passo
2.3 Validate relations using normalization
– To validate the relations in the local logical data model
using the technique of normalization.
 Passo
2.4 Validate relations against user
transactions
– To ensure that the relations in the local logical data
model support the transactions required by the view.
 Passo
2.5 Define integrity constraints
– To define the integrity constraints given in the view
(i.e. required data, entity and referential integrity,
domains, and enterprise constraints).
470
Referential Integrity Constraints for
Relations in Staff View of DreamHome
471
Passo 2 Build and Validate Local Logical
Data Model
 Passo
2.6 Review local logical data model with
user
– To ensure that the local logical data model and
supporting documentation that describes the model
is a true representation of the view.
472
Passo 3 Build and Validate Global Logical
Data Model
To combine the individual local logical data
models into a single global logical data model
that represents the enterprise.
 Passo
3.1 Merge local logical data models into
global model
– To merge the individual local logical data models
into a single global logical data model of the
enterprise.
473
Passo 3 Build and Validate Global Logical
Data Model
 Typically
includes:
– (1) Review the names and contents of
–
–
–
–
entities/relations and their candidate keys.
(2) Review the names and contents of
relationships/foreign keys.
(3) Merge entities/relations from the local data
models.
(4) Include (without merging) entities/relations
unique to each local data model.
(5) Merge relationships/foreign keys from the local
data models.
474
Passo 3 Build and Validate Global Logical
Data Model
– (6) Include (without merging) relationships/foreign
keys unique to each local data model.
– (7) Check for missing entities/relations and
relationships/foreign keys.
– (8) Check foreign keys.
– (9) Check Integrity Constraints.
– (10) Draw the global ER/relation diagram.
– (11) Update the documentation.
475
Passo 3 Build and Validate Global Logical
Data Model
476
Passo 3 Build and Validate Global Logical
Data Model
477
Passo 3 Build and Validate Global Logical
Data Model
 Passo
3.2 Validate global logical data model
– To validate the relations created from the global
logical data model using the technique of
normalization and to ensure they support the
required transactions, if necessary.
 Passo
3.3 Check for future growth
– To determine whether there are any significant
changes likely in the foreseeable future and to assess
whether the global logical data model can
accommodate these changes.
478
Passo 3 Build and Validate Global Logical
Data Model
 Passo
3.4 Review global logical data model
with users
– To ensure that the global logical data model is a true
representation of the enterprise.
479
Relations for the Branch View of DreamHome
480
Relations that Represent the Global
Logical Data Model for DreamHome
481
Diagrama Global das Relações da
DreamHome
482
Capitulo 16
Metodologia – Desenho Físico de Bases
de Dados Relacionais
Transparências
Capitulo 16 - Objectivos
 Propósito
do desenho físico da base de dados.
 Como
mapear o desenho lógico da base de
dados para o desenho físico da base de dados.
 Como
desenhar as relações base para um
determinado SGBD.
 Como
desenhar as restrições de negócio para
um determinado SGBD.
484
Capitulo 16 - Objectivos
 Como
seleccionar correctamente a organização
de ficheiros baseada na análise das transacções.
 Quando
usar índices secundários para
melhorar a performance.
 Como
calcular o tamanho da base de dados.
 Como
desenhar as vistas dos utilizadores.
 Como
desenhar mecanismos de segurança para
satisfazer os requisitos dos utilizadores.
485
Comparação entre o Desenho Lógico e
Físico de uma Base de Dados
 A fonte
de informação para o processo do
desenho físico inclui o modelo lógico global e a
documentação que descreve esse modelo.
O
desenho lógico da base de dados está
preocupado com o Quê, enquanto que o
desenho físico da base de dados está
preocupado com o Como.
486
Desenho Físico da Base de Dados
Processo que produz a descrição da
implementação da base de dados em
armazenamento secundário; descreve as
relações base, organização de ficheiros, os
índices necessários ao acesso eficiente dos
dados, assim como quaisquer restrições de
integridade e mecanismos de segurança.
487
Resumo da Metodologia do Desenho Físico
da Base de Dados
 Passo
4 Tradução do modelo lógico global para o
SGBD escolhido
– Passo 4.1 Desenho das relações base
– Passo 4.2 Desenho da representação dos dados
derivados
– Passo 4.3 Desenho das restrições de negócio
488
Resumo da Metodologia do Desenho Físico
da Base de Dados
 Passo
–
–
–
–
5 Desenho da representação física
Passo 5.1 Analise das transacções
Passo 5.2 Escolha da organização de
ficheiros
Passo 5.3 Escolha dos índices
Passo 5.4 Cálculo das necessidades de
espaço em disco
489
Resumo da Metodologia do Desenho Físico
da Base de Dados
 Passo
6 Desenho das vistas dos utilizadores
 Passo 7 Desenho dos mecanismos de segurança
 Passo 8 Avaliar a introdução controlada de
redundância
 Passo 9 Monitorizar e optimizar o sistema
operacional
490
Passo 4 - Tradução do modelo lógico global
para o SGBD escolhido

É necessário conhecer o funcionamento do SGBD escolhido,
saber como criar as relações base e saber se o sistema
suporta a definição de:
– PKs, FKs, e AKs;
– Dados necessários– ex. Saber se o sistema suporta NOT
NULL;
– Domínios;
– Restrições de integridade relacional;
– Restrições de negócio.
491
LDBD para a relação PropertyForRent
492
Relação PropertyforRent e Staff com o atributo
derivado noOfProperties
493
Passo 4.3 Desenho de Restrições de
Negócio

Alguns SGBD permitem mais facilmente que outros a
definião de restrições de negócio. Exemplo:
CONSTRAINT StaffNotHandlingTooMuch
CHECK (NOT EXISTS (SELECT staffNo
FROM PropertyForRent
GROUP BY staffNo
HAVING COUNT(*) > 100))
494
Passo 5 Desenho da Representação Física
Determinar a organização de ficheiros ideal
para o armazenamento das relações base e
índices necessários à obtenção de uma
performance aceitável; isto é, qual a forma de
armazenamento das relações e tuplos em disco.
495
Passo 5 Desenho da Representação Física
 Existem
um número de factores que podem ser
usados para a medir a eficiência do sistema:
- Transaction throughput: número de transações
processadas num determinado intervalo.
- Response time: tempo decorrido para a conclusão de uma
transacção.
- Disk storage: quantidade de disco necessário para
armazenamento dos ficheiros da base de dados.
 No
entanto, não só um factor está correcto.
Normalmente, é necessário haver um
compromisso entre factores para se alcançar um
balanço razoável.
496
Exemplo de um Formulário de Análise de
Transacções
497
Passo 5.2 Escolher a Organização de
Ficheiros
 Organização
de Ficheiros inclui Pilha, Hash,
Indexed Sequential Access Method (ISAM),
Árvores B+ e Clusters.
498
Capitulo 17
Metodologia – Monitorização e
Optimização do Sistema Operacional
Transparências
Capitulo 17 - Objectivos
 Significado
da Desnormalização.
 Quando
desnormalizar para obter melhorias
de performance.
 A importância
da monitorização e da
optimização do sistema operacional.
500
Passo 8 - Avaliar a introdução controlada
de redundância
Determinar se a introdução de redundância de
uma forma controlada através da flexibilização
das regras da normalização produz uma
melhoria na performance do sistema.
501
Passo 8 - Avaliar a introdução controlada
de redundância
 De
notar que a desnormalização :
– Torna a implementação mais complexa;
– Pode sacrificar a flexibilização;
– Pode acelerar as consultas mas atrasa as
actualizações.
502
Diagrama Exemplo dos Relacionamentos
503
Exemplos das Relações
504
Passo 8.1 Combinar Relacionamentos 1:1
505
Passo 8.2 Duplicação de atributos não-chave nos
relacionamentos 1:* para reduzir junções
506
Passo 8.3 Duplicação das chaves estrangeiras nos
relacionamentos 1:* para reduzir junções
507
Passo 8.4 Duplicação de Atributos nos
relacionamentos *:* para reduzir junções
508
Passo 8.5 Introdução de Grupos Repetidos
509
Passo 8.6 Juntar as relações de lookup com
as relações base
510
Passo 9 - Monitorizar e optimizar o sistema
operacional
A monitorização e optimização do sistema
operacional serve para corrigir decisões inadequadas
ou implementar mudanças nos requisitos.
A DreamHome pretende armazenar fotografias das
propriedades, e comentários sobre a propriedades.
511
Capitulo 22
SGBDs Distribuídos – Conceitos e
Desenho
Transparências
512
Capitulo 22 - Objectivos
 Conceitos.
 Vantagens
e Desvantagens das bases de dados
distribuídas.
 Funções e arquitectura para um SGBDD.
 Desenho de bases de dados distribuídas.
 Critérios de comparação para SGBDDs.
513
Conceitos
Base de Dados Distribuída
Uma colecção de dados partilhados interrelacionados
logicamente (e a descrição destes dados), distribuídos
fisicamente sobre uma rede de computadores.
SGBD Distribuído
Sistema de Software que permite a gestão das bases de
dados distribuídas e torna a distribuição transparente
para o utilizador.
514
Conceitos








Colecção de dados partilhados logicamente relacionados.
Dados divididos em fragmentos.
Fragmentos podem ser replicados.
Fragmentos/replicas atribuídos a sites.
Sites interligados por uma rede de comunicações.
Os dados em cada site estão sobre controlo de um SGBD.
SGBDs gerem as aplicações locais autonomamente.
Cada SGBD participa em pelo menos uma aplicação
global.
515
SGBD Distribuído
516
Processamento Distribuído
Uma base de dados centralizada que pode ser
acedida através de uma rede de computadores.
517
SGBD Paralelos
Um SGBD que funciona sobre vários processadores e
discos com o objectivo, sempre que possível, de executar
operações em paralelo para melhorar a performance.


Baseado na premissa que um sistema com um só
processador não consegue responder a requisitos de
escalabilidade, segurança e performance.
SGBDs Paralelos interligam várias, pequenas máquinas
para atingir o mesmo rendimento que uma única grande
máquina, mas com mais escalabilidade e maior segurança.
518
SGBDs Paralelos
 As
principais arquitecturas para SGBDs Paralelos
são:
– Memória partilhada,
– Disco partilhado,
– Nada partilhado.
519
SGBDs Paralelos
(a) Memória
partilhada
(b) Disco
partilhado
(c) Nada
partilhado
520
Vantagens dos SGBDDs
 Reflecte
a estrutura organizacional
 Melhor partilha e maior autonomia local
 Maior disponibilidade
 Maior confiança
 Performance melhorada
 Economia
 Crescimento Modular
521
Desvantagens dos SGBDDs
 Complexidade
 Custo
Manutenção
 Segurança
 Controlo de Integridade mais difícil
 Falta de standards
 Falta de experiência
 Desenho da Base de dados mais complexo
522
Tipos de SGBDDs
 SGBDDs
Homogéneos
 SGBDDs Heterogéneos
523
SGBDDs Homogéneos
 Todos
os sites usam o mesmo SGBD.
 Muito mais simples de “desenhar” e gerir.
 Abordagem
proporciona um crescimento
incremental e permite uma maior performance.
524
SGBDDs Heterogéneos



Sites podem ter SGBDs diferentes, possivelmente com
diferentes modelos de dados.
Ocorre quando os sites implementaram as suas bases de
dados e a integração só foi considerada mais tarde.
Traduções necessárias para permitir:
– Hardware diferente.
– SGBDs diferentes.
– Hardware e SGBDs diferentes.

Solução típica é o uso de gateways.
525
Funções de um SGBDD
É
de esperar que um SGBDD tenha pelo menos a
funcionalidade de um SGBD.
E
que
tenha
também
as
seguintes
funcionalidades:
– Serviços de comunicação estendidos.
– Dicionário de Dados Estendido.
– Processamento de Querys distribuído.
– Controlo de Concorrência Estendido.
– Serviços de recuperação estendidos.
526
Arquitectura de Referência para SGBDD


Dada a diversidade, não existe uma arquitectura
equivalente à arquitectura de 3 níveis ANSI/SPARC.
A arquitectura de referência consiste em:
–
–
–
–

Conjunto de esquemas globais externos.
Esquema global conceptual (GCS).
Esquema de Fragmentação e de Alocação.
Conjunto de Esquemas para cada SGBD local em conformidade
com os 3-níveis ANSI/SPARC.
Alguns níveis podem não aparecer, dependendo dos níveis
de transparência suportados.
527
Arquitectura de Referência para SGBDD
528
Componentes de um SGBDD
529
Desenho Distribuído de Bases de Dados
 Três
tópicos essenciais:
– Fragmentação,
– Alocação,
– Replicação.
530
Desenho Distribuido de Bases de Dados
Fragmentação
Relação pode ser dividida num conjunto de subrelações, que depois são distribuídas.
Alocação
Cada fragmento é armazenado no site com
distribuição “óptima”.
Replicação
Uma cópia do fragmento pode ser mantida em
vários sites.
531
Fragmentação


Definição e a alocação dos fragmentos de forma a obter:
– Proximidade do local de uso.
– Maior Segurança e Disponibilidade.
– Performance melhorada.
– Balanceamento da capacidade e custo de
armazenamento.
– Custo mínimo com comunicações.
Envolve a análise das aplicações mais importantes,
baseada na informação quantitativa/qualitativa.
532
Fragmentação
 Informação
quantitativa pode incluir:
– frequência em que a aplicação é executada;
– site de onde a aplicação é executada;
– critérios de performance para as transacções
e aplicações.
 Informação
qualitativa pode incluir transacções
que são executadas por aplicação, tipo de acesso
(leitura ou escrita), e predicados das operações
de leitura.
533
Alocação de Dados
 Quatro
estratégias alternativas para a alocação
dos dados:
– Centralizada,
– Particionada (ou Fragmentada),
– Replicação Completa,
– Replicação Selectiva.
534
Alocação de Dados
Centralizada
Consiste numa só base de dados e um SGBD
armazenados num site com utilizadores
distribuídos por uma rede.
Particionada
Base de Dados particionada em fragmentos
independentes, cada um atribuído a um site.
535
Alocação de Dados
Replicação Completa
Consiste em manter uma cópia completa da
base de dados em cada site.
Replicação Selectiva
Combinação de particionamento, replicação e
centralização.
536
Comparação
das
Estratégias
Distribuição de Dados
para
a
537
Porquê Fragmentar?
 Uso
– Aplicações trabalham com vistas e não com
relações completas.
 Eficiência
– Dados são armazenados o mais perto possível
de onde são mais frequentemente utilizados.
– Dados que não são necessários às aplicações
locais não são armazenados.
538
Porquê Fragmentar?
 Paralelismo
– Com fragmentos como unidades de
distribuição, as transacções podem ser
divididas em várias subqueries que trabalham
com fragmentos.
 Segurança
– Dados não necessários às aplicações locais não
são armazenados, como tal também não são
acedidos por utilizadores não autorizados.
539
Porquê Fragmentar?
 Desvantagens
– Performance,
– Integridade.
540
Tipos de Fragmentação

Quatro tipos de fragmentação:
–
–
–
–

Horizontal,
Vertical,
Mista,
Derivada.
Outra possibilidade é não fragmentar:
– Se a relação é pequena e não é actualizada
frequentemente, pode ser melhor não fragmentar a
relação.
541
Fragmentação Horizontal e Vertical
542
Fragmentação Mista
543
Exemplo – Performance da Transparência
Property(propNo, city)
10000 registos em Londres
Client(clientNo,maxPrice) 100000 registos em Glasgow
Viewing(propNo, clientNo) 1000000 registos em Londres
SELECT p.propNo
FROM Property p INNER JOIN
(Client c INNER JOIN Viewing v ON c.clientNo = v.clientNo)
ON p.propNo = v.propNo
WHERE p.city=‘Aberdeen’ AND c.maxPrice > 200000;
544
Exemplo – Performance da Transparência
Assumir:
 Cada tuplo em cada relação tem 100 caracteres.
 10 clientes com preço máximo superior a £200,000.
 100000 visitas para as propriedades em Aberdeen.
 Tempo de computação negligivel comparativamente ao
tempo de comunicação.
 Taxa de transferência 10000 caracteres por segundo
 Atraso no envio de uma mensagem – 1 segundo
545
Exemplo – Performance da Transparência
546
Capitulo 24
Introdução a SGBDs de Objectos
Transparências
547
Capitulo 24 - Objectivos

Aplicações de Bases de Dados Avançadas.

Inadequação dos SGBD Relacionais para as aplicações
avançadas de Bases de Dados.

Conceitos de Orientação aos Objectos.

Problemas com o armazenamento de objectos numa base
de dados relacional.

A próxima geração de sistemas de bases de dados.
548
Aplicações de Bases de Dados Avançadas
Computer-Aided Design (CAD)
 Computer-Aided Manufacturing (CAM)
 Computer-Aided Software Engineering (CASE)
 Network Management Systems
 Office Information Systems (OIS) and Multimedia
Systems
 Digital Publishing
 Geographic Information Systems (GIS)
 Interactive and Dynamic Web sites
 Outras aplicações com objectos complexos e
interrelacionados e dados procedimentais.

549
Computer-Aided Design (CAD)
 Armazena
dados relacionados com desenhos
mecânicos e eléctricos, por exemplo, edifícios,
aviões, e circuitos integrados.
 Desenhos deste tipo têm algumas características
comuns:
– Dados de muitos tipos, cada um com um
pequeno numero de instancias.
– Desenhos podem ser muito grandes.
550
Computer-Aided Design (CAD)
– Desenho não é estático, evolve ao longo do
tempo.
– Updates são de grande envergadura.
– Envolve controlo de versões e gestão de
configurações.
– Engenharia Cooperativa.
551
Aplicações de Bases de Dados Avançadas
 Computer-Aided
Manufacturing (CAM)
– Armazena Dados similares ao de CAD, mais
dados sobre a produção.
 Computer-Aided Software Engineering (CASE)
– Armazena dados sobre os diferentes estágios
do ciclo de vida do desenvolvimento de
software.
552
Network Management Systems




Coordenação da disponibilização de serviços de
comunicação sobre uma rede de computadores.
Tarefas como gestão de caminhos de rede, gestão de
problemas, e planeamento da rede.
Sistemas que lidam com dados complexos e que
requerem
performance
em
tempo
real
e
operacionalidade continua.
Encaminhar conexões, diagnosticar problemas,
balanceamento de carga, sistemas têm de se mover
sobre este complexo grafo em tempo real.
553
Office Information
Multimedia Systems
Systems
(OIS)
and
 Armazena
dados relacionados com o controlo de
informação de uma empresa, incluindo correio
electrónico, documentos, facturas, etc.
 Sistemas modernos lidam com texto e livre
formato, fotografias, diagramas, porções de áudio
e vídeo.
 Os documentos podem ter uma estrutura
especifica, por exemplo usando linguagem de
marcação como SGML, HTML, ou XML.
554
Digital Publishing
 Possibilidade
de armazenar livros, jornais,
artigos electronicamente e disponibilizá-los
através de redes de banda larga aos
consumidores.
 Como com os OIS, digital publishing está a ser
expandido de forma a lidar com documentos
multimedia com texto, áudio, imagem, e vídeo e
animação.
 A quantidade de informação disponível a ser
colocada online é da ordem dos petabytes (1015
bytes), tornando-as nas maiores bases de dados
que os SGBD alguma vez tiveram de gerir.
555
Geographic Information Systems (GIS)
 As
bases de dados GIS armazenam informação
espacial e temporal, como a que é utilizada na
gestão de terras e exploração subaquática.
 Maior parte dos dados é proveniente de
fotografias topográficas e de satélites, e tendem
a ser muito grandes.
 Procuras podem envolver a identificação de
características baseadas em, por exemplo,
forma, cor, ou textura, usando técnicas
avançadas de reconhecimento de padrões.
556
Interactive and Dynamic Web Sites


Considere um site web com catálogo online de venda de
roupa. O site Web mantém um conjunto de preferências
das visitas passadas ao site e permite ao visitante:
– obter imagens 3D de qualquer item baseado em cor,
tamanho, tecido, etc.;
– modificar as imagens 3D para contemplar
movimento, iluminação, etc.;
– seleccionar acessórios apresentados numa barra
lateral para juntar ao conjunto;
Necessidade de manusear conteúdos multimedia e de
modificar interactivamente a visualização baseado nas
preferências e escolhas do utilizador. E tem ainda a
complexidade de fornecer rendering 3D.
557
Pontos Fracos dos SGBD Relacionais
 Pobre
Representação de Entidades do “Mundo-
Real”
– Normalização leva a relações que não
correspondem a entidades no “mundo-real”.
 Semantic
Overloading
– Modelo Relacional apenas tem uma
construção para representar dados e
relacionamentos entre dados: a relação.
– Relational model é semantically overloaded.
558
Pontos Fracos dos SGBD Relacionais
 Pobre
Suporte a Restrições de Intergridade e de
Negócio
 Estrutura
de Dados Homogénea
– Modelo Relacional assume homogeneidade
vertical e horizontal.
– Muitos SGBDRs permitem Binary Large
Objects (BLOBs).
559
Pontos Fracos dos SGBD Relacionais

Operações Limitadas
– SGBDRs apenas contém um conjunto fixo de
operações que não pode ser expandido.

Dificuldade no Manuseamento de Queries Recursivas
– Extremamente difícil produzir queries recursivas.
– Extensão proposta para álgebra relacional para
permitir este tipo de queries, unary transitive
(recursive) closure operation.
560
Example - Recursive Query
561
Pontos Fracos dos SGBD Relacionais

Impedance Mismatch
– Maioria das LMDs não possuem computational
completeness.
– Como solução, SQL pode ser embebido numa
linguagem de alto-nivel 3GL.
– Isto produz impedance mismatch – mistura de
diferentes paradigmas de programação.
– Estima-se que cerca de 30% do trabalho e do código
de programação seja despendido nas conversões
entre linguagens.
562
Pontos Fracos dos SGBD Relacionais
 Outros
Problemas com SGBDRs
– Transacções são normalmente de curta
duração e os protocolos de controlo de
concorrência não se ajustam a transacções
longas.
– Modificações aos Esquemas são difíceis.
– SGBDRs são pobres no acesso via navegação.
563
Conceitos Orientação Objectos
 Abstracção,
encapsulamento, information hiding.
 Objectos e atributos.
 Identidade do Objecto.
 Métodos e mensagens.
 Classes, subclasses, superclasses, e herança.
 Overloading.
 Polimorfismo e dynamic binding.
564
Identidade do Objecto
O Identificador do Objecto (OID) atribuído ao
objecto aquando da sua criação é:
–
–
–
–
Gerado pelo Sistema.
Único para esse objecto.
Invariante.
Independente dos valores dos seus atributos
(isto é, o seu estado).
– Invisivel ao utilizador (idealmente).
565
Identidade do Objecto - Implementação


Em SGBDR, a identidade do objecto é baseada nos
valores: a chave primaria é usada para a identificação
unívoca.
As chaves primárias não fornecem o tipo de identidade de
objecto requeridas pelos sistemas OO:
– chave única apenas dentro da relação, não no sistema
inteiro;
– chave geralmente escolhida de entre atributos da
relação, fazendo com que esteja dependente do estado
do objecto.
566
Vantagens dos OIDs
 São
eficientes.
 São rápidos.
 Não podem ser modificados pelo utilizador.
 Independentes do contexto.
567
Instancia da Classe partilha Atributos e
Métodos
568
Objectos Complexos
Um objecto que é composto por subobjectos mas
é visto como um único objecto.
 Objectos
participam num relacionamento APART-OF (APO).
 Objectos podem ser encapsulados dentro de
objectos complexos, acedidos pelos métodos do
objecto complexo.
 Ou ter uma existência independente, e apenas o
seu OID é armazenado no objecto complexo.
569
Sistemas de Bases de Dados da Próxima
Geração
Primeira Geração SGBD: Rede e Hierárquica
– Necessidade de programas complexos até para
queries simples.
– Independência de Dados mínima.
– Fundamento teórico não muito aceite.
Segunda Geração SGBD: SGBD Relacional
– Ajudou a resolver estes problemas.
Terceira Geração SGBD: OODBMS e ORDBMS.
570
História dos Modelos de Dados
571
Capitulo 30
Conceitos de Data Warehousing
Transparências
Capitulo 30 - Objectivos
 Evolução
do data warehousing.
 Principais
conceitos e benefícios associados a
data warehousing.
 Diferenças
entre sistemas de processamento de
transacções (OLTP) e data warehousing.
 Problemas
associados a data warehousing.
 Arquitectura
e principais componentes da data
warehouse.
573
Capitulo 30 - Objectivos
 Conceito
de data mart e principais razões para
a implementação de um data mart.
 Vantagens
e Desvantagens de um data mart.
 Principais
pontos sobre o desenvolvimento e
gestão de data marts.
574
A Evolução do Data Warehousing
 Desde
1970s, as organizações obtiveram
vantagem competitiva através do uso de
sistemas que automatizavam processos de
negócio com o objectivo de oferecer serviços
mais eficientes e mais baratos ao consumidor.
 Isto
resultou na acumulação crescente de dados
em bases de dados operacionais.
575
A Evolução do Data Warehousing

As organizações focam-se agora em como utilizar esses
dados operacionais para suportar decisões, de forma a
ganharem vantagem competitiva.

No entanto, os sistemas operacionais nunca foram
concebidos para suportar tais actividades.

Os negócios normalmente têm vários sistemas
operacionais com definições possivelmente
contraditórias e sobrepostas.
576
A Evolução do Data Warehousing
 As
Organizações necessitam de transformar os
seus arquivos de dados em conhecimento, de
forma a que uma vista integrada e consolidada
da empresa seja disponibilizada ao utilizador.
 Um
data warehouse foi a solução encontrada
para responder aos requisitos de um sistema
capaz de suportar decisões e receber dados de
vários sistemas operacionais.
577
Conceito de Data Warehousing
 A subject-oriented,
integrated, time-variant,
and non-volatile collection of data in support of
management’s decision-making process
(Inmon, 1993).
578
Dados Orientados ao Tema
 Um
Warehouse está organizado à volta de temas
essenciais à empresa (ex. clientes, produtos,
vendas) em vez de áreas aplicacionais (e.g.
facturação, gestão de stocks, vendas de produtos).
 Isto
reflecte a necessidade de armazenar dados de
suporte à decisão em vez de dados orientados à
aplicação.
579
Dados Integrados
O
data warehouse integra dados orientados às
aplicações da empresa de diferentes sistemas,
que muitas vezes incluem dados que estão
inconsistentes.
 Os
dados integrados têm que estar consistentes
de forma a disponibilizar uma vista unificada
de dados aos utilizadores.
580
Time-Variant Data
 Os
dados num warehouse são precisos e válidos
apenas num determinado espaço temporal ou
ao longo de um intervalo de tempo.
 A dependência
temporal evidencia-se também
na quantidade de tempo que os dados ficam
armazenados, na associação implícita ou
explicita do tempo aos dados, e o facto de os
dados representarem uma serie de snapshots.
581
Dados Não-Voláteis
 Os
Dados da warehouse não são actualizáveis
em tempo real mas são refrescados dos
sistemas operacionais regularmente.
 Os
novos dados são adicionados como
suplemento à base de dados, em vez de
substituídos.
582
Data Webhouse
 Web
é uma fonte enorme de dados
comportamentais à medida que os indivíduos
interagem através dos seus Web browsers com
Web sites remotos. Dados gerados por este
comportamento são chamados de clickstream.
 Um
data webhouse é um data warehouse
distribuído sem repositório central de dados que
é implementado sobre a Web para explorar
dados clickstream.
583
Beneficios de Data Warehousing
 Grande
potencial do retorno sobre o
investimento
 Vantagem
competitiva
 Incremento
de produtividade dos decision-
makers
584
Comparação de Sistemas Transaccionais e
Data Warehousing
585
Queries sobre Data Warehouse
 Os
tipos de queries que se espera que um data
warehouse responda variam entre muito
simples e altamente complexos e dependem do
tipo de ferramenta que o utilizador final está a
usar.
 As
Ferramentas utilizadas incluem:
– Relatórios, Querys e Ferramentas de
desenvolvimento de aplicações
– Sistemas de Informação para Executivos (EIS)
– Ferramentas OLAP
– Ferramentas de Data mining
586
Exemplos de Queries Típicas sobre Data
Warehouse





Qual o total facturado na Escócia no terceiro trimestre
de 2001?
Qual o total facturado de vendas de propriedades por
tipo no Grã-Bretanha em 2000?
Quais são as três áreas de aluguer mais procuradas em
cada cidade no ano de 2001 e como se comparam a
valores dos dois anos anteriores?
Qual o rendimento mensal de vendas obtido em cada
escritório, comparativamente aos 12 meses anteriores?
Qual seria o efeito nas vendas de propriedades nas
diferentes regiões da Grã-Bretanha se os custos legais
subissem 3.5% e as taxas governamentais descessem
1.5% para propriedades acima de £100,000?
587
Problemas com Data Warehousing
 Subestimar
os recursos necessários ao
carregamento dos dados
 Problemas
 Dados
escondidos nos sistemas fonte
necessários não capturados
 Crescimento
dos pedidos dos utilizadores finais
 Homogeneização
dos Dados
588
Problemas com Data Warehousing
 Precisa
 Dados
de grandes recursos
proprietários
 Manutenção
 Projectos
Elevada
de Longa Duração
 Complexidade
da Integração
589
Arquitectura
Warehouse
Típica
de
um
Data
590
Fluxos de Informação no Data Warehouse
591
Fluxos de Informação no Data Warehouse
 Inflow
– Processos associados à extracção,
limpeza e carregamento dos dados dos sistemas
fonte para o data warehouse.
 Upflow
– Processos associados à adição de
valor aos dados do warehouse através da
sumariação, agregação e distribuição dos
dados.
592
Fluxos de Informação no Data Warehouse

Downflow - Processos associados ao arquivamento e
armazenamento/recuperação dos dados do warehouse.

Outflow - Processos associados a disponibilização dos
dados aos utilizadores finais.

Metaflow - Processos associados à gestão dos
metadados.
593
Ferramentas e Tecnologias de Data
Warehousing

A construção de um data warehouse é uma tarefa complexa
uma vez que não existe nenhum fornecedor que comercialize
um conjunto de ferramentas ‘end-to-end’.

É necessário que se use um conjunto de produtos de
diferentes fornecedores para a construção do data
warehouse.

Garantir que estes produtos funcionem em conjunto e
integramente é um desafio enorme.
594
Ferramentas de Extracção, Limpeza e
Transformação
 As
tarefas de capturar os dados dos sistemas
fontes, limpá-los e transformá-los, e carregar
os resultados no sistema destino podem ser
executadas por diferentes produtos, ou por
uma só solução integrada.
 Soluções
Integradas incluem:
– Geradores de Código
– Ferramentas de Replicação de Dados
– Motores de Transformação Dinâmica
595
Requisitos do SGBD do Data Warehouse
Load performance
 Load processing
 Data quality management
 Query performance
 Terabyte scalability
 Mass user scalability
 Networked data warehouse
 Warehouse administration
 Integrated dimensional analysis
 Advanced query functionality

596
Metadados do Data Warehouse
 Os
metadados são utilizados para uma
variedade de propósitos e a sua gestão é um
assunto critico para a obtenção de um data
warehouse completamente integrado.
O
problema é que os metadados têm diversas
funções no data warehouse:
– Transformação e Carregamento de Dados.
– Gestão do Data warehouse.
– Geração de Queries.
597
Metadados do Data Warehouse
 Ferramentas
metadados.
geram e usam os seus próprios
O
desafio é sincronizar os metadados de diferentes
produtos de diferentes fornecedores usando
diferentes formas de armazenamento.
 Duas
organizações industriais: Meta Data
Coalition (MDC) e Object Management Group
(OMG) fundiram-se para propor um só standard
para os metadados e modelação de dados em data
warehousing chamado de Common Warehouse
598
Metamodel (CWM).
Arquitectura Tipical do Data Warehouse e
dos Data Mart
599
Data Mart
 Um
subconjunto de um data warehouse que
suporta os requisitos de um determinado
departamento ou função de negócio.
 Características
incluem:
– Foca-se apenas nos requisitos de um departamento ou
função de negócio.
– Não é normal conter dados operacionais detalhados ao
invés dos data warehouses.
– Mias compreensível e de fácil navegação.
600
Razões para a criação de um Data Mart

Dar aos utilizadores acesso aos dados que precisam de
analisar mais frequentemente.

Providenciar os dados que coincidam com a vista
colectiva de um grupo de utilizadores num
departamento ou área funcional.

Melhorar o tempo de resposta aos utilizadores finais
através da redução do volume de dados que precisam
de aceder.
601
Razões para a criação de um Data Mart

Disponibilizar os dados devidamente estruturados
como foram especificados nos requisitos das
ferramentas dos utilizadores finais.

Construir um data mart é mais simples que construir
um data warehouse empresarial.

O custo de implementação de um data mart é
normalmente inferior ao custo necessário para a
criação de um data warehouse.
602
Razões para a criação de um Data Mart
 Potenciais
utilizadores de um data mart são
mais facilmente definidos e podem ser mais
facilmente descobertos de forma a obter maior
suporte à criação de um projecto de um data
mart ao invés de um projecto de um data
warehouse empresarial.
603
Questões sobre Data Marts
 Data
mart functionality
 Data mart size
 Data mart load performance
 Users access to data in multiple data marts
 Data mart Internet / Intranet access
 Data mart administration
 Data mart installation
604

Documentos relacionados