RELACIONAL E SQL
Brasília - DF
1
Agenda
Modelo Relacional
Álgebra Relacional
Cálculo Relacional
SQL
2
Modelo de Dados
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.
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.
domínio
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.
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
• 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 (AB) = 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
t= variável de tupla
COND(t) = é uma expressão condicional envolvendo t
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)}
• 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
Condição de JUNÇÂO
• Notação
t C(t) (Silberchatz)
(t) (C) (Navathe)
• Interpretação
– verifica se toda tupla t satisifaz C(t)
• 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)
Banco
dados exibidos de dados
Nome
-------------------
Paulo
Jose
Maria
SQL
Um SGBD realiza alguns processos que podem ser
efetuados por meio da linguagem SQL
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
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
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:
(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
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