O documento discute conceitos básicos de banco de dados relacionais, incluindo:
1) A estrutura básica de uma relação com exemplos de atributos, tuplas e domínios.
2) O conceito de chave primária e estrangeira para identificar e relacionar tabelas.
3) Operações da álgebra relacional como seleção, projeção e junção para manipular dados.
Conceitos básicos, linguagem de consulta e álgebra
1. Banco de Dados
Conceitos básicos, linguagem de
consulta e álgebra relacional
Luan Henrique Scarparo
Ciência da Computação
2. Definição de Modelo relacional
Baseado em teorias dos conjuntos de álgebra relacional o Modelo Relacional é
um modelo para armazenamento e manutenção de banco de dados.
Os primeiros conceitos deste modelo foram desenvolvidos por Codd em 1970 e
expandidos em 1979.
Embora que o nome seja parecido, o Modelo Relacional não é o mesmo que
Modelo Entidade-Ralacionamento.
O Modelo Relacional foi o primeiro modelo que se estabeleceu para aplicações
comercias.
Acesse: www.proseando-codigos.rhcloud.com
3. Estrutura básica de uma relação
Seja
nome_cliente = {Pedro, Joaquim, Maria, Daniela}
rua_cliente = {Presidente Vargas ,Castelo Branco, Marginal Tiete}
cidade_cliente = {Franca, Ribeirão Preto, São Paulo}
Então
R = { (Pedro, Presidente Vargas, Franca),
(Joaquim, Castelo Branco, Ribeirão Preto),
(Maria, Castelo Branco, Ribeirão Preto),
(Daniela, Marginal Tiete, São Paulo)
}
Esta é uma relação entre:
nome_cliente x nome_rua x nome_cidade
Acesse: www.proseando-codigos.rhcloud.com
4. Relações
Todos os dados são representados como Relações.
Uma instância de uma relação, pode ser chamado de tabela.
Cada tabela possui um nome único em todo o banco dados
CodigoMatricola
Nome
Data_Matricola
100
Gabriel
12/01/2002
101
Carla
15/01/2002
102
Rafael
02/02/2002
103
Maria Julia
05/03/2004
104
Juliana
10/05/2005
Acesse: www.proseando-codigos.rhcloud.com
5. Tuplas
Em uma relação uma linha é representada uma instância da relação com
valores definidos, e recebe o nome de TUPLA.
Uma TUPLA é uma linha inteira de informações.
CodigoMatricola Nome
TUPLA
Data_Matricola
Exemplo
100
Gabriel
12/01/2002
101
Carla
15/01/2002
(Pedro da Costa, 20/06/1992, 140.222.215-10)
(Mariana da Silva, 12/10/2000, 120.255.555-06)
(Maria Clara, 03/12/1956, 989.187.111-12)
102
Rafael
02/02/2002
103
Maria Julia
05/03/2004
104
Juliana
10/05/2005
São tuplas da relação PESSOA
Acesse: www.proseando-codigos.rhcloud.com
6. Tupla
Uma Tupla é composta de valores, valores estes que são chamados de
ATRIBUTOS de uma relação.
Exemplos:
Titulo x Diretor x Ano_Lancamento x Duracao
são atributos da relação Filme
Nome x Data_Nascimento x CPF
são atributos da relação Pessoa
Acesse: www.proseando-codigos.rhcloud.com
7. Domínio
Um atributo assumir um valor dentro de um conjunto de valores
possíveis, este conjunto denomina-se por Domínio de atributo
Exemplos:
Temperatura, Atributo da relação Clima só pode assumir valores do
conjunto numérico no intervalo [-90 90]
Estado, atributo da relação Cliente, só pode assumir um valor
dentro do conjunto:
{SP, MG, PR, RJ, SC, BA,..., GO }
Acesse: www.proseando-codigos.rhcloud.com
8. Tuplas e Domínio
A tabela abaixo traz a relação Aluno, cada linha desta relação consistem de
um tupla-3 (a1, a2 e a3), onde:
a1 é o código de matricula do aluno que encontrar-se no domínio D1;
a2 é o nome do aluno matriculado que encontra-se no domínio D2;
a3 é a data de realização da matricula do aluno que encontra-se no
domínio D3.
CodigoMatricola
Assim sendo, Aluno é um
subconjunto dos domínios:
Nome
Data_Matricola
100
Gabriel
12/01/2002
101
Carla
15/01/2002
102
Rafael
02/02/2002
103
Maria Julia
05/03/2004
104
Juliana
10/05/2005
D1 x D2 x D3
Acesse: www.proseando-codigos.rhcloud.com
9. Chave Primaria
Cada relação existente possui uma Chave Primaria, que é um identificador
único, que na maioria das vezes é estabelecido por um atributo como mostra
o exemplo 1, em alguns casos específicos pode ser estabelecido por dois ou
mais atributos ilustrado no exemplo 2.
Exemplo 1:
CODIGO_ALUNO
Exemplo 2:
(CODGO_VENDA, NUMERO_PARCELA), isto significa que para identificar
uma tupla desta tabela é necessário ter o código da venda e do numero
da conta.
Acesse: www.proseando-codigos.rhcloud.com
11. Relacionamento entre relações
Relacionamento de tabelas no modelo relacional.
Exemplo: como descobrir qual curso faz o aluno?
1
Curso
TituloCur
CodCurso
N
Faz
Aluno
Nome
CodAluno
Bloco
DataNasc
Curso
Aluno
CodCurso TituloCur
Bloco
CodAluno
Nome
DataNasc
C1
Ciência da computação Amarelo
100
Gabriel
12/01/1992
C2
Sistema de Informação
Amarelo
101
Carla
15/01/1990
C3
Engenharia Civil
Lilás
102
Rafael
02/02/1985
C4
Administração
Vermelho
103
Maria Julia
05/03/1993
Acesse: www.proseando-codigos.rhcloud.com
12. Chave Estrangeira
Refere-se ao relacionamento de tabelas diferentes em uma banco de dados.
Quando uma tabela se relaciona com outra inclui-se a chave primaria da outra tabela .
Esta coluna é chamada CHAVE ESTRANGEIRA.
Exemplo: NumCurso é chave estrangeira de alunos, que é referencia a chave primaria
codCurso da tabela Curso.
Curso
Aluno
CodCurso TituloCur
Bloco
CodAluno
Nome
DataNasc
NumCurso
C1
Ciência da computação Amarelo
100
Gabriel
12/01/1992
C2
C2
Sistema de Informação
Amarelo
101
Carla
15/01/1990
C4
C3
Engenharia Civil
Lilás
102
Rafael
02/02/1985
C1
C4
Administração
Vermelho
103
Maria Julia
05/03/1993
C1
Acesse: www.proseando-codigos.rhcloud.com
13. Esquema Relacional
A diversas formas de representar um esquema que representa as relações
atributos e chaves de um banco de dados relacional. Veja abaixo algumas
delas.
Exemplos:
Curso
Disciplina
Cod_disc
Titulo
Curso
Curso
Horas
Disciplina
# Cod_curso
# Cod_disc
Titulo
Titulo
Area_conhecimento
Curso (FK)
Duracao
Horas
Acesse: www.proseando-codigos.rhcloud.com
14. Restrições de Integridade
Restrições de Integridade são regras a respeito dos valores que podem
ser armazenados nas relações e que devem ser satisfeitas em todas as
relações do banco de dados.
As principais são:
Restrição de Unicidade de Chave
Restrição de Integridade da Entidade
Restrição de Integridade Referencial
Acesse: www.proseando-codigos.rhcloud.com
15. Modelo Relacional - Restrições
Restrição de UNICIDADE DE CHAVE
Uma chave primaria nunca pode ter o mesmo valor em duas tuplas
diferentes da mesmo relação
Exemplo: Dada uma relação Aluno, o atributo CodAluno que é a chave
primaria, não pode estar em duas tuplas diferentes pois ela perderia sua
identidade.
Aluno
CodAluno
Nome
DataNasc
100
Gabriel
12/01/1992
101
Carla
15/01/1990
102
Rafael
02/02/1985
102
Maria Julia
05/03/1993
Acesse: www.proseando-codigos.rhcloud.com
16. Modelo Relacional - Restrições
Restrição de INTEGRIDADE DA ENTIDADE
A chave primaria de qualquer relação não pode possuir valor nulo em
nem uma pupla da relação, pois sem valor a tupla não pode ser
identificada e por consequência disto ela não poderia ser recuperada.
Aluno
CodAluno
Nome
DataNasc
100
Gabriel
12/01/1992
101
Carla
15/01/1990
null
Rafael
02/02/1985
Acesse: www.proseando-codigos.rhcloud.com
17. Modelo Relacional - Restrições
Restrição de INTEGRIDADE REFERANCIAL
Esta restrição envolve duas relações ela é usada para manter a
consistência entre os dados de tabelas distintas.
Ela especifica que o valor de uma chave estrangeira DEVE EXISTIR na
relação que ela faz referencia.
Exemplo:
Curso
Aluno
CodCurso TituloCur
CodAluno
Nome
CodCurso
C1
Ciência da computação
100
Gabriel
C1
C2
Sistema de Informação
101
Carla
C2
102
Rafael
C3
“C3” não existe que se encontra
nesta tupla não existe em Curso,
infringindo a integridade referencial
Acesse: www.proseando-codigos.rhcloud.com
18. Linguagem de Consulta
A linguagem de consulta é a qual um o usuário pode requisitar
informações do banco de dados e manipular tais informações.
Os SGBDs disponibiliza uma linguagem de consulta que possui um
CONJUNTO DE OPERADORES chamados de comandos para manipular
as relações(tabelas).
Acesse: www.proseando-codigos.rhcloud.com
19. Álgebra Relacional
ÁLGEBRA RELACIONAL é uma linguagem que possui um conjunto de
operações para manipular as relações:
Operações da teoria de conjuntos(matemática): UNIÃO, INTERSEÇÃO,
DIFERENÇA E PRODUTO CARTESIANO.
Operações desenvolvidas especialmente para os bancos de dados
relacionais: SELEÇÃO, PROJEÇÃO E JUNÇÃO.
Acesse: www.proseando-codigos.rhcloud.com
20. Álgebra Relacional
Descrição das operações desenvolvidas para os bancos de dados
relacionais
SELEÇÃO
seleciona um subconjunto de tuplas (registros)
PROJEÇÃO
seleciona um subconjunto de atributos
JUNÇÃO
combina tabelas por atributos em comum
Acesse: www.proseando-codigos.rhcloud.com
21. Álgebra Relacional
SELEÇÃO
seleciona linhas conforme um condição
Curso
Aluno
CodCurso TituloCur
CodMatr
Nome
Ano
NumCurso
C1
Ciência da computação
100
Gabriel
2000
C2
C2
Sistema de Informação
101
Carla
2010
C4
C3
Engenharia Civil
102
Rafael
2013
C1
C4
Administração
103
Maria Julia
2013
C2
CodMatr
Mostra alunos que
entraram em 2013
Nome
Ano
Curso
102
Rafael
2013
C1
103
Maria Julia
2013
C2
Acesse: www.proseando-codigos.rhcloud.com
22. Álgebra Relacional
PROJEÇÃO mostra atributos selecionados
Curso
Aluno
CodCurso TituloCur
CodMatr
Nome
Ano
NumCurso
C1
Ciência da computação
100
Gabriel
2000
C2
C2
Sistema de Informação
101
Carla
2010
C4
C3
Engenharia Civil
102
Rafael
2013
C1
C4
Administração
103
Maria Julia
2013
C2
CodMatr
100
Mostra CodMatr e
Nome do Aluno
Nome
Gabriel
101
Carla
102
Rafael
103
Maria Julia
Acesse: www.proseando-codigos.rhcloud.com
23. Álgebra Relacional
SELEÇÃO + PREJEÇÃO
Mostra atributos selecionados de linhas selecionadas
Curso
Aluno
CodCurso TituloCur
CodMatr
Nome
Ano
NumCurso
C1
Ciência da computação
100
Gabriel
2000
C2
C2
Sistema de Informação
101
Carla
2010
C4
C3
Engenharia Civil
102
Rafael
2013
C1
C4
Administração
103
Maria Julia
2013
C2
Mostra Nome e Curso
de Alunos que
começaram em 2013
Nome
NumCurso
Rafael
C1
Maria Julia
C2
Acesse: www.proseando-codigos.rhcloud.com
24. Álgebra Relacional
SELEÇÃO + PREJEÇÃO
Mostra atributos selecionados de linhas selecionadas
Curso
Aluno
CodCurso TituloCur
CodMatr
Nome
Ano
NumCurso
C1
Ciência da computação
100
Gabriel
2000
C2
C2
Sistema de Informação
101
Carla
2010
C4
C3
Engenharia Civil
102
Rafael
2013
C1
C4
Administração
103
Maria Julia
2013
C2
Mostra Matricola e
Nome de Alunos que o
nome comece com a
letra “G”
CodMatr
Nome
100
Gabriel
Acesse: www.proseando-codigos.rhcloud.com
25. Álgebra Relacional
JUNÇÃO une tabelas por meio de um atributo em comum
Curso
Aluno
CodCurso TituloCur
CodMatr
Nome
Ano
NumCurso
C1
Ciência da computação
100
Gabriel
2000
C2
C2
Sistema de Informação
101
Carla
2010
C3
C3
Engenharia Civil
102
Rafael
2013
C1
Nome
Ano
TitiloCur
Gabriel
2000
Ciência da Computação
Carla
2010
Engenharia Civil
Rafael
2013
Sistema de Informação
Mostra Nome e ano da
tabela alunos Junto com
TituloCurs da tabela
curso(para
ALUNOS.NumCurso =
CURSO.CodCurso)
Acesse: www.proseando-codigos.rhcloud.com
26. Álgebra Relacional
Operações da teoria de conjuntos(matemática):
UNIÃO
AB
INTERSEÇÃO
AB
DIFERENÇA
A–B
PRODUTO CARTESIANO
AxB
Acesse: www.proseando-codigos.rhcloud.com
27. Operadores de Conjuntos
UNIÃO A B (esta em A ou em B – todas as linhas)
ALUNOS com ANO de MATRICOLA < 2013
ALUNOS com CURSO = Administração
Matri
Nome
Ano
Curso
Matri
Nome
Ano
Curso
100
João Silva
2012
Direito
350
Marcela Ribeiro
2013
Administração
120
José Carlos
2011
Direito
200
Carlos Gonçalves
2010
Administração
202
Pedro Ribeiro
2012
Administração
222
Maria Covas
2013
Administração
ALUNO(A) ALUNO(B)
Matri
Mostra Alunos que
começaram antes de
2013 ou que fazem
Administração
Nome
Ano
Curso
100
João Silva
2012
Direito
120
José Carlos
2011
Direito
350
Marcela Ribeiro
2013
Administração
202
Pedro Ribeiro
2012
Administração
222
Maria Covas
2013
Administração
Acesse: www.proseando-codigos.rhcloud.com
28. Operadores de Conjuntos
INTERSEÇÃO A B (esta em A e em B – linha em comum)
ALUNOS com Ano de matricula = 2012
ALUNOS com Curso Direito
Matri
Nome
Ano
Curso
Matri
Nome
Ano
Curso
100
João Silva
2012
Direito
100
João Silva
2012
Direito
200
Pedro Ribeiro
2012
Administração
120
José Carlos
2011
Direito
ALUNO (A) Aluno(B)
Mostra Alunos que
começaram em 2012 e
que fazem Direito
Matri
Nome
Ano
Curso
100
João Silva
2012
Direito
Acesse: www.proseando-codigos.rhcloud.com
29. Operadores de Conjuntos
DIFERENÇA A – B (está em A e não em B – subtração de linhas)
ALUNOS com Ano de matricula = 2012
ALUNOS com Curso Direito
Matri
Nome
Ano
Curso
Matri
Nome
Ano
Curso
100
João Silva
2012
Direito
100
João Silva
2012
Direito
200
Pedro Ribeiro
2012
Administração
120
José Carlos
2011
Direito
ALUNO (A) - Aluno(B)
Mostra Alunos que
começaram em 2012 e
não fazem Direito
Matri
Nome
Ano
Curso
200
Pedro Ribeiro
2012
Administração
Acesse: www.proseando-codigos.rhcloud.com
30. Operadores de Conjuntos
PRODUTO CARTESIANO A x B (combinação de todas as tuplas)
ALUNO
DISCIPLINA
Matri
Nome
Curso
CodigoDisc
Titulo
100
João Silva
Direito
302
Direito Penal
120
José Carlos
Direito
303
Filosofia
ALUNO x DISCIPLINA
Matri
Produto cartesiano:
combinação entre todos
os alunos e todas as
disciplinas
Nome
Curso
CodigoDisc
Titulo
100
João Silva
Direito
302
Direito Penal
100
João Silva
Direito
303
Filosofia
120
José Carlos
Direito
302
Direito Penal
120
José Carlos
Direito
303
Filosofia
Acesse: www.proseando-codigos.rhcloud.com
31. Bibliografia
SILBERSCHATZ, . Modelo Relacional (capítulo 3). Em: Sistema de
Banco de Dados, Makron: 1999.
DATE, C.J. Introdução a Sistemas de Banco de Dados, tradução da
7.ed, Campus: 2000.
TAKAI,O.K.; ITALIANO,I.C.; FERREIRA,J.E. O Modelo de Dados
Relacional (capítulo 5). Em: Introdução a Banco de Dados (apostila).
DCC-IME-USP, 2005
BIAJIZ, M. Modelo Relacional (capítulo 3). Em: Banco de Dados
(apostila). DC-UFSCar, 2001.
Acesse: www.proseando-codigos.rhcloud.com