Você está na página 1de 105

MODELO DE DADOS

RELACIONAL E SQL

Dr. Fabiano Cavalcanti Fernandes


fabiano.fernandes@ifb.edu.br

Brasília - DF
1
Agenda

 Modelo Relacional

 Álgebra Relacional

 Cálculo Relacional

 SQL

2
Modelo de Dados

• Conjunto de conceitos utilizados para descrever a


estrutura de um banco de dados

• Principal ferramenta no fornecimento de


informações sobre a abstração efetuada

Modelo de Implementação
• Modelo Conceitual  Modelo Físico
Esquema e Instância
Esquema
• A descrição da organização dos dados de um BD.

• Um esquema de BD é especificado durante o


projeto do BD e não é freqüentemente modificado

Instância
• Os dados armazenados em um BD, em um
momento específico, são denominados instâncias
do BD - (fotografia do BD em um instante)
Modelo de Dados Relacional
O Modelo Relacional representa os dados em
um BD, por meio de um conjunto de relações.

Estas relações contém informações sobre


entidades ou relacionamentos existentes no domínio da
aplicação utilizada como alvo da modelagem.

Informalmente uma relação pode ser


considerada como uma tabela de valores, onde cada
linha desta tabela representa uma coleção de valores
de dados inter-relacionados.
Modelo de Dados Relacional
Os nomes fornecidos às tabelas e às suas
colunas podem auxiliar na compreensão do
significado dos valores armazenados em cada uma de
suas linhas (registros).
Na terminologia do Modelo Relacional, cada
linha da tabela é chamada de tupla, a tabela é
denominada relação, o nome da coluna é
denominado atributo da relação, e o conjunto de
valores que cada atributo pode assumir em uma
determinada relação, forma o seu domínio.
Modelo de Dados Relacional
O domínio consiste de um grupo de valores atômicos a partir dos
quais um ou mais atributos retiram seus valores reais.
O esquema de uma relação consiste de um conjunto de atributos que
descrevem as características dos elementos a serem modelados. O
número (quantidade) de atributos em uma relação consiste no grau da
relação.(fornecedor tem 4) .
Fornecedor

domínio

Código Nome Categoria Cidade Esquema

F1 Paulo 20 Lins
Relação
F2 César 10 Palmas
Instâncias
F3 Carlos 30 Lins
F4 Matilde 20 Brasília tupla
Modelo de Dados Relacional
A instância de uma relação consiste no conjunto de
valores que cada atributo, definido no esquema, assume em
um determinado instante, formando o conjunto de tuplas. As
instâncias das relações formam os dados que são
armazenados no BD.

Exemplo:
O domínio do atributo Cidade consiste no conjunto de todos
os nomes válidos de cidades (Lins, Palmas e Brasília).
O esquema do Fornecedor (código,nome,categoria,cidade)
possui grau 4 (4 atributos).
As instâncias são os dados que são armazenados no BD.
Modelo de Dados Relacional
Características das Relações
• Não há tuplas duplicadas em uma relação.
• A ordem das tuplas não é relevante para diferenciar uma
relação de outra.
• Existe ordem dos valores nas tuplas, uma vez que o
cabeçalho da relação (ou esquema) é definido como um
conjunto de atributos.
• Os valores dos atributos devem ser atômicos, não sendo
divisíveis em componentes. Atributos multivalorados
são representados por meio de uma outra relação e
atributos compostos pelos seus componentes.
Modelo de Dados Relacional
Chaves e Restrições de Integridade Relacional
Como não pode haver uma tupla repetida
(duplicada) em uma instância da relação, isto significa
que é possível identificar cada tupla separadamente uma
da outra, por meio da escolha de algum atributo (ou
conjunto de atributos).
Este atributo (ou atributos) identificam uma única
tupla da relação e são conhecidos como chave da
relação.
Com a definição de uma chave para identificação na
relação, esta chave será conhecida como chave primária.
Quando a chave primária for composta por mais que um
atributo ela será denominada chave primária composta.
Modelo de Dados Relacional
Restrições de Integridade
Restrições de Chaves: cada atributo das chaves candidatas deve
possuir valor único em todas as tuplas da relação.
Restrição de Integridade de Entidade: uma chave primária não pode
assumir valor nulo em qualquer tupla da relação.
Restrição de Integridade Referencial: uma tupla em uma relação que
se refere a outra relação, deve se referenciar a uma tupla existente
nesta relação. Com esta definição tem-se um novo tipo de chave
denominada estrangeira.
Restrições de Integridade Semântica: se referem mais especificamente
sobre valores ou características que determinados atributos podem
assumir no contexto de uma determinada aplicação (por exemplo
sexo).
Modelo de Dados Relacional
Restrição de Participação
A restrição de participação determina que a existência de uma
entidade depende de sua participação em um tipo de relacionamento.
Existem dois tipos de restrições de participação: total e parcial. A
participação total está estreitamente relacionada a dependência de
existência.
a) Participação Total: Suponha que um empregado deve trabalhar em um
departamento, ou seja, não existem empregados que não estejam vinculados
a algum departamento. Assim, uma entidade do tipo EMPREGADO existe
somente se ela participa em uma instância de relacionamento TRABALHA.

Empregado Trabalha Departamento


simboliza a participação total
Modelo de Dados Relacional

b) Participação Parcial: o tipo de relacionamento


GERENCIA, o qual envolve os tipos de entidade
EMPREGADO e DEPARTAMENTO, a participação do
tipo de entidade EMPREGADO é parcial, pois somente
alguns empregados gerenciam departamentos, o que não
limita a existência dos demais empregados.

Empregado Gerencia Departamento


Modelo de Dados Relacional
Mapeamento do ME-R para Relacional

O Modelo Entidade-Relacionamento é responsável


por realizar uma representação, mais conceitual, dos
dados de uma aplicação. Esta representação é um pouco
distante da forma como realmente os elementos
(entidades e relacionamentos) serão implementados.
O modelo relacional fornece uma representação dos
dados de forma mais próxima de como estes dados se
encontrarão quando forem definidos os arquivos para o
BD.
Modelo de Dados Relacional

Regras para o Mapeamento


Os passos necessários, a partir de um projeto conceitual (ME-R),
para realizar a modelagem do projeto lógico de implementação do BD
por meio do Modelo Relacional é realizado seguindo as seguintes
regras:
1-Todas as entidades são mapeadas para uma relação contendo os
mesmos atributos do ME-R.
2-Para entidade fraca é criada a relação contendo todos os seus
atributos, tendo acrescido, como chave estrangeira, a chave primária
da entidade forte (pai).
3-Para relacionamentos 1:1 - dentre as relações que mapeiam as
entidades participantes escolha uma delas (a que possuir participação
total) e inclua como chave estrangeira a chave primária da outra.
Modelo de Dados Relacional
4- Para relacionamentos 1:N – escolha a relação que
representa a entidade presente no lado N, e acrescente como
chave estrangeira a chave primária da entidade do lado 1 (esta
regra não se aplica para os relacionamentos de identificação -
fracos)
5- Para relacionamentos N:M – é criado uma nova relação
contendo como chaves estrangeiras as chaves primárias das
entidades participantes, mais os atributos do relacionamento.
6- Os atributos multivalorados (A) - é criada uma relação R
que terá como atributos os mesmos de A, mais a chave
primária da entidade (ou relacionamento) no qual A é
atributo. Se o atributo multivalorado é composto, será
incluído seus componentes.
7- Para relacionamentos triplos o mapeamento ocorre de
forma semelhante ao descrito pela regra 5, apenas
considerando que se uma das entidades apresentar um
limite máximo de participação igual a 1, a chave desta
entidade pode determinar a relação montada.

Diagrama de Esquemas
Uma representação simplificada que identifica um esquema e
suas inter-relações é o diagrama de esquema demonstrado a
seguir, com uma representação simplificada do gráfico de
Gantt:
Aluno 1 Matrícula RG Nome Telefone Id_Curso

Curso 2 Id_Curso Nome Período


Modelo de Dados Relacional
Operações sobre as Relações

Podem ser definidas as operações de inserção,


remoção e atualização das tuplas de uma determinada
relação. Todas estas operações devem respeitar as
restrições de integridade apresentadas anteriormente.

Quando algumas destas restrições for violar uma das


operações citadas anteriormente, o SGBD poderá
executar algumas ações para manter as restrições ou para
notificar a violação ocorrida.
Modelo de Dados Relacional
Álgebra Relacional

Consiste em operadores que realização ações sobre


as relações. Os operadores da álgebra relacional podem
ser divididos em duas categorias:

• Operadores de Conjuntos

• Operadores Relacionais
Álgebra Relacional
Operadores de Conjuntos
Estes operadores se aplicam as duas relações que obedeçam à
“compatibilidade de união” , ou seja, ambas as relações devem
apresentar como esquema atributos que pertençam respectivamente aos
mesmos domínios.
a) União (): o resultado da união de duas relações
consiste no conjunto de todas as tuplas que pertençam a
ambas as relações.
Exemplo:
Seja A = conjunto de tuplas dos fornecedores do estado de SP
B = conjunto dos fornecedores da peça P_1
A união B (AB) = conjunto de tuplas dos fornecedores de SP
ou que fornecem a peça P_1 (ou ambos)
Álgebra Relacional
b) Interseção (): o resultado da interseção de duas
relações consiste no conjunto de todas as tuplas que
aparecem ao mesmo tempo nas duas relações.

Exemplo:
Seja A = conjunto de tuplas dos fornecedores do estado de SP
B = conjunto dos fornecedores da peça P_1

A interseção B (AB) = conjunto de tuplas dos fornecedores de SP


e que forneçam a peça P_1 (estão em
ambos)
Álgebra Relacional
c) Diferença (-): a diferença em duas relações (R e S por
exemplo) consiste no conjunto de tuplas que aparecem
na relação R, mas não aparecem na relação S.
Exemplo:
Seja A = conjunto de tuplas dos fornecedores do estado de SP
B = conjunto dos fornecedores da peça P_1

A minus B (A-B) = conjunto de tuplas dos fornecedores de


SP e não fornecem a peça P_1 (está em
A mas não está em B) Resultados
diferentes
B minus A (B-A) = conjunto de tuplas dos fornecedores
que fornecer a peça P_1 e que não são
de SP (está em B mas não está em A)
Álgebra Relacional
d) Produto Cartesiano (x): aplica-se as duas relações que
não precisam ser “compatíveis de união”, resultando em
uma relação que apresenta tuplas formadas pela
combinação dos atributos pertencentes a ambas as
relações.
Exemplo:
Seja A = conjunto de todos os códigos dos fornecedores de SP
B = conjunto de todos os códigos de peças

A cartesiano B (AxB) = conjunto de todos os possíveis pares de


códigos de fornecedores com os códigos
de todas as peças
Exercício de Fixação
1) Sejam as seguintes relações existentes em um banco
de dados: Fornecedor (F)
Código Nome Id_Peça Valor
1 23 Altar 10 35,00
2 35 Mecânica Jair 22 50,00
3 44 Eletrons 07 99,00
4 57 Thorque 22 47,00
Peças (P) 5 89 Rápido 10 35,00
Código Nome Cor Peso
1 07 Mola estreita Prata 10 gr.
2 10 Correia lisa Preto 0,5 gr.
3 22 Amortecedor Preto 2000 gr.
4 35 Tambor Azul 500 gr.
Novos_Fornecimentos (G)
Seja uma nova relação Código Nome Id_Peça Valor
representando os novos 1 57 Thorque 35 45,00
fornecedores:  2 90 Solução Final 10 50,00
Exercício de Fixação
Construa as relações resultantes das operações algébricas
abaixo:

a) União (de F com G)


b) Interseção (de F com G) (para o mesmo fornecedor)
c) Diferença em relação ao fornecedor (de F com G e também
de G com F)
d) Produto cartesiano (de P com G)

Observação: entende-se F = fornecedor, P = peças e G =


novos_fornecimentos
Exercício de Fixação - solução
a) União de F com G Código Nome Id_Peça Valor
(FG) = 1 23 Altar 10 35,00
2 35 Mecânica Jair 22 50,00
3 44 Eletrons 07 99,00
4 57 Thorque 22 47,00
5 89 Rápido 10 35,00
6 57 Thorque 35 45,00
7 90 Solução Final 10 50,00

b) Interseção de F com G (mesmo fornecedor)


(FG) = Código Nome Id_Peça Valor
1 57 Thorque 22 47,00
2 57 Thorque 35 45,00
Exercício de Fixação – continuação da solução
c) Diferença de F com G (em relação ao fornecedor)
(F - G) = Código Nome Id_Peça Valor
1 23 Altar 10 35,00
2 35 Mecânica Jair 22 50,00
3 44 Eletrons 07 99,00
4 89 Rápido 10 35,00

Diferença de G com F (em relação ao fornecedor)


(G - F) = Código Nome Id_Peça Valor
1 90 Solução Final 10 50,00
Exercício de Fixação – continuação da solução
d) Produto cartesiano de P com G
(P x G) =
Código Nome Cor Peso Código Nome Id_Peça Valor

1 07 Mola estreita Prata 10 gr. 57 Thorque 35 45,00


2 07 Mola estreita Prata 10 gr. 90 Solução Final 10 50,00
3 10 Correia lisa Preto 0,5 gr. 57 Thorque 35 45,00
4 10 Correia lisa Preto 0,5 gr. 90 Solução Final 10 50,00
5 22 Amortecedor Preto 2000 gr. 57 Thorque 35 45,00
6 22 Amortecedor Preto 2000 gr. 90 Solução Final 10 50,00
7 35 Tambor Azul 500 gr. 57 Thorque 35 45,00
8 35 Tambor Azul 500 gr. 90 Solução Final 10 50,00
Álgebra Relacional
Operadores Relacionais
1) Operação de Seleção (select): quando aplicado resulta
em uma relação contendo tuplas com os mesmos atributos
da relação que satisfazem a uma determinada condição de
seleção. É um operador unário, sendo executado sobre
apenas uma relação, uma tupla de cada vez.

 [<condição de seleção>] (<nome da relação>)

Em geral, pode-se usar os operadores relacionais (, =, <,


, >, ) na operação de seleção, além da condição ser
composta por mais que um predicado condicional,
interligados pelos conectivos E (^) e OU () lógicos.
Álgebra Relacional
Exemplo: para a relação fornecedor a seguir tem-se:
Fornecedor
Código Nome Id_Peça Valor
1 23 Altar 10 35,00
2 35 Mecânica Jair 22 50,00
3 44 Eletrons 07 99,00
4 57 Thorque 22 47,00
5 44 Eletrons 35 52,00

a)  [Código = 44] (Fornecedor)


Código Nome Id_Peça Valor
1 44 Eletrons 07 99,00
2 44 Eletrons 35 52,00
Álgebra Relacional
b)  [Código = 35] (Fornecedor)

Código Nome Id_Peça Valor


1 35 Mecânica Jair 22 50,00

c)  [Código = 89] (Fornecedor)

Código Nome Id_Peça Valor


0
2) Operação de Projeção (project): seleciona atributos de
uma relação de acordo com uma lista de atributos. Os
atributos são exibidos na mesma ordem que aparecem na
lista. Como resultado é uma relação que não pode existir
repetições nas tuplas produzidas
<lista de atributos> (<nome da relação>)
Exemplo: para a mesma relação do exemplo anterior
(Fornecedor) o resultado da projeção seguinte seria:
Nome Id_Peça
 Nome, Id_Peça (Fornecedor) 1 Altar 10
2 Mecânica Jair 22
3 Eletrons 07
4 Thorque 22
5 Eletrons 35
Uma operação relacional sempre resulta em uma outra
relação que pode ser usada na elaboração de consultas mais
complexas. Fornecedor
Código Nome Id_Peça Valor
1 23 Altar 10 35,00
2 57 Thorque 35 45,00
3 44 Eletrons 07 99,00
4 57 Thorque 22 47,00

 Código,Valor ( [Nome = “Thorque”] (Fornecedor) )


Código Valor
1 57 45,00
2 57 47,00

 Observe que ao invés de declarar uma relação como


argumento na operação de projeção, inseriu-se uma expressão
que evoluirá para uma relação.
Álgebra Relacional
3) Operação de Junção (join): é utilizada para combinar
tuplas relacionadas de duas relações (operação binária) em
uma tupla simples. Esta combinação é realizada de acordo
com uma condição indicada.
 [<condição>] (<nome das relações>)

Exemplo: para as relações à seguir observe a junção


efetuada entre Peças e Novos_Fornecimentos
Álgebra Relacional
Peças Novos_Fornecimentos
Código Nome Cor Peso Código Nome Id_Peça Valor
1 07 Mola estreita Prata 10 gr. 1 57 Thorque 35 45,00
2 10 Correia lisa Preto 0,5 gr. 2 90 Solution 10 50,00
3 22 Amortecedor Preto 2000 gr.
4 35 Tambor Azul 500 gr.

 [Id_Peça = Código] (Novos_Fornecimentos, Peças)


Código Nome Cor Peso Código Nome Id_Peça Valor
1 10 Correia lisa Preto 0,5 gr. 90 Solução Final 10 50,00
2 35 Tambor Azul 500 gr. 57 Thorque 35 45,00
Modelo de Dados Relacional
Funções Agregadas

a) Funções Agregadas: consistem em funções que podem


ser aplicadas a valores numéricos. Elas são: Average
(media), Count (contador), Sum (soma), Maximum
(maior) e Minimum (menor).
Exercício de Fixação
01) Usando as relações a seguir, escreva a expressão em álgebra
relacional que representa o item da solicitação e elabore as
relações resultantes das seguintes operações:
Banco (Y)
a) União de B com Y Código Nome
b) Interseção de B com Y 1 001 Brasil
c) Diferença de B com Y e de Y com B 2 350 Real

d) Produto cartesiano de B com Y Bancos (B)


Código Nome
e) Projeção de Id_agência, Cidade e
Estado sobre a agência 1 001 Brasil

f) Seleção dos clientes de Brasília 2 104 C.E.F.


3 341 Itaú
g) Junção da conta com a agência
h) Projeção da agência, tipo conta e cidade da seleção de contas
com saldo não negativo
i) Projeção do nome, saldo, estado da seleção do estado
diferente de “DF”da junção do cliente com a conta
Exercício de Fixação – relações do exercício 01
Agência (A)
Id_Agência Rua Número Compl. Bairro Cidade Estado Banco
1 5101 W3 505 Cnj. 3 A.Norte Brasília DF 001
2 930 L2 407 Bloco A A.Sul Brasília DF 001
3 4146 Q.S. 07 Lote 1 Águas Claras Taguatinga DF 341
Conta (C)
Conta Tipo_Conta Saldo Agência
1 59431 Poupança 1000,00 4146 Conta_Cliente (CC)
N_Conta N_CPF
2 47856 Corrente - 50,00 930
1 59431 100
3 30124 Corrente 200,00 4146
2 47856 200
Cliente (L) 3 30124 300
CPF Nome Fone_resid. Cidade Estado
4 47856 400
1 100 João Castro 4563760 Brasília DF
2 200 José Sechi 3576721 Brasília DF
3 300 Ana Morais 3787289 Taguatinga DF
4 400 Maria Alves 4684592 Luziânia GO
Exercício de Fixação – exercício 01
a) B  Y =
b) B  Y =
c) B – Y =
Y–B=
d) B x Y =
e)  Id_agência,Cidade,Estado (A) =
f)  [Cidade = “Brasília”] (L) =
g)  [Agência = Id_Agência] (C, A) =
h)  Agência,Tipo_Conta,Cidade ( [Saldo0]
(Conta))
i)  Nome,Estado,Saldo ( [Estado  “DF”] (
 [CPF=N_CPF] (L,CC) ^
 [N_Conta=Conta] (CC,C) ) ) =
Cálculo Relacional
• Permite a descrição da consulta desejada sem especificar os
procedimentos para obtenção das informações

• Na lógica de primeira ordem pode-se pensar como uma linguagem


de consulta de duas formas:
– Calculo relacional de tuplas
– Cálculo relacional de domínio

• A diferença está no nível em que são utilizadas as variáveis:


– Nível de Atributo para os Dominios
– Nivel de Tuplas
Introdução
• O cálculo é uma linguagem de consulta formal onde
escrevemos uma expressão declarativa para
especificar uma solicitação de recuperação
• A expressão especifica O QUE será recuperado,
em vez de COMO será recuperado
– Linguagem de consulta não-procedural, o que o difere
da álgebra, onde descrevemos uma sequência de
operações
– Qualquer consulta que possa ser expressa na álgebra
pode ser expressa no cálculo
– Ambas tem o mesmo poder de expressão
Introdução
• Existem consultas em linguagens que não
podem ser expressas na álgebra ou no
calculo relacional
– Algumas linguagens de consulta são mais
completas que a álgebra e o cálculo, devido
as operações de agregação e ordenamento
Cálculo Relacional de Tuplas
• Expressão geral:
{ t | COND(t) }

t= variável de tupla
COND(t) = é uma expressão condicional envolvendo t

Resultado da consulta = conjunto de todas as tuplas t que satisfazem COND(t)

• Exemplo: encontrar todas as tuplas de empregado com salário acima de


1200,00

Notação Silberchatz: { t | t  empregado  t[salario] > 1200}


Notação Navathe: { t | empregado(t) AND t.salario > 1200}
Leitura: o conjunto de todas as tuplas t tal que exista uma tupla t na relação
empregado para a qual o valor no atributo salario seja maior que 1200 reais
Cálculo Relacional de Tuplas
• Na consulta { t | empregado(t) AND t.salario > 1200}

Cada tupla de EMPREGADO que satisfaça a condição de


salario>1200 é recuperada

t.Salario referencia o atributo salario da variavel de tupla t (similar ao


SQL)
Cálculo Relacional de Tuplas
• Na consulta { t | empregado(t) AND t.salario > 1200}

• Para recuperar apenas alguns atributos ao invés da tupla toda:


{ t.nome, t.sobrenome | empregado(t) AND t.salario > 1200}

Atributo relação condição

• Equivale a consulta SQL:


SELECT t.nome, t.sobrenome
FROM empregado t
WHERE t.salario>1200

• Equivale a consulta da Algebra:


– nome, sobrenome (salario > 1.200 (Empregado))
O que é preciso informar numa expressão de
cálculo de tuplas?
1. Uma relação R(t)
1. Equivalente a cláusula FROM do SQL
2. Uma condição para selecionar tuplas
1. Equivalente a cláusula WHERE do SQL e SELECAO da
algebra
2. A condição é após o símbolo |
3. Conjunto de atributos a ser recuperado
1. Equivalente ao SELECT do SQL
condição

{ t.nome, t.sobrenome | empregado(t) AND t.salario > 1200}

SELECT FROM WHERE


Expressões e Fórmulas
• Expressão GERAL:
• {t1.A1, t2.A2, ..., tn.An, | COND (t1, t2,..., tn, tn+1, tn+2,..., tn+m)}
Os t são variáveis de tuplas A relação faz parte da condição
Os A são um atributo da relação

Uma condição pode ter operadores de conjunto <, >, <=, >=, <>, do tipo
t>c, onde c é uma constante
Expressões e Fórmulas
• Expressão GERAL:
• {t1.A1, t2.A2, ..., tn.An, | COND (t1, t2,..., tn, tn+1, tn+2,..., tn+m)}
variáveis livres predicado aplicado às variáveis
livres

• Variável livre
– assume valores de tuplas de uma ou mais relações
– constitui a resposta da consulta
– Aparece do lado esquerdo da |

• Predicado
– EXPRESSÃO LÓGICA que, se verdadeira para determinados
valores das variáveis livres retorna os valores destas variáveis na
resposta da consulta
A Expressão Lógica
{t1.A1, t2.A2, ..., tn.An, | COND (t1, t2,..., tn, tn+1, tn+2,..., tn+m)}

• Uma expressão pode ter várias condições C (fórmula), ligadas por


operadores lógicos AND, OR, e NOT
• Se C1 e C2 são uma condição, então (C1 AND C2), (C1 OR C2 ), NOT (C1) e
NOT (C2)

• Valores verdade para as condições:


– (C1 AND C2) é verdadeiro se ambos C1 e C2 forem verdadeiros, caso contrário
é FALSO
– (C1 OR C2 ) é falso se ambos C1 e C2 forem falsos, caso contrário é verdadeiro
– NOT (C1) é verdadeiro se c1 for FALSO; é FALSo se C1 for VERDADEIRO
– NOT (C2) é verdadeiro se C2 for FALSO; é FALSo se C2 for VERDADEIRO
Exemplo
• Q1: recupere a data de nascimento e o
endereço dos empregados Joao Oliveira

{ t.dataNasc, t.endereco | empregado(t) AND t.nome=´Joao´ AND


t.sobrenome=´Oliveira´}
Exercícios – Dado o esquema relacional
• Ambulatório (númeroA, andar, capacidade)
• Médico (CRM, nome, idade, cidade, especialidade, #númeroA)
• Paciente (RG, nome, idade, cidade, doença)
• Consulta (#CRM, #RG, data, hora)
• Funcionário (RG, nome, idade, cidade, salário)

1) buscar os dados dos pacientes que estão com sarampo


2) buscar os dados dos médicos ortopedistas com mais de
40 anos
3) buscar os dados das consultas, exceto aquelas
marcadas para os médicos com CRM 46 e 79
4) buscar o número dos ambulatórios do quarto andar que
tenham capacidade igual a 50 ou tenham número
superior a 10
Quantificadores Existencial e
Universal
• Usados para consultas com mais de uma relação
• Quantificador existencial: 
– Chamado EXISTE
• Quantificador universal:
– Chamado PARA TODO

• Em uma expressão uma tupla t é livre quando


não for quantificada em uma cláusula (t) ou (t),
caso contrário éla é limite
Quantificadores Existencial e
Universal
• Valores verdade para os quantificadores
• Sendo C uma condição:
– (t)(C) é VERDADEIRA se C for verdadeira para
alguma (pelo menos 1) tupla das ocorrências livres
de t em C, caso contrário é FALSA
– (t)(C) é VERDADEIRA se C for VERDADEIRA para
todas as tuplas (no universo) designadas para
ocorrências livres de t em C, caso contrário é FALSA

Quantificador Existencial
• Notação (Silberchatz)
 t  C(t)

• Notação (Navathe)
(t)(C)
• Define uma variável não-livre t (associada sempre a uma relação
R) e avalia uma condição C(t) para ela
– interpretação: verifica se existe alguma tupla t em R para o qual
C(t) seja verdadeiro


Quantificador Existencial
• Relações Exemplo

• Projeto (codProj, tipo, descr, codDep)


• ProjetoEmpregado (codProj, codEmp, dataIni, tempoAl)
• Empregado (codEmp, nome, salario, codDep)
• Departamento (codDep, descricao)

Departamento que controla o projeto


Quantificador Existencial
• TABELAS: EXEMPLO
• Consulta 1: recupere o nome e o endereco de
todos os empregados que trabalham no
departamento de PESQUISA
{ t.nome, t.endereco | empregado(t) AND
(d) (departamento(d) AND d.nome=´PESQUISA´ AND
d.codDepto=t.codDepto)}
Condição de SELEÇÂO da Algebra Condição de JUNÇÂO
Equivale ao
C da
Formula
(d)(C))
• Neste exemplo, t é uma tupla livre, d não é livre
Quantificador Existencial
• Consulta 2: Encontre o nome do projeto
dos empregados do departamento 5
MAIS EXEMPLO

{ t.descr, | projeto (t) AND (d) (Empregado(d) AND


• Neste exemplo,
d.codDep=5 AND t é uma tupla livre, d não é livre
d.codDepto=t.codDepto)}

Condição de JUNÇÂO

Condição de SELEÇÂO da Algebra


Quantificador Universal

• Notação
 t  C(t) (Silberchatz)
(t) (C) (Navathe)

• Interpretação
– verifica se toda tupla t satisifaz C(t)

• Usado para formular consultas que


– envolvem a associação com tuplas de relações
que não vão para a resposta
– similar ao princípio da divisão da álgebra
relacional
Exemplos de Consultas c/ o Quantificador
Existencial
Projeto (codProj, tipo, descr, codDep)
ProjetoEmpregado (codProj, codEmp, dataIni, tempoAl)
Empregado (codEmp, nome, salario, codDep)
Departamento (codDep, descricao)
• Consulta: nomes dos empregados que não trabalham em
projetos

{e.nome | empregado(e) AND ((x)(NOT (projetoEmpregado(x)) OR


NOT (x.codEmp=e.codEmp)))}
* Para cada tupla: retorna o nome do empregado se, somente se, na tupla x
(x ) de projetoEmpregado este empregado não exista

• EQUIVALENTE a
{e.nome | empregado(e) AND (NOT(x)(projetoEmpregado(x) AND
x.codEmp=e.codEmp))}

* Para cada tupla, retorna o nome do empregado somente se não existir NOT(x)
uma tupla em projetoEmpregado com este empregado
Exercícios – Dado o esquema
relacional
• Ambulatório (númeroA, andar, capacidade)
• Médico (CRM, nome, idade, cidade, especialidade, #númeroA)
• Paciente (RG, nome, idade, cidade, doença)
• Consulta (#CRM, #RG, data, hora)
• Funcionário (RG, nome, idade, cidade, salário)

5) buscar o nome e a especialidade de todos os médicos


6) buscar o número dos ambulatórios do terceiro andar
7) buscar o CRM dos médicos e as datas das consultas para os pacientes com RG 122 e
725
8) buscar os números dos ambulatórios, exceto aqueles do segundo e quarto andares,
que suportam mais de 50 pacientes
9) buscar o nome dos médicos que têm consulta marcada e as datas das suas consultas
10) buscar o número e a capacidade dos ambulatórios do quinto andar e o nome dos
médicos que atendem neles
11) buscar os nomes dos médicos ortopedistas com consultas marcadas para o período
da manhã (7hs-12hs) do dia 15/04/03
12) buscar os nomes dos pacientes, com consultas marcadas para o médicos João Carlos
Santos, que estão com pneumonia
Exercícios – Dado o esquema
relacional
• Ambulatório (númeroA, andar, capacidade)
• Médico (CRM, nome, idade, cidade, especialidade, #númeroA)
• Paciente (RG, nome, idade, cidade, doença)
• Consulta (#CRM, #RG, data, hora)
• Funcionário (RG, nome, idade, cidade, salário)

13) buscar os nomes e RGs dos funcionários que recebem salários


abaixo de R$ 300,00 e que não estão internados como pacientes
14) buscar os números dos ambulatórios onde nenhum médico dá
atendimento
15) buscar os nomes e RGs dos funcionários que estão internados
como pacientes
16) Buscar o nome dos médicos que nunca consultaram
STRUCTURED QUERY
LANGUAGE
(SQL)
SQL
De forma geral, os BD relacionais
implementam padrão SQL e acrescentam
características específicas ao padrão.
Cada SGBD procura incluir elementos que o
possam diferenciar dos concorrentes, com isso pode-
se observar diversos nomes para a SQL, por exemplo
a Transact SQL para o SQL SERVER e o PL/SQL
para a ORACLE.
Este material apresentará a SQL tão portável
quanto possível, mas as instruções apresentadas
poderão ser implementadas no SGBD ORACLE.
STRUCTURED QUERY LANGUAGE - SQL
A SQL surgiu no início da década de 70, por uma
iniciativa da IBM. Nos últimos anos tornou-se a
linguagem mais popular para acesso a bancos de
dados, juntamente com a difusão de SGBDs
relacionais. Existem iniciativas de padronizar a
SQL, surgindo padrões SQL-86, 89, 92 e SQL-101.
Linguagem procedural: fornece uma descrição detalhada
de COMO um tarefa é realizada, operando sobre um registro
ou uma unidade de dados a cada vez.
Linguagem não procedural: é uma descrição de O QUE
se deseja, onde o sistema deverá determinar a forma de fazer.
SQL
A SQL consiste em uma linguagem não
procedural que permite a interface básica para
comunicação com o banco de dados.
instrução sql
select nome
from user;

Banco
dados exibidos de dados
Nome
-------------------
Paulo
Jose
Maria
SQL
Um SGBD realiza alguns processos que podem ser
efetuados por meio da linguagem SQL

DEFINIÇÃO: criação descritiva do esquema que


atenderá as necessidades no BD;
CONSTRUÇÃO: inserção das instâncias inicias no
banco de dados;
MANIPULAÇÃO: realização de consultas e
atualizações sobre os dados decorrentes do dia-a-dia.
SQL
Será usada a ferramenta SQL da Oracle para
manipular o BD. Esta ferramenta possui o nome de
SQL*Plus e é baseada no SQL padrão, mas possui
alguns recursos específicos da Oracle que podem ser
usados para se escrever relatórios e controlar o modo
como a saída de tela ou papel é formatada.
Para começar a usar o BD é necessário
estabelecer uma conexão com o SGBD que usa a SQL.
Nas características de um SGBD, lembre-se que
existia uma preocupação com a restrição de acesso não
autorizado.
SQL
Estabelecendo a Conexão
Para se conectar ao BD (Oracle) utilize as opções da barra
Iniciar (no caso para Windows). Em seguida a opção Programas
 Oracle - OraHome 81
 Application Developement
 SQL Plus

Aparecerá uma caixa de diálogo solicitando NOME,


SENHA e o APELIDO ou nome do banco de dados desejado.
Este apelido procura identifica exatamente a qual BD você
deseja se conectar, se existir mais que um BD na sua rede.
SQL
Identificarei o “login” ou o nome da minha conexão
acompanhado da senha e do apelido, caso exista mais
que um banco de dados disponível. nome

Exemplo:

senha

apelido
Se a conexão obtiver sucesso surgirá o prompt SQL> após
algumas confirmações dos acessos e serviços disponíveis. Caso
não ocorra sucesso será apresentada uma mensagem de erro e a
conexão será solicitada novamente.
SQL*Plus: Release 8.1.7.0.0 - Production on Seg Mai 14 14:58:33 2001

(c) Copyright 2000 Oracle Corporation. All rights reserved.

Conectado a:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

SQL>
Com o sucesso da operação o SQL está ativo e acessando
um BD, dentro das possibilidades de acesso que sua conta (ou
conexão) esta habilitada.
Para iniciar a definição de um BD é necessário
conhecer os tipos de dados que o BD manipula. De
uma maneira geral serão manipulados os tipos:
• números ( -45 | 0 | 25.57 )
• literais (José Roberto | porcelana)
• datas (dia, mês e ano | 23 / 12 / 01 | horário)
A sintaxe que identifica estes tipos são:
* number(n,d) – numéricos
* varchar2(n) – caracteres variáveis até 4000
* date – de 1/1/4712 A.C. até 31/12/9999 D.C.
 n corresponde ao comprimento ou tamanho
 d corresponde a quantidade de dígitos decimais
A primeira fase em qualquer BD começa com o uso
de instruções DDL (Linguagem de Definição de Dados),
pois é por meio dela que cria-se objetos no BD.
Exemplo:
 Como seria a relação que armazenaria todas as unidades da
federação brasileira?
Supondo esta necessidade elabora-se o esquema coerente para
armazenar e manipular as Unidades da Federação (estados).
Unidades da Federação
sigla nome
Relação: ESTADOS
sigla literal (2) AC Acre
AM Amazonas
nome literal (20) : :
DF Distrito Federal
SQL
Após modelar e confirmar que esta é a relação que
atende as necessidades, ela é implementada no BD.
Para criar esta relação será usada a declaração SQL
(DDL) efetivando a relação (ou tabela) no BD.
Create table <nome> (
atributo_1 <tipo de dado>, -- tipo deste atributo_1
atributo_2 <tipo de dado> ) ;
No SQL Plus os dois traços seguidos (--) identificam que o
restante da linha é um comentário. O ponto e vírgula encerra
uma instrução deixando-a pronta para ser executada <ENTER>.
SQL
Modelo: ESTADOS Banco
de dados
SQL
Todas as unidades possuem uma sigla, portanto
sempre que se for cadastrar um novo estado ele deverá
possuir uma sigla. Para que o SGBD controle esta
restrição na relação, não permitindo que seja informada
uma unidade sem uma sigla, é necessário que o projeto
da relação possua uma confirmação que a obrigue.
Caso nada identifique esta obrigatoriedade, será
possível o armazenamento de uma unidade sem sigla.
A obrigatoriedade de um atributo é representado
pela expressão NOT NULL (não nulo) que deve estar
vinculada a todos os atributos que são obrigatórios em
uma relação.
SQL
A criação da relação (ou tabela) que representará as
Unidades da Federação Brasileira será feita com a
seguinte instrução:
Create table ESTADOS (
SIGLA varchar2(2) not null,
NOME varchar2(20) ); -- pressionando o <ENTER>
Tabela criada. resultado da operação

Por meio deste comando criou-se o esquema


ESTADOS que possui como domínio todas as
Unidades da Federação Brasileira.
SQL
A expressão NULL significa que não existe valor,
ou seja, não contém dados. O erro mais comum que se
comete é a atribuição de um valor nulo em um atributo
numérico.
O valor nulo é diferente de zero, pois zero é um
valor enquanto que nulo é a ausência de valor. Se
ocorrer a operação de 1 + Null o resultado vai ser Null.

“Nunca use um Null para representar um valor


igual a zero em um atributo numérico. Se este
atributo for usado para operações aritméticas dê a
ele o valor de zero”
SQL
Um comando interessante que a Oracle incluiu em
sua implementação SQL foi o DESCRIBE. Este
comando oferece um resumo da relação (esquema) com
suas colunas (atributos).
Este comando pode ser usado de maneira abreviada
(4 letras iniciais), apresentando o mesmo efeito e
resultado.
SQL> desc estados
Nome Nulo? Tipo
------------------------------------ ------------ --------------------------
SIGLA NOT NULL VARCHAR2(2)
NOME VARCHAR2(20)
SQL>
SQL
A instrução que modifica o nome de uma relação é:
RENAME <nome_atual> TO <novo_nome>;
A instrução que remove uma relação (será detalhada
a frente) consiste no comando a seguir:
DROP TABLE <nome_da_tabela>;
Exemplo:
RENAME ESTADOS TO UNIDADES_FEDERAIS;
Tabela renomeada. resultado

DROP TABLE ESTADOS;


ORA-00942: a tabela ou view não existe resultado
Código Número do erro
do erro
DROP TABLE UNIDADES_FEDERAIS;
Tabela eliminada. resultado
SQL
Pode-se aprender agora, a manipular relações
(DML), pois já se conhece os comandos e
procedimentos básicos para a criação e remoção das
relações (DDL).
Identificando o domínio das unidades da federação,
passa a armazenar os possíveis dados. Nesse
armazenamento serão guardados os valores de todos os
estados da Federação Brasileira.
Com isso inicia-se o processo de construção do BD,
pois a definição projetou o BD mais coerente para o
armazenamento dos dados necessários ao problema
desejado.
SQL
Instrução INSERT
Esta instrução é usada para inserir tuplas em uma relação.
INSERT INTO <tabela>[(coluna_1,...,coluna_n)] VALUES (valor_1,...,valor_n);
Exemplo:
INSERT INTO ESTADOS(sigla,nome) VALUES('GO', 'Goiás');
* resultado
ERRO na linha 1:
ORA-00942: a tabela ou view não existe

A tabela desejada não existe mais, pois foi apagada pelo comando DROP.
Portanto crie a tabela ESTADOS novamente e depois insira os estados.
INSERT INTO ESTADOS(sigla,nome) VALUES('GO', 'Goiás');
1 linha criada. Resultado da 1ª forma
INSERT INTO ESTADOS(nome, sigla) VALUES('ACRE', 'AC');
1 linha criada. Resultado da 2ª forma
INSERT INTO ESTADOS VALUES('SP', 'São Paulo');
1 linha criada. Resultado da forma geral
Instrução DELETE
Esta instrução é usada para remover uma ou mais tuplas da
relação, possuindo duas formas básicas:

DELETE FROM <tabela>;


ou
DELETE FROM <tabela> WHERE <condição>;

A primeira forma é obrigatória e apaga todos os dados da


relação, enquanto que a segunda possui uma parte opcional, a
partir do WHERE, que apaga somente os dados da tabela que
atendem a uma condição (ou condições) imposta pela cláusula
WHERE.
SQL
Exemplo:
DELETE FROM ESTADOS WHERE SIGLA = 'SP';
1 linha deletada. resultado

DELETE FROM ESTADOS WHERE NOME = 'ACRE';


1 linha deletada. resultado

DELETE FROM ESTADOS WHERE SIGLA = 'AC';


0 linhas deletadas. resultado

INSERT INTO ESTADOS VALUES('DF', 'BRASÍLIA');


1 linha criada. resultado

DELETE FROM ESTADOS;


resultado
2 linhas deletadas.
Instrução UPDATE
Esta instrução permite a atualização de um ou mais atributos
em uma tupla, ou em um grupo de tuplas de uma relação (tabela).
O conteúdo de cada atributo será ajustado com a cláusula SET. A
exemplo da instrução DELETE tem-se duas formas para efetuar
esta instrução:
UPDATE <tabela> SET <atributo> = <valor>;
ou
UPDATE <tabela> SET <atributo> = <valor>
WHERE <condição>;
A primeira forma é obrigatória e atualiza todos os dados da
relação, enquanto que a segunda possui uma parte opcional, a
partir do WHERE, que atualiza somente os dados da relação que
atendem a uma condição (ou condições) imposta pela cláusula
WHERE.
Exemplo:
UPDATE ESTADOS SET NOME = 'ACRE';
0 linhas atualizadas. resultado

Com a remoção de todas as tuplas no último DELETE, não é


possível alterar nenhum dado, pois não existem dados na tabela.
INSERT INTO ESTADOS VALUES('BA', 'BAHIA');
1 linha criada. resultado
UPDATE ESTADOS SET NOME = 'Bahia'
WHERE SIGLA = 'BA';
1 linha atualizada. resultado

UPDATE ESTADOS SET NOME = 'ALAGOAS',


SIGLA = 'AL' WHERE SIGLA = 'PA';
0 linhas atualizadas. resultado
Exemplo:
INSERT INTO ESTADOS VALUES('PA', 'PARA');
1 linha criada. resultado
UPDATE ESTADOS SET NOME = 'ACRE'
WHERE SIGLA = 'PA';
1 linha atualizada. resultado

UPDATE ESTADOS SET NOME = 'ALAGOAS',


SIGLA = 'AL' WHERE SIGLA = 'PA';
1 linha atualizada. resultado

UPDATE CIDADES SET NOME = 'BRASÍLIA'


WHERE CEP = 71510000;
* resultado
ERRO na linha 1:
ORA-00942: a tabela ou view não existe
SQL
Instrução SELECT
Esta instrução é a essência do linguagem SQL. É por meio dela
que se recupera dados de um banco de dados. De modo simples,
forma declarativa, está se dizendo ao BD quais informações foram
selecionadas para serem recuperadas.
Pode-se dividir esta instrução em quatro partes básicas:
• select – seguido dos atributos que se deseja ver (obrigatório)
• from – seguido de onde se obterão os dados (obrigatório)
• where – seguido das restrições de recuperação (opcional)
• order by–seguido da forma como os dados serão classificados

(opcinal)
Esta será a instrução mais comumente usada na linguagem SQL.
O símbolo asterisco ( * ) significa que todos atributos
da relação informada deverão ser recuperados.
Exemplo:
SELECT * FROM ESTADOS;
SI NOME resultado
--- --------------------
BA Bahia
AL ALAGOAS

SELECT * FROM CIDADES;


* resultado
ERRO na linha 1:
ORA-00942: a tabela ou view não existe

DELETE FROM ESTADOS;


resultado
2 linhas deletadas.
Consulta sem dados na relação e a inserção de dados:
SELECT * FROM ESTADOS;
não há linhas selecionadas resultado

INSERT INTO ESTADOS(sigla,nome) VALUES('PA','PARA');


1 linha criada. resultado
INSERT INTO ESTADOS(nome, sigla) VALUES('Parana','PR');
1 linha criada. resultado
INSERT INTO ESTADOS VALUES('AM','AMAZONAS');
1 linha criada. resultado

SELECT NOME FROM ESTADOS;


NOME resultado
--------------------
PARA
Parana
AMAPA
SQL
Realizando algumas atualizações no banco de dados:
UPDATE ESTADOS SET NOME = 'BRASIL'
WHERE NOME = 'PARANA';
0 linhas atualizadas. resultado

UPDATE ESTADOS SET NOME = 'BRASIL'


WHERE NOME = 'Parana';
1 linha atualizada. resultado

UPDATE ESTADOS SET NOME = 'ALAGOAS',


SIGLA = 'AL' WHERE SIGLA = 'PA';
1 linha atualizada. resultado
Pesquisando as informações atuais no banco tem-se:
SELECT SIGLA , NOME FROM ESTADOS;
SI NOME
-- -----------------
AL ALAGOAS Especificando as colunas desejadas
PR BRASIL na ordem em que elas serão
procuradas e apresentadas
AM AMAZONAS

A consulta de somente algumas tuplas pode ser


conseguida por meio da cláusula where. O uso desta
cláusula é opcional e faz com que uma ou mais
condições tenham que ser atendidas para que uma tupla
seja recuperada.
A forma básica de uma instrução select pode ser
generalizada em:
SELECT <atributos> FROM <tabela> WHERE <condições>;
Após o WHERE são especificadas as cláusulas
condicionais que restringirão as tuplas a serem
recuperadas pela consulta.
SELECT NOME FROM ESTADOS
WHERE SIGLA = 'AL';
NOME resultado
----------------
ALAGOAS
UPDATE ESTADOS SET NOME = 'BRASIL'
WHERE NOME = 'AMAPA';
1 linha atualizada. resultado
UPDATE ESTADOS SET NOME = 'BRASIL'
WHERE NOME = 'AMAZONAS';
1 linha atualizada., resultado
SELECT * FROM ESTADOS;
SI NOME
resultado
-- ----------------
AL ALAGOAS
PR BRASIL
AM BRASIL
SELECT NOME,SIGLA FROM ESTADOS
WHERE NOME = 'BRASIL';
NOME SI
-------------------- --- SELECT * FROM ESTADOS
BRASIL PR WHERE NOME='BRASIL' AND SIGLA='AM';
BRASIL AM SI NOME
---- -----------
resultado AM BRASIL
SQL
Na cláusula where serão utilizados alguns operadores de
comparação e lógicos para que a condição seja elaborada e
possa ser constatada com mais realidade.
Comparação Lógico
Oper. Significado Oper. Significado
= igual a
AND E lógico
> maior que
< menor que OR OU lógico
>= maior ou igual que
<= menor ou igual que NOT Negação

SELECT NOME FROM ESTADOS


WHERE SIGLA = 'SP' OR NOME = 'ALAGOAS';
NOME resultado
----------------
ALAGOAS
SQL
A cláusula das outras instruções de manipulação da
informação também atendem as características dos
operadores lógicos e de comparação. Então, corrija as outras
duas tuplas que aparecem com o nome de ‘BRASIL’ para o
correto nome, de acordo com a sua sigla já cadastrada.
UPDATE ESTADOS SET NOME = 'PARANA'
WHERE SIGLA = 'PR';
1 linha atualizada. resultado
UPDATE ESTADOS SET NOME = 'AMAZONAS'
WHERE SIGLA = 'AM';
1 linha atualizada. resultado

Agora recupere somente as tuplas que sofreram alteração e


verifique se elas estão corretas.
SELECT * FROM ESTADOS SI NOME
WHERE SIGLA = 'PR' OR SIGLA = 'AM'; -- ------------
PR PARANA
resultado
AM AMAZONAS
SQL
A apresentação dos dados recuperados pelo SELECT pode
ser classificada, onde esta classificação será ascendente
(crescente) ou descendente (decrescente).
Para isso inclui-se a cláusula ORDER BY no final da
instrução de consulta (SELECT).
SELECT NOME FROM ESTADOS
ORDER BY NOME ASC;
NOME resultado
--------------------
ALAGOAS
AMAZONAS
PARANA

SELECT NOME FROM ESTADOS NOME


ORDER BY NOME DESC; --------------------
PARANA
AMAZONAS
ALAGOAS
SQL
Uma classificação com mais que um atributo pode ser feita
com a especificação ordenada de quais os atributos a serem
usados na classificação e a ordem de prioridade para cada
um.
Os atributos devem ser especificados separados por vírgula
e devem estar em ordem de prioridade conforme sua
especificação na cláusula ORDER BY , onde o primeiro
atributo especificado será classificado primeiramente e o
segundo, respeitando a classificação do primeiro, será
classificado em seguida, dentro da primeira classificação.
Exemplo:
SELECT nome FROM empregado WHERE Sem asalario < 0 de ASC ou
especificação
ORDER BY nome, salario; DESC a consulta é classificada de
Primeira classificação será feita forma ASC, por definição (padrão)
por nome e dentro da classificação
por nome será feita por salário
SQL
Baseado no exemplo anterior, observe o comando DDL que
criaria uma relação compatível com a consulta solicitada pelo
SELECT proposto.

Create Table EMPREGADO (


CODIGO number(8) not null, -- código funcional
NOME varchar2(40) not null, -- nome do empregado
NASCER date not null, -- data de nascimento
SALARIO number(7.2) not null, -- valor do seu salário
CPF number(11) ); -- número do CPF, se tiver
SQL
Além dos comandos DML e DDL vistos até aqui, uma outra
categoria de comandos chamada de TPL (Transaction Proccess
Language – linguagem de processamento de transação) compõe a
SQL.
Os comandos desta categoria são responsáveis pela gravação
definitiva no banco de dados das instruções DDL e DML, além da
recuperação do banco de dados, caso algo aconteça de errado.
Várias das instruções DDL são de salvamento automático
(autocommit), portanto, uma vez executadas elas já estão
implantadas no banco de dados. Por exemplo a instrução CREATE
TABLE.
SQL
Salvando as Realizações
Após realizar algumas instruções sobre o banco de
dados é necessário solicitar que ele armazene
efetivamente (grave) o resultado de suas solicitações
(transações).
A efetiva realização solicitada pelas instruções
INSERT, DELETE e UPDATE precisam ser salvas no
banco de dados. Para que as suas ações (ou
realizações) sejam salvas no banco de dados, é
necessária a execução do comando COMMIT. Por meio
deste comando suas instruções são efetivadas junto ao
banco de dados.
SQL
Salvando os seus trabalhos você libera todos os
recursos exigidos até concluir a sua transação. Existe
uma redução nos “custos” do acesso de outros usuários
e a diminuição do seu tempo de espera.
Outra característica importante para estar salvando
sempre o que você estiver realizando, é a diminuição
dos riscos de perder algo que terminou com tanto
cuidado.
Exemplo:

COMMIT;
Validação completa. resultado
SQL
Durante a utilização do banco de dados, pode
acontecer a execução de uma instrução equivocada, ou
problemas como a falta de energia no meio de uma
transação.
A restauração da situação do banco de dados, antes
de um salvamento ser executado, é possível por meio
do comando ROLLBACK. Ele retrocede o banco de
dados para a posição que ele estava após o último
comando de salvamento (COMMIT) ser executado.
As instruções de AUTOCOMMIT
Exemplo: não serão retornadas, pois assim que
ROLLBACK; elas são executadas elas são salvas.
Rollback completo. resultado
SQL
Remover uma Tabela
Para se remover uma relação deve-se usar o
comando DROP TABLE.
DROP TABLE <nome_da_tabela>;
Por meio deste comando a relação deixará de existir
neste banco de dados, sendo todas as informações
contidas nela, apagadas (perdidas) com ela.
Exemplo:
DROP TABLE ESTADOS;
Tabela eliminada. resultado
DROP TABLE CIDADES;
ORA-00942: a tabela ou view não existe resultado
TRABALHO DE APLICAÇÃO
Desenvolver um projeto a partir de um modelo,
coerentemente, elaborado para a situação proposta, com o
desenvolvimento do diagrama e o seu mapeamento.
Com estas definições concluídas, implantar o banco de dados
referente as suas decisões no modelo e “alimenta-lo” com no
mínimo 10 situações diferentes, onde o banco será testado.
Será necessária a comprovação (por meio de simulações) da
funcionalidade dos relacionamentos entre as relações e a
preocupação com a implantação das restrições de integridade.
Algumas consultas também deverão estar definidas e
disponíveis para o usuário do BD.
Exercício de Fixação

01.) Desenvolva todo o modelo relacional, com a diagramação


compatível, para a representação do exercício 5 da lista de
exercícios (solicitação de compra). Faça o mapeamento
correspondente ao modelo proposto e elabore, na linguagem
SQL (DDL) toda a rotina de criação das tabelas necessárias
para atender o modelo. Crie-as em um arquivo texto padrão
ASCII e o grave com o nome de Compra.SQL. Cuidado, pois a
extensão deste arquivo texto deverá ser .SQL e não .TXT .
Traga-o pronto para a próxima aula, onde o implementaremos
no BD.
02.) Desenvolver o projeto proposto no exercício 7 da lista de
exercícios para efetuar, em seguida todo o desenvolvimento de
um projeto de banco de dados.
Obrigado

Você também pode gostar