Escolar Documentos
Profissional Documentos
Cultura Documentos
Modelo Relacional –
Implementação
Valéria Pequeno
Introdução
• Nas aulas passadas …
Modelo
Modelo Lógico Normalizações
Conceptual
• Agora ...
1
14/12/20
Introdução
• SQL (Structures Query Language) foi desenvolvida
primeiramente pela IBM com o intuito de implementar o
modelo relacional proposto por Codd.
• SQL é uma linguagem estruturada para manipulação dos
dados contidos em um SGBD, tais como Oracle ou SQL Server
• SQL conecta aplicações às bases de dados
Aplicação
Online
SQL
Aplicação SQL Base de
Desktop
SQL Dados
Intranet
Introdução
• SQL é um standard ANSI e ISO mundialmente aceito para BD
relacionais
• ANSI: American National Standards Institute
• ISO: International Organization for Standardization
• Importância: reduz a incompatibilidade entre os sistemas
• Padrões SQL:
• SQL-86 SQL-89 SQL-92 SQL:1999 SQL:2003
• Sistemas comerciais oferecem a maioria senão todas, as
características do padrão SQL-92, além de estender a linguagem
com características especiais (proprietárias de cada SGBD)
• Aspectos da linguagem variam de implementação para
implementação, alguns podem até não estar disponíveis para um
dado SGBD, normalmente as variações de sintaxe são poucas
Introdução
• SQL é uma linguagem …
• Estruturada: possui uma sintaxe formal
• Declarativa: dizemos o que queremos, não como o computador
(ou SGBD) vai realizar o que pretendemos
• Mapeamento entre modelo lógico e modelo físico (resumo)
Modelo Lógico Modelo Físico
Português Inglês
Esquema da relação Tabela Table
Tuplo Linha /Registo Row
Atributo Coluna / Atributo / Campo Column
Chave primária Chave primária Primary Key
Chave estrangeira Chave estrangeira Foreign Key
2
14/12/20
SQL
• Sub-dividida em 4 sub-linguagens: DDL, DML, DCL e DTL
SQL
• Sub-dividida em 4 sub-linguagens: DDL, DML, DCL e DTL
SQL
• Sub-dividida em 4 sub-linguagens: DDL, DML, DCL e DTL
3
14/12/20
SQL
• Sub-dividida em 4 sub-linguagens: DDL, DML, DCL e DTL
10
SQL
• SQL é limitada e está longe de ser perfeita
• SGBDs usualmente fornecem extensões para suprir
necessidades específicas
• Exemplo:
• Funções para tornar as consultas em datas mais eficientes.
• O que vamos ver …
• DDL e DML básico
• De acordo com o padrão SQL
• Praticamente funciona em todos os SGBDs, mas a sintaxe pode
mudar ligeiramente
• Bibliografia
• Fundamentos de Bases de Dados, Feliz Gouveia, FCA
• SQL, Luis Damas, FCA
11
DDL
• A DDL permite especificar informações sobre relações,
incluindo:
• O esquema de cada relação
• Restrições de integridade
• Além disso, para cada relação podemos definir: Não faz parte dos
comandos
• O conjunto de índices básicos da DDL
• Informações sobre segurança e autorização
• Estrutura física de armazenamento da relação no disco
12
4
14/12/20
13
14
Criação de Tabelas
• Uma relação em SQL é criada usando o comando:
create table R (A1 D1, A2 D2, ..., An Dn,
(restrição_de_integridade1),
...,
(restrição_de_integridadek))
• R é nome da relação/tabela
• Ai é o nome de um atributo da relação, com Di o seu
respectivo tipo de dados
• Exemplo:
create table professor (
ID char(5),
nome varchar(20),
nome_depto varchar(20),
salario numeric(8,2));
(*) Fonte dos exemplos: Database System Concepts - 6th Edition, ©Silberschatz, Korth and Sudarshan
15
5
14/12/20
16
17
18
6
14/12/20
Exercício 1
• Crie a BD (usando o SQL padrão) especificada no esquema abaixo:
Empregado (PrimeiroNome, InicialMeio, UltimoNome, NumEmpregado,
DataNascimento, Endereco, Sexo, Salario, NumSupervisor, NumDepto)
Empregado [NumSupervisor] referencia Empregado [NumEmpregado]
Empregado [NumDepto] referencia Departamento[NumDepto]
Departamento (NomeDepto, NumDepto, NumGerente, DataInicioGerencia)
Departamento[NumGerente] referencia Empregado [NumEmpregado]
Localizacao_Depto (NumDepart, Localizacao)
Localizacao_Depto [NumDepart] referencia Departamento[NumDepto]
Projeto (NomeProj, NumProj, Localizacao, NumDepto)
Projeto[NumDepto] referencia Departamento[NumDepto]
Trabalha_em (NumEmpregado, NumProj, Horas)
Trabalha_em [NumEmpregado] referencia Empregado [NumEmpregado]
Trabalha_em [NumProj] referencia Projeto [NumProj]
Dependente (NumEmpregado, NomeDependente, Sexo, DataAniversario, Parentesco)
Dependente[NumEmpregado] referencia Empregado [NumEmpregado]
19
Atualização de Tabelas
• Drop Table
• Remove uma tabela
• Exemplo:
drop table estudante
• Alter Table
• Faz alterações na estrutura de uma tabela
• Exemplos:
• Adicionar um atributo:alter table professor add especialidade char(15)
• Remover um atributo: alter table professor drop especialidade
20
ÁLGEBRA RELACIONAL
21
7
14/12/20
Introdução
• Relembre: uma relação (ou mais precisamente um esquema de
relação) é representado por:
• R(A1 , A2, …, An ) onde:
• A1, A2, …, An são atributos
• A1 é a chave primária da relação R
• Exemplo:
• Aluno(Numero, nome, contacto)
• O estado de uma relação R (também chamado relação),
representado por r, é o conjunto de tuplos (a1,a2,...,an) os quais são
os valores atuais do esquema da relação em um dado instante
• Exemplo:
• (12345,”João Maia”,213456789)
• A ordem dos atributos é relevante, entretanto, a ordem dos tuplos
não!
22
Álgebra Relacional
• “É uma linguagem procedimental que define operações sobre a base
F. Gouveia
de dados, através de expressões algébricas”
• Proposta por Codd (1969)
23
Álgebra Relacional
• Consiste de 5 operações básicas:
• Seleção ( s )
• Projeção ( Õ )
• Junção ( ⋈)
• Renomear ( r )
24
8
14/12/20
Seleção (𝛔)
• Seleciona tuplos que sa_sfaç̧am à condição de seleção
• Diminui o número de tuplos de uma relação
• Sintaxe:
• 𝛔condição_de_seleção (relação)
• Relação
• resultado de alguma operação da álgebra relacional
25
Seleção
• Relação Aluno número Nome Dt_ingresso Curso BI
26
Projeção (∏)
• Projeta os atributos solicitados
• produz uma relação com o mesmo número de tuplos que a
original mas como menos atributos
• Faz uma partição vertical na relação
• Sintaxe:
• ∏lista_de_atributos (relação)
• Relação
• resultado de alguma operação da álgebra relacional
27
9
14/12/20
Projeção
• Relação Aluno número Nome Dt_ingresso Curso BI
28
União (∪)
• Dada duas relações R e S, gera uma relação que contém todos
os tuplos pertencentes a R, a S, ou a ambas R e S
• Exige que R e S sejam união compacveis
• Duas relações são compacveis se:
• possuem o mesmo grau
• seus atributos possuem os mesmos nomes e domínios
• A relação resultante não contém tuplos duplicados (são
removidos)
• Sintaxe:
•R∪S
• R e S:
• Relação
• resultado de alguma operação da álgebra relacional
29
União
• Relações Departamento e Depto
Departamento Depto
codDep Nome codDep Nome
A Tecnologia A Informático
B Saúde C Humanas
C Humanas E Financeiro
• Departamento È Depto
codDep Nome
A Tecnologia
A Informático
B Saúde
C Humanas
E Financeiro
30
10
14/12/20
Diferença (-)
• Dada duas relações R e S, gera uma relação que contém todos
os tuplos pertencentes a R que não pertencem a S
• Exige que R e S sejam união compatíveis
• Sintaxe:
•R-S
• R e S:
• Relação
• resultado de alguma operação da álgebra relacional
31
Conjunto Diferença
• Relações Departamento e Depto
Departamento Depto
codDep Nome codDep Nome
A Tecnologia A Informático
B Saúde C Humanas
C Humanas E Financeiro
• Departamento - Depto
codDep Nome
A Tecnologia
B Saúde
32
Interseção (∩)
• Dada duas relações R e S, gera uma relação que contém todos
os tuplos pertencentes tanto a R quanto a S
• Exige que R e S sejam união compatíveis
• Sintaxe:
•R∩S
• R e S:
• Relação
• resultado de alguma operação da álgebra relacional
• Importante: R Ç S = R – (R – S)
33
11
14/12/20
Interseção
• Relações Departamento e Depto
Departamento Depto
codDep Nome codDep Nome
A Tecnologia A Informático
B Saúde C Humanas
C Humanas E Financeiro
• Departamento Ç Depto
codDep Nome
C Humanas
34
35
Produto Cartesiano
• Relações Depto e Curso
Depto Curso
codDep NomeD codCurso NomeC
A Tecnologia 010 LEI
B Saúde 011 IG
013 MM
36
12
14/12/20
Produto Cartesiano
• Relações Depto e Curso
Depto Curso
codDep Nome codCurso Nome
A Tecnologia 010 LEI
B Saúde 011 IG
013 MM
37
Renomear (𝜌)
• Renomeia
• nome da relação
• nomes dos atributos da relação
• nome da relação e nomes dos atributos
• Sintaxe:
38
Renomear
• Relações Depto
Depto
codDep Nome
A Tecnologia
B Saúde
• Renomear:
r Departamento (Depto)
Departamento
codDep Depto.Nome
A Tecnologia
B Saúde
39
13
14/12/20
• R e S:
• Relação
• resultado de alguma operação da álgebra relacional
40
Junção
• Relações Depto e Curso
Depto Curso
codDep Nome codCurso Nome CodDep
A Tecnologia 010 LEI A
C Saúde 011 IG A
013 MM B
014 LEB B
• Depto Depto.CodDep=Curso.CodDepCurso
41
42
14
14/12/20
Left join
• Relações Depto e Curso
Depto Curso
codDep Nome codCurso Nome CodDep
A Tecnologia 010 LEI A
C Saúde 011 IG A
013 MM B
014 LEB B
• Depto ⟕ Depto.CodDep=Curso.CodDepCurso
43
Right join
• Relações Depto e Curso
Depto Curso
codDep Nome codCurso Nome CodDep
A Tecnologia 010 LEI A
C Saúde 011 IG A
013 MM B
014 LEB B
• Depto ⟖ Depto.CodDep=Curso.CodDepCurso
44
Full join
• Relações Depto e Curso
Depto Curso
codDep Nome codCurso Nome CodDep
A Tecnologia 010 LEI A
C Saúde 011 IG A
013 MM B
Depto ⟗ Depto.CodDep=Curso.CodDepCurso 014 LEB B
45
15
14/12/20
Exercício 1
• Sejam as relações R(A string, B string), S(A string, B string), T(B
string, C string) e U(B string):
Calcule:
a) R ∪ S
b) R ∪ T
c) R–S
d) R⋈T
e) 𝚷A(R)
f) 𝞂A=C(R×T) g) S ⟖ T h) R ⟗ T
46
Exercı́cio 2
• Considere o esquema de BD abaixo e responda as seguintes perguntas.
Empregado (PrimeiroNome, InicialMeio, UltimoNome, NumEmpregado,
DataNascimento, Endereco, Sexo, Salario, NumSupervisor, NumDepto)
Empregado [NumSupervisor] referencia Empregado [NumEmpregado]
Empregado [NumDepto] referencia Departamento[NumDepto]
Departamento (NomeDepto, NumDepto, NumGerente, DataInicioGerencia)
Departamento[NumGerente] referencia Empregado [NumEmpregado]
Localizacao_Depto (NumDepart, Localizacao)
Localizacao_Depto [NumDepart] referencia Departamento[NumDepto]
Projeto (NomeProj, NumProj, Localizacao, NumDepto)
Projeto[NumDepto] referencia Departamento[NumDepto]
Trabalha_em (NumEmpregado, NumProj, Horas)
Trabalha_em [NumEmpregado] referencia Empregado [NumEmpregado]
Trabalha_em [NumProj] referencia Projeto [NumProj]
Dependente (NumEmpregado, NomeDependente, Sexo, DataAniversario, Parentesco)
Dependente[NumEmpregado] referencia Empregado [NumEmpregado]
47
Exercício 2 (cont.)
• Pede-se:
1. Recuperar os empregados que trabalham para o
departamento com o número 5
2. Recuperar o nome (primeiro e último nome) e o endereço
dos empregados que trabalham para o departamento com
número = 5 e salário maior que 3000
3. Recuperar o nome (primeiro e último nome) dos
empregados que tenham dependentes
4. Recuperar o nome (primeiro e último nome) dos
empregados que não tenham dependentes
48
16