Você está na página 1de 46

Curso de Ciência da Computação

Disciplina:
Banco de Dados

Abordagem Relacional
Modelo Relacional de Dados

Prof. Dr. Robson Ferreira


Abordagem Relacional
Modelo Relacional de Dados

Introduzido por Codd em 1970 (IBM / Califórnia).


Modelo com uma sólida base formal:
▪ Teoria dos conjuntos.

Conceitos Simples:
▪ Relações, Tuplas, Atributos, Domínios e Chaves.

Não considera aspectos físicos de armazenamento, acesso e


desempenho.
Base para a maioria dos SGBDs que dominam o mercado.
Abordagem Relacional
Modelo Relacional de Dados

Composição de um Banco de Dados Relacional


O universo de um banco de dados relacional é um conjunto finito,
não vazio, de suas relações.

O esquema é o conjunto dos esquemas das relações que o


formam, isto é:
R1 (A11, A12, ........., A1n)
R2 (A21, A22, ........., A2n)
...
Rm (Am1, Am2, ......., Amn)
Abordagem Relacional
Modelo Relacional de Dados

Composição de um Banco de Dados Relacional

Tabelas
o compostas de
▪ Linhas
▪ Colunas
▪ Chaves primárias

o relacionadas através de
▪ Chaves estrangeiras
Abordagem Relacional
Modelo Relacional de Dados

Tabela – Conceitos
Tabela é um conjunto não ordenado de linhas
(tuplas, na terminologia acadêmica).

tabela ou relação

Emp:
CodigoEmp Nome CodigoDepto CategFuncional
E5 Souza D1 C5
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 —

Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Tabela – Conceitos
nome da tabela

Emp:
CodigoEmp Nome CodigoDepto CategFuncional
E5 Souza D1 C5
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 —

Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Tabela – Conceitos
Emp:
CodigoEmp Nome CodigoDepto CategFuncional
E5 Souza D1 C5
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 —

linha ou tupla

Não é possível referenciar linhas de uma tabela por


posição.
Não existem linhas duplicadas.

Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Tabela – Conceitos

coluna ou atributo
Emp:
CodigoEmp Nome CodigoDepto CategFuncional
E5 Souza D1 C5
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 —

Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Tabela – Conceitos
nome de campo
ou
nome de atributo
Emp:
CodigoEmp Nome CodigoDepto CategFuncional
E5 Souza D1 C5
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 —

Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Tabela – Conceitos
valor de campo
ou
valor de atributo
Emp:
CodigoEmp Nome CodigoDepto CategFuncional
E5 Souza D1 C5
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 —

Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Terminologia – Resumindo

Atributo
ou Coluna
Nome da coluna,
do Campo ou do
Atributo Matrícula Nome CPF DataNasc Endereço

Cardinalidade
Tupla, Linha ou
Registro

Grau da relação

Relação ou Tabela
Abordagem Relacional
Modelo Relacional de Dados

Terminologia – Resumo

Relação: é uma tabela.

Tupla: é uma linha ou registro da tabela.

Atributo: é um campo (coluna da tabela).

Domínio: tipo de dado, formato de um atributo e


conjunto de valores possíveis do atributo.
Abordagem Relacional
Modelo Relacional de Dados

Características das Tabelas – Resumo


Linhas de uma tabela não estão ordenadas.
Valor de campo:
▪ Atômico.
▪ Monovalorado.
Acesso por quaisquer critérios envolvendo os campos de uma ou mais linhas.
Programadores escrevem consultas sem considerar 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.
Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Chave
Conceito usado para especificar restrições de integridade
básicas de um SGBD relacional.

Três tipos:
▪ Chave Candidata
o Candidate Key
▪ Chave Primária
o Primary key (PK)

▪ Chave Alternativa
▪ Chave Estrangeira
o Foreign Key (FK)
Abordagem Relacional
Modelo Relacional de Dados

Chaves Candidatas – Candidate Key


Possui as mesmas propriedades que a chave primária.
Qual escolher para Chave Primária?
Escolhe-se para chave primária aquela com o atributo único
ou menor número de caracteres.

Emp:
Chave CodigoEmp Nome CodigoDepto CPF Chave
Candidata E5 Souza D1 132.121.331-20 Candidata
E3 Santos D2 891.221.111-11
E2 Silva D1 341.511.775-45
E1 Soares D1 631.692.754-88
Abordagem Relacional
Modelo Relacional de Dados

Chave Primária – Primary Key (PK)


É um atributo (coluna) ou uma combinação de atributos (colunas)
cujos valores distinguem uma linha das demais dentro de uma
tabela.

Chave Primária Chave Primária

Emp: Dependente:
CodigoEmp Nome CodigoDepto CPF CodigoEmp NoDepen Nome Tipo DataNasc
E5 Souza D1 132.121.331-20 E1 1 João Filho 12/12/91
E3 Santos D2 891.221.111-11 E1 2 Maria Esposa 01/01/50
E2 Silva D1 341.511.775-45 E2 1 Ana Esposa 05/11/55
E1 Soares D1 631.692.754-88 E6 1 Paula Esposa 04/07/60
Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: E6 2 José Filho 03/02/85
Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Chave Primária – Primary Key (PK)


Chaves primárias (em inglês, Primary keys ou "PK"), sob o ponto de
vista de um banco de dados relacional, referem-se aos conjuntos de um
ou mais atributos, cujos valores, nunca se repetem na mesma tabela.
Desta forma, podem ser usadas como um índice de referência para
criar relacionamentos com as demais tabela do banco de dados (daí
vem o nome banco de dados relacional);
Portanto, uma chave primária nunca pode ter valor nulo, nem
repetição;
atributo(s) cujo (conjunto de) valor(es) identifica(m) unicamente uma
tupla em uma relação.
Há unicidade de valores na(s) coluna(s) que compõe a chave primária.
Abordagem Relacional
Modelo Relacional de Dados

Chave Alternativa
chave candidata que não foi escolhida para ser
chave primária

Chave Chave
Primária Alternativa
Emp:
CodigoEmp Nome CodigoDepto CPF
E5 Souza D1 132.121.331-20
E3 Santos D2 891.221.111-11
E2 Silva D1 341.511.775-45
E1 Soares D1 631.692.754-88
Abordagem Relacional
Modelo Relacional de Dados

Chave Alternativa ou Única (SQL)


Mais de uma coluna ou combinações de colunas podem servir para distinguir
uma linha das demais.
Uma das colunas (ou combinação de colunas) é escolhida como chave primária.
As demais colunas ou combinações são denominadas chaves alternativas.
▪ (UNIQUE KEY em SQL)
Emp:
CodigoEmp Nome CodigoDepto CategFuncional CPF
E1 Souza D1 - 132.121.331-20
Chave E2 Santos D2 C5 891.221.111-11 Chave
Primária E3 Silva D2 C5 341.511.775-45 Alternativa
E5 Soares D1 C2 631.692.754-88

Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Chave Estrangeira – Foreign Key (FK)


É um atributo (coluna) ou uma combinação de atributos (colunas),
cujos valores aparecem necessariamente na chave primária de uma
tabela.
Mecanismo que permite a implementação de
relacionamentos em um banco de dados relacional

Depto: Emp:
CodigoDepto NomeDepto CodigoEmp Nome CodigoDepto CategFuncional CPF
D1 Compras E1 Souza D1 — 132.121.331-20
D2 Engenharia E2 Santos D2 C5 891.221.111-11
D3 Vendas E3 Silva D2 C5 341.511.775-45
E5 Soares D1 C2 631.692.754-88
Chave Primária
Tabela “Depto:” Chave Primária Chave Estrangeira em
Fonte: HEUSER, Carlos Alberto. Projeto de banco de dados – 6. ed. – Tabela “Emp:” relação a Tabela “Depto:”
Porto Alegre: Bookman, 2009 – Cap. 4.
Abordagem Relacional
Modelo Relacional de Dados

Chave Estrangeira – Foreign Key (FK)

Auto relacionamento
PK FK

CodFunc Nome Endereço CodGerente

1 Maria Av. Joaquim, 2 1

3 João Oscar Freire, 10 1

4 Jonas Anita Garibaldi, 12 3

7 Silvia Carlos Gomes, 50 3

chave estrangeira referencia a chave primária da


própria tabela
Abordagem Relacional
Modelo Relacional de Dados

Restrições

Operação Tabela Restrição


o valor da chave estrangeira deve
de uma linha na tabela que contém
Inclusão aparecer na coluna da chave
a chave estrangeira.
primária referenciada ou ser nulo.
o novo valor de uma chave
estrangeira deve aparecer na coluna
Alteração do valor da chave estrangeira.
da chave primária referenciada ou
ser nulo.
de uma linha da tabela que contém na coluna chave estrangeira não
Exclusão a chave primária referenciada pela deve aparecer o valor da chave
chave estrangeira. primária que está sendo excluída.
Abordagem Relacional
Modelo Relacional de Dados

Atributo – Coluna

Um item de dado do Banco de Dados (BD).


Possui um nome e um domínio.
Exemplos Emp:
▪ MatrEmp: integer MatrEmp Nome TelCelular DataAdmissão CPF
▪ Nome: varchar(20) 201510 Souza (11)98160-0542 01/10/2015 132.121.331-20
▪ TelCelular: char(14) 201604 Santos (11)99100-7854 10/01/2016 891.221.111-11
▪ DataAdmissão: date 201001 Silva (11)97835-7004 28/02/2010 341.511.775-45
631.692.754-88
▪ CPF: char(14) 201902 Soares (11)98840-1026 17/07/2019
Abordagem Relacional
Modelo Relacional de Dados

Atributo – Coluna – Domínio

Conjunto de valores permitidos para um dado.

Possui uma descrição física e outra semântica.

A descrição física identifica o tipo e o formato dos valores


que compõem o domínio.
▪ exemplo: Data de Nascimento – Date ou DateTime ou TimeStamp.

A descrição semântica ajuda na interpretação de seus


valores.
Abordagem Relacional
Modelo Relacional de Dados

Atributo – Coluna – Domínio


Domínio
Nome do Tipo Formato Semântica
Atributo
Matrícula do funcionários. Composta pelo
MatrEmp Integer 9(6) = 999999 ano da contratação (9999) e um sequência
de 2 dígitos.
Nome Varchar(50) A(50) Nome próprio e completo dos funcionários.
TelCelular Char(10) (99)99999-9999 Números de telefones válidos no Brasil.
Data de admissão do funcionários na
DataAdmissão Date DD/MM/AAAA empresa. Data da assinatura do contrato de
trabalho.
Número de CPF do funcionários e validado
CPF Char(14) 999.999.999-99 através da conferência do digito verificador
(2 últimas dígitos).
Descrição física Descrição semântica
Abordagem Relacional
Modelo Relacional de Dados

Restrições de Integridade de Dados

São regras que devem ser obedecidas em todos os estados


válidos (consistência) da base de dados.

Garantem que os dados refletem corretamente a realidade


modelada:
▪ Integridade de Entidade
▪ Integridade de Domínio
▪ Integridade Referencial
▪ Integridade Semântica
Abordagem Relacional
Restrições de Integridade de Dados

Restrições de Integridade de Entidade


Estabelece que cada tabela deve ter uma chave primária e que
a coluna ou as colunas escolhidas para serem a chave
primária devem ser únicas e não nulas

Emp:
MatrEmp Nome TelCelular DataAdmissão CPF
A chave primária 201510 Souza (11)98160-0542 01/10/2015 132.121.331-20
representa uma 201604 Santos (11)99100-7854 10/01/2016 891.221.111-11
entidade na base 201001 Silva (11)97835-7004 28/02/2010 341.511.775-45
de dados 201902 Soares (11)98840-1026 17/07/2019 631.692.754-88
Abordagem Relacional
Restrições de Integridade de Dados

Restrições de Integridade de Domínio


Estabelece o conjunto de valores que
um atributo pode assumir
Primary key – chave primária – valor único para cada ocorrência.
Foreign Key – chave estrangeira conferida contra a chave primária.
Check – Usando para fazer checagem de dados na tabela:
▪ Ex: Se o sexo é M ou F – datas de eventos que sejam dias úteis.
Default – Define um valor padrão para o campo da tabela.
Not Null – Define que o campo não pode receber nulo.
Unique – Define que o campo é único e não pode receber valores repetidos:
▪ Ex: CPF.
Restrições de Integridade
de Domínio
(CHECK – BETWEEN)
Negócios precisa
trabalhar com datas que
sejam dias úteis
(excluídos com
os sábados e
domingos).

Comandos
inválidos
Comando
válidos

01_TestaDiaUtil_1 - CHECK-BETWEEN - PROC


Restrições de Integridade
de Domínio
(CHECK – IN)
Negócios precisa
trabalhar com datas que
sejam dias úteis
(excluídos com
os sábados e
domingos).

Comandos
inválidos
Comando
válidos

02_TestaDiaUtil_2 - CHECK-IN - PROC


Abordagem Relacional
Restrições de Integridade de Dados

Restrições de Integridade Referencial


Garante que os relacionamentos são válidos.
Os valores que aparecem na FK devem aparecer na PK da
relação referenciada.
Chave
Aluno
Estrangeira Curso
Nome CPF Matricula CodCurso CodCurso Descrição
João 757.537.459-29 12345 1 1 Administração
Pedro 123.456.789-00 67890 2 2 Arquitetura
Maria 987.654.321-12 54321 1 3 Direito

Chave Chave Primária


Chave Primária
Alternativa Tabela Curso
Tabela Aluno
Tabela Aluno
Abordagem Relacional
Modelo Relacional de Dados

Esquema de representação Integridade Referencial

Aluno (Matricula, Nome, CPF, CodCurso)


CodCurso referencia Curso
Curso (CodCurso, Descrição)

Chave
Aluno Estrangeira Curso
Nome CPF Matricula CodCurso CodCurso Descrição
João 757.537.459-29 12345 1 1 Administração
Pedro 123.456.789-00 67890 2 2 Arquitetura
Maria 987.654.321-12 54321 1 3 Direito
Chave Alternativa Chave Primária Chave Primária
Tabela Aluno Tabela Aluno Tabela Curso
Abordagem Relacional
Restrições de Integridade de Dados

Restrições de Integridade Semântica


Há muitas outras restrições de integridade que não se
encaixam nas categorias básicas e não podem ser declaradas
através da DDL (Data Definition Language).
Essas restrições são chamadas de restrições semânticas (ou
regras de negócio).
Exemplos de restrições semânticas:
▪ Caso 01: Contagem de prazos em dias úteis (ano bissexto).
▪ Caso 02: Nenhum evento pode ocorrer em sábados, domingos ou feriados.
▪ Caso 03: Um funcionário não pode ter o salário maior que seu superior
imediato (auto relacionamento).
Abordagem Relacional
Restrições de Integridade de Dados

Restrições de Integridade Semântica


A implementação das regras de Integridade Semântica
necessitam de programação.
No nível do SGBD: Programação em
▪ Store Procedure. linguagem transacional do
Gerenciador de Banco de
▪ Function.
Dados
▪ Trigger.

No nível das aplicações.


Abordagem Relacional
Restrições de Integridade de Dados

Restrições de Integridade Semântica


No nível do SGBD

2º Caso: Nenhum evento


1º Caso: Contagem pode ocorrer em sábados
de prazos em dias ou domingos
úteis Se a data do evento cair no
Negócios precisa sábado ou domingo deverá
calcular a diferença ser transferir para a próxima
em dias úteis entre segunda-feira.
duas datas.
Integridade
Semântica
No nível do SGBD
(Caso 01)
▪ Store Procedure MySQL.
▪ Para popular (inserir) na
tabela “dias_uteis” todos
os dias úteis do ano
informado.
▪ Inclui as datas de segunda
a sexta-feira.

▪ Pode-se utilizar a tabela


“dias_uteis” para calcular
o número de dias úteis
entre duas datas
informadas.
03_PrazoDiasUteis - DDL - DML - PROC
Integridade
Semântica
No nível do SGBD
(Caso 02)
▪ Trigger no MySQL.
▪ Antes da efetivação da
inclusão testa se o
conteúdo da data que será
incluído no Banco de
Dados é sábado ou
domingo.
▪ Se for adiciona o número
de dias necessários para
jogar para segunda-feira.
▪ Garante que não entrará
datas que sejam sábado e
domingo no Banco de
Dados.
04_VerificaDiaUtil - DDL - DML - TRIGGER
Abordagem Relacional
Caso 03: Um funcionário não pode ter o salário maior que seu superior imediato

Maria
Diretora
(1 – R$ 10.000,00)

Pedro
Assessor
(6 – R$ 6.500,00)

João Carla
Gerente Vendas Ger. Manutenção
(3 – R$ 8.250,00) (2 – R$ 7.600,00)

Jonas Cristina
Vendedor Pl. Eletricista Sr.
(4 – R$ 5.900,00) (5 – R$ 6.000,00)

Silvia Rosana
Vendedor Jr. Eletricista Jr.
(7 – R$ 4.850,00) (8 – R$ 4.800,000)

05_VerificaSalario - DDL - DML - PROC


Abordagem Relacional
Caso 03: Um funcionário não pode ter o salário maior que seu superior imediato

Maria
Viola regra de negócio. Necessário Diretora
(1 – R$ 10.000,00)
desenvolvimento para garantir a
integridade do Banco de Dados Pedro
Assessor
(6 – R$ 6.500,00)

João Carla
Gerente Vendas Ger. Manutenção
(3 – R$ 8.250,00) (2 – R$ 7.600,00)

Jonas Cristina
Vendedor Pl. Eletricista Sr.
(4 – R$ 5.900,00) (5 – R$ 6.000,00)

O próprio SGBD garante a integridade


Silvia Rosana
referencial e não permite a inclusão. Vendedor Jr. Eletricista Jr.
(7 – R$ 4.850,00) (8 – R$ 4.800,000)

05_VerificaSalario - DDL - DML - PROC


Integridade
Semântica
No nível do SGBD
(Caso 03)

▪ Store Procedure no MySQL.

▪ Verifica se o salário do
funcionário novo (que está
sendo incluído) é menor que
o salário do seu chefe.

▪ Retorna um resultado
booleano – verdadeiro ou
falso.

viola regra
Comando
Comando
não viola

05_VerificaSalario - DDL - DML - PROC


Abordagem Relacional
Restrições de Integridade de Dados

Inserção (Insert)
Insere linhas em uma tabela
Pode violar 3 restrições de integridade:
1. Integridade de Domínio:
Ex.: Inserir caracteres em atributo numérico.

2. Integridade de Entidade ou de Chave:


Ex.: Inserir mais de uma vez a mesma matricula ou CPF.

3. Integridade Referencial:
Ex.: quando o valor da FK refere-se a uma tupla que não existe na relação
referenciada.
Abordagem Relacional
Restrições de Integridade de Dados

Exclusão (Delete)
Exclui linhas de uma tabela
Pode violar :
1. Integridade referencial: se a linha ou tuple que está
sendo excluída está referenciada por uma FK de
outra tabela.
A exclusão do Curso 1, implica CodCurso Descrição
quebra de integridade referencial. 1 Administração
Pois, teremos aluno matriculados 2 Arquitetura
em curso inexistente. 3 Direito
Nome CPF Matricula CodCurso
João 757.537.459-29 12345 1
Pedro 123.456.789-00 67890 2
Maria 987.654.321-12 54321 1
Abordagem Relacional
Restrições de Integridade de Dados

Atualização (Update)
Altera os valores de atributos nas linhas existentes
Pode violar as seguintes regras de integridade:
1. Domínio para atributos que não são chave.
2. Entidade e Chave Primária e entidade.
3. Integridade Referencial.
Abordagem Relacional
SGBD - Transações

ATOMICIDADE:
Uma transação pode conter vários comandos.
Propriedades das Transações Propriedade do tudo-ou-nada. Ou a transação é
no SGBD executada inteira (todos os seus comandos com sucesso
ou nenhuma de suas ações é executada).
CONSISTÊNCIA:
A transação cria um novo estado válido dos dados ou em
caso de falha retorna todos os dados ao seu estado
antes que a transação foi iniciada.
ISOLAMENTO:
Uma transação em andamento mas ainda não validada
deve permanecer isolada de qualquer outra operação, ou
seja, garantimos que a transação não será interferida por
nenhuma outra transação concorrente.
DURABILIDADE OU PERSISTÊNCIA:
Uma vez que a transação completa seu trabalho, seus
efeitos têm garantia de serem refletidos no BD,
independente do que possa ocorrer com o mesmo a
seguir.
Abordagem Relacional
SGBD - Transações
Controle de concorrência e de transação
Unidade Lógica de Trabalho ou
Logical Unit of Work (LUW)

Transação de transferência de saldo bancário


Consulta e atualizações do Banco de Dados
Comandos de SELECT, INSERT, DELETE E UPDATE
Início da Fim da
LUW LUW

1 2 3
estado de Consulta saldo da conta Debita R$ 500,00 da conta Credita R$ 500,00 na conta estado de
consistência R$ 1.200,00 pagadora que fica com saldo recebedora consistência
de R$ 700,00

Commit Work
Rollback work = Reversão do trabalho
Caso ocorra alguma falha numa das fases de atualização (Efetivação do
Trabalho)

Uma transação leva o DB de um estado de consistência a outro estado de consistências.


Elaborado por Prof. Robson Ferreira
Disciplina
Banco de Dados

Abordagem Relacional
Modelo Relacional de Dados

Obrigado

Prof. Dr. Robson Ferreira

Você também pode gostar