25
©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 1 Abordagem relacional Capítulo 4

Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

Embed Size (px)

Citation preview

Page 1: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 1

Aborda gem relacional

Capítulo 4

Page 2: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 2

Aborda gem Relacional

• Abordagem de modelagem de dados usada nossistemas de gerência de banco de dados do tiporelacional

• Modelagem a nível lógico e não conceitual

• Aqui apresentados– conceitos necessários à compreensão do projeto

de bancos de dados relacionais

Page 3: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 3

Composi ção de um Banco de DadosRelacional

• Tabelas– compostas de

• Linhas

• Colunas

• Chaves primárias– relacionadas através de

• Chaves estran geiras

Page 4: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 4

Terminolo gias

tabela

valor de atributovalor de campo

atributocoluna

tuplalinha

relação

acadêmicaprofissional

Page 5: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 5

Tabelas

EmpCódigoEmp Nome CodigoDepto CategFuncional

E5 Souza D1 C5E3 Santos D2 C5E2 Silva D1 C2E1 Soares D1 —

Coluna(atributo)

valor do campo(valor do atributo)

nome do campo(nome do atributo)

linha (tupla)

Page 6: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 6

Características de tabelas

• Linhas de uma tabela não estão ordenadas

• Valor de campo– atômico– monovalorado

Page 7: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 7

Acesso a tabelas

• Acesso por quaisquer critérios envolvendo oscampos de uma ou mais linhas

• Programadores escrevem consultas semconsiderar a existência de caminhos de acesso

• Caminho de acesso:– estrutura auxiliar (índice, cadeia de ponteiros,...)– acelera a recupera ção de registros por

determinados critérios– evita a leitura exaustiva de todos registros de um

arquivo

Page 8: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 8

Chaves

• Conceito usado para especificar restri ções deintegridade básicas de um SGBD relacional

• Três tipos– chave primária– chave alternativa– chave estrangeira

Page 9: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 9

Chave primária

Uma chave primária é uma coluna ou umacombinação de colunas cujos valores

distinguem uma linha das demais dentrode uma tabela

Uma chave primária é uma coluna ou umacombinação de colunas cujos valores

distinguem uma linha das demais dentrode uma tabela

Page 10: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 10

Chave primária

DependenteCódigoEmp NoDepen Nome Tipo DataNascE1 01 João Filho 12/12/91E1 02 Maria Esposa 01/01/50E2 01 Ana Esposa 05/11/55E6 01 Paula Esposa 04/07/60E6 02 José Filho 03/02/85

chave primária

Page 11: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 11

Chave estran geira

• Uma coluna ou uma combina ção de colunas,cujos valores aparecem necessariamente nachave primária de uma tabela

• Mecanismo que permite a implementa ção derelacionamentos em um banco de dadosrelacional

Page 12: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 12

CodigoDepto em EMP é uma chave estrangeira em relação

a tabela DEPTO

Chave estran geira

CodigoDepto NomeDeptoD1 ComprasD2 EngenhariaD3 Vendas

CodigoEmp Nome CodigoDepto CategFuncional CICE1 Souza D1 - 132.121.331-20E2 Santos D2 C5 891.221.111-11E3 Silva D2 C5 341.511.775-45E5 Soares D1 C2 631.692.754-88

EMP

DEPTO

Page 13: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 13

Chave estran geiravalida ção pelo SGBD (1)

• Quando da inclusão de uma linha na tabela quecontém a chave estrangeira– o valor da chave estrangeira deve aparecer na

coluna da chave primária referenciada

• Quando da altera ção do valor da chaveestrangeira– o novo valor de uma chave estrangeira deve

aparecer na coluna da chave primária referenciada

Page 14: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 14

Chave estran geiravalida ção pelo SGBD (2)

• Quando da exclusão de uma linha da tabela quecontém a chave primária referenciada pela chaveestrangeira– na coluna chave estrangeira não deve aparecer o

valor da chave primária que está sendo excluída

Page 15: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 15

Chave estran geira na mesma tabela

EmpCódigoEmp Nome CodigoDepto CodigoEmpGerenteE5 Souza D1E3 Santos D2 E5E2 Silva D1 E5E1 Soares D1 E2

Chave estrangeirareferencia chave primária naprópria tabela

Page 16: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 16

Chave alternativa

• Mais de uma coluna ou combina ções de colunaspodem servir para distinguir uma linha dasdemais

• Uma das colunas (ou combina ção de colunas) éescolhida como chave primária

• As demais colunas ou combina ções sãodenominadas chaves alternativas

Page 17: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 17

Chave alternativa

EmpCodigoEmp Nome CodigoDepto CategFuncional CICE1 Souza D1 - 132.121.331-20E2 Santos D2 C5 891.221.111-11E3 Silva D2 C5 341.511.775-45E5 Soares D1 C2 631.692.754-88

chave alternativa

Page 18: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 18

Domínio de coluna

Conjunto de valores que podem aparecerem uma coluna (atributo)

Conjunto de valores que podem aparecerem uma coluna (atributo)

Page 19: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 19

Valor vazio

• Um valor de campo pode assumir o valorespecial vazio (“ null ” em inglês)

• Colunas nas quais não são admitidos valoresvazios são chamadas de colunas obrigatórias

• Colunas nas quais podem aparecer camposvazios são chamadas de colunas opcionais

• Abodagem relacional– todas colunas que compõem a chave primária

devem ser obrigatórias– demais chaves podem conter colunas opcionais

Page 20: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 20

Restri ções de inte gridade

• Objetivo primordial de um SGBD– garantir a integridade de dados.

• Para garantir a integridade de um banco de dados– SGBD oferecem o mecanismo de restri ções de

integridade

• Uma restri ção de integridade é uma regra deconsistência de dados que é garantida pelopróprio SGBD

Page 21: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 21

Restri ções de inte gridadebásicas

• Integridade de domínio

• Integridade de vazio

• Integridade de chave

• Integridade referencial

• Restri ções acima– garantidas automaticamente por um SGBD

relacional

• Não é exigido que o programador escrevaprocedimentos para garanti-las explicitamente

Page 22: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 22

Restri ções de inte gridadesemânticas

• Há muitas outras restri ções de integridade quenão se encaixam nas categorias básicas

• Essas restri ções são chamadas de restri çõessemânticas (ou regras de negócio )

• Exemplos de restri ções semânticas:– Um empregado do departamento denominado

“Finan ças” não pode ter a categoria funcional“Engenheiro”.

– Um empregado não pode ter um salário maior queseu superior imediato.

Page 23: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 23

Especifica ção de banco de dadosrelacional

• A especifica ção de um banco de dados relacional(chamada de esquema do banco de dados) deveconter no mínimo a defini ção do seguinte:– Tabelas que formam o banco de dados– Colunas que as tabelas possuem– Restri ções de integridade

Page 24: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 24

Exemplo de esquemade modelo relacional

Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)

CodigoDept referencia Dept

Dept (CodigoDepto,Nome)

sublinhado indica chave primária

definição dechave estrangeira

Page 25: Capítulo 4 - Posselt, E. L. ·  · 2009-05-30sql selectemp.nome from emp, dept where dept.nome like “computaÇÃo” and emp.codigodepto = dept.codigodepto and emp. categfuncional=“programador

©Carlos A. Heuser - Transparências para uso com o livro Projeto de Banco de Dados, Ed. Sagra&Luzzatto, Porto Alegre, 1999 25

Consulta à base de dadosSQL

SELECTEMP.NOME

FROM EMP, DEPT

WHERE DEPT.NOME LIKE “COMPUTAÇÃO” AND

EMP.CODIGODEPTO = DEPT.CODIGODEPTO AND

EMP. CATEGFUNCIONAL=“PROGRAMADOR”