Você está na página 1de 26

Modelo Relacional

Este material utiliza conteúdos de slides gentilmente cedidos pelo


Prof. Giovani Volnei Meinerz – UTFPR-CP
 Proposta por E. F. Codd em 1970
 Consiste de uma coleção de tabelas, com nome exclusivo
 Consideremos a seguinte modelagem
 A tabela é vista como uma estrutura bidimensional
composta de linhas e colunas
 Cada linha é composta por um conjunto de campos
 Cada coluna representa um atributo, identificado por um
nome (no cabeçalho da tabela)
 Cada intersecção entre linha e coluna representa um
único valor (monovalorado)
 Todos os valores em uma coluna devem se adequar a um
mesmo formato
 A ordem das linhas e das colunas é insignificante para o
SGBD
 Cada tabela deve apresentar um atributo ou combinação
de atributos que identifique cada linha exclusivamente
conhecido como chave
 No modelo relacional, as chaves são importantes, pois
sua utilização garante que cada linha (tupla ou registro)
da tabela seja exclusiva
 Em outras palavras, nenhum par de tuplas em uma
tabela pode ter o mesmo valor para todos os atributos
que compõe a chave
TIPO DE CHAVE DEFINIÇÃO
Atributo (ou combinação de atributos) que identifica
Superchave
exclusivamente cada linha de uma tabela
Superchave de tamanho mínimo (sem atributos
Chave candidata
desnecessários)
Chave candidata escolhida pelo projetista para identificar
Chave primária exclusivamente linhas dentro de uma tabela. Não pode
conter entradas nulas
Atributo (ou combinação de atributos) cujos valores
Chave estrangeira
correspondem aos da chave primária na tabela relacionada
Chave composta Uma chave com vários atributos
Atributo de chave Qualquer atributo que faça parte de uma chave
 Considere a entidade CLIENTE abaixo:
CLIENTE
codigoCliente
nome
cpf
email

 A combinação dos atributos codigCliente, cpf e email


formam uma superchave
 O atributo codigoCliente é uma chave candidata
 O atributo cpf é uma chave candidata
 O atributo email é uma chave candidata
 Qualquer uma das chaves candidatas pode ser escolhida
como uma CHAVE PRIMÁRIA de CLIENTE
 Onde estão as chaves primárias e estrangeira(s)?

 PRO_SIAPE (chave primária da entidade PROFESSOR)


 DEP_CODIGO (chave estrangeira da entidade PROFESSOR)
 DEP_CODIGO (chave primária da entidade DEPARTAMENTO)
 Há chave composta no modelo a seguir?

 SIM. A chave primária de TURMA é composta pelos atributos


de chave:
TUR_CODIGO
TUR_ANO
TUR_SEMESTRE
DIS_CODIGO (é chave estrangeira e também parte da chave primária de
TURMA)
 Na notação Pé de Galinha, por meio do Workbench,
basta definir o atributo chave como PK. Este, passará a
ser precedido por uma representação gráfica na forma de
chave (em amarelo)
 Conjunto de regras que garantem a consistência dos
dados e que são implementadas por meio do SGBD
 Restrições de Integridade Básicas
Integridade de Domínio
Integridade de Vazio
Integridade de Chave
Integridade Referencial
Integridade de Unicidade
Integridade de Entidade
 O programador (desenvolvedor de aplicações) não
precisa implementá-las
 Integridade de Domínio

Define os valores que podem ser assumidos pelos campos de uma


coluna

Faz referência ao tipo do dado. Podem ser agrupados em três grandes


grupos

Strings

Dados numéricos

Dados relacionados com tempo e/ou datas


 Integridade de Domínio (cont.)

STRINGS
Tipo de Dado Descrição
char(n) String de caracteres de tamanho fixo, de 1 a 255. Tamanho n
character(n) especificado pelo usuário.
varchar(n) String de caracteres de tamanho variável, de 1 a 2000 caracteres.
character varying(n) Tamanho n máximo especificado pelo usuário
Character Large Objects, para especificar colunas que possuem
clob
grandes valores de texto. Ex. clob(20M)
Binary Large Objects, para especificar colunas que possuem grandes
blob
valores binários (imagens, áudio). Ex. blob(30G)
 Integridade de Domínio (cont.)
DADOS NUMÉRICOS
Tipo de Dado Descrição

int Apenas valores inteiros


integer Valor mínimo / máximo: -2147483648 / 2147483647

Inteiro pequeno (subconjunto do tipo inteiro)


smallint
Valor mínimo / máximo: -32768 / 32767

Número de ponto fixo com precisão especificada pelo usuário.


numeric(p,d) Consiste em p dígitos, e d dos p dígitos estão à direita da vírgula
decimal(p,d) Ex.: numeric(3,1) - permite armazenar “44,5”, mas não 444,5 e nem
0,32

real
double Número de ponto flutuante de várias precisões
float
 Integridade de Domínio (cont.)

DADOS RELACIONADOS COM TEMPO E/OU DATAS

Tipo de Dado Descrição

date Data de calendário contendo ano, mês e dia <AAAA-MM-DD>

time Hora do dia, em horas, minutos e segundos <HH:MM:SS>

datetime Combinação de date e time <AAAA-MM-DD HH:MM:SS>


 Integridade de Domínio (cont.)
 Define os valores que podem ser assumidos pelos campos de uma coluna
 Faz referência ao tipo do dado. Podem ser agrupados em três grandes grupos
 Strings
 Dados numéricos
 Dados relacionados com tempo e/ou datas
 Integridade de Vazio
 Especifica se os campos de uma coluna podem ou não serem vazios
 Integridade de Chave
 Define que o valor da chave primária deve ser único
 Integridade Referencial
 Define que os valores dos campos que aparecem numa chave estrangeira
devem aparecer na chave primária da tabela referenciada
Esquema Gráfico

Esquema Textual
 Integridade Referencial (cont.)
 Define que os valores dos campos que aparecem numa chave estrangeira
devem aparecer na chave primária da tabela referenciada
 Integridade de Unicidade
 Define que o valor do campo ou campos são únicos
 Integridade de Entidade
 Define que nenhum valor da chave primária pode ser nulo
 Além das Restrições de Integridade, há as Restrições
Semânticas, cuja implementação pode ser necessária
para também garantir a consistência dos dados

 Precisam ser desenvolvidas pelos programadores

 Exemplos
Um empregado do Setor de Finanças não pode ser Médico
Um empregado não pode ter salário maior do que seus chefes

Você também pode gostar