Escolar Documentos
Profissional Documentos
Cultura Documentos
Modelo Relacional
Valéria Pequeno
Fases do Projeto de
Desenvolvimento de uma BD
• Faz-se entrevistas com o utilizador
REQUISITOS a fim de perceber o que este
deseja. Criação da documentação
do projeto
1
30/10/20
Modelo Relacional
• Introduzido por Edward Codd em 1970, no paper:
• “A Relational Model for Large Shared Data Banks”, Communications
of the ACM, June 1970
• É baseado no conceito de relações
• Uma relação é um conceito matemático baseado na ideia de
conjuntos
• Neste modelo começamos a nos preocupar:
• Em como os dados devem ser armazenados
• Em como criaremos os relacionamentos do modelo conceitual
• A escolher o SGBD que será utilizado
• O tipo de dados para cada atributo
Modelo Relacional
• Objetiva representar os dados na forma organizada de
esquemas de relações (ou relação), cada uma contendo um
nome único
• Relação é o principal conceito no modelo relacional
• Cada relação é composta por:
• Tuplos
• Atributos
• Restrições de integridade
• Chave Primária
• Chave Estrangeira
2
30/10/20
Relação
• É uma lista de atributos contendo zero ou mais tuplos
Atributo
Relação
• Relação: Aluno Nome do
Atributos
Valor do atributo
• Cada atributo da relação tem um nome que dá indicação do
significado dos itens de dados naquele atributo
• Grau de uma relação: número de atributos de uma relação
3
30/10/20
Relação
• Cada tuplo representa um conjunto de factos sobre uma dada
entidade (instância) da relação
• Cardinalidade de uma relação: número de tuplos de uma
relação
• Representação:
• Nome da relação, seguida dos seus atributos entre parêntesis
• O tipo do atributo também deve aparecer no modelo relacional
• Exemplo:
Exercício 1
• Qual o grau e a cardinalidade de cada relação abaixo?
Curso Departamento
codCurso Nome CodDep codDep Nome
010 LEI A A Tecnologia
011 IG A B Saúde
013 MM B C Humanas
014 LEB B E Social
Aluno
número Nome Dt_ingresso Curso BI Endereço Depto
4
30/10/20
Tipos de Dados
• Pode ser agrupados em três conjuntos
1. Tipos de texto (Strings)
2. Tipos numéricos (inteiros e decimais)
3. Tipos de datas (temporais)
• Exemplos de tipos de dados de texto (do Oracle)
• Varchar2: Sequencia de caracteres alfanuméricos de tamanho
variável com limite de 4000 Bytes
• Varchar semelhante ao Varchar2, mas recomendado pela Oracle
para não ser usado
• Char: Armazena caracteres alfanuméricos de tamanho 1 até 255.
Possui comprimento fixo
Tipos de Dados
• Exemplos de tipos de dados numéricos (do Oracle)
• Number[(precisão,escala)]: Representa um número que pode variar
entre 1 e 38 posições e a escala entre 84 e 127 posições.
• Para valores inteiros a escala deve ser 0
• Precisão indica o tamanho do número que se deseja armazenar
• Escala representa a quantidade de casas decimais
• Exemplo: Number(6,2) guarda um número com tamanho máximo de 6
sendo que 2 são casas decimais
Number(6) guarda um número inteiro (sem cartas decimais)
• Integer: tipo de dados para números inteiros (equivalente ao
Number, com escala zero)
• SmallInt: equivale ao number, mas ocupa metade do espaço da
memória
• Float: tipo de dados para armazenar números reais (ponto
flutuante)
10
5
30/10/20
Tipos de Dados
• Exemplos de tipos de dados para datas (do Oracle)
• Date: Permite armazenar datas que vão de 1 de Janeiro de 4712 AC à
31 de Dezembro de 9999 DC
• Os valores armazenados incluem século, ano, mês, dia, hora, minuto e
segundo
• TIMESTAMP: Similar ao tipo DATE, mas com uma maior precisão para
segundos
• Outros tipos de dados:
• Interval
• Blob
• Clob
• Nvarchar2
• Double
• Mais informações em:
https://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_eleme
nts001.htm#SQLRF50950
11
Domínio de um Atributo
• Conjunto de valores que podem aparecer em um atributo
• Importante:
• Cada domínio está associado a um tipo de dados
• Exemplo: morada é do tipo de dados texto.
12
6
30/10/20
13
Cantor
Caetano Veloso Antonio Zambujo
Mundo
Roberto Leal fechado
Sandra de Sá Marisa
14
7
30/10/20
Restrições de Integridade
• Restrições de integridade condicionam os valores dos tuplos
na BD, verificando que qualquer operação permitida não pode
deixar a BD com valores incorretos
• 1º grupo (associado ao modelo relacional):
• Não podem haver tuplos duplicados numa relação
• Na prática: SGBDs relacionais admitem duplicados
• 2º grupo (associado ao esquema da relação):
• Restrições de domínio: os valores de um atributo tem que
obrigatoriamente pertencer ao domínio do mesmo
• Restrições de chaves
• 3º grupo (associado a regras de negócio):
• Alunos não podem ter idade inferior a 18 anos
15
Restrições de Integridade -
Chave Primária
• Super-chave: é um conjunto de um ou mais atributos que
identificam univocamente cada tuplo da relação
• Chave candidata: é uma super-chave minimal
• Se retirarmos qualquer atributo da chave ela deixa de identificar
univocamente os tuplos da relação
• Chave primária é uma chave candidata que é escolhida para
ser a chave da relação
CodigoAluno Nome BI Data_de_nasc Super-
1001 João 987345222 01/09/1974 chave
16
8
30/10/20
Exercício 2
• Identifique todas as possíveis super-chaves da relação abaixo:
Aluno
17
19
9
30/10/20
Restrições de Integridade -
Chave Estrangeira
• É um atributo ou conjunto de atributos que permitem o
relacionamento entre relações de modo a manter a
integridade referencial
• Integridade referencial:
• Os valores de uma chave estrangeira devem aparecer
obrigatoriamente como chave primária da relação a que ela está
relacionada
• A chave estrangeira nunca fará referência a um atributo que não
seja uma chave primária
20
Restrições de Integridade -
Chave Estrangeira
• Exemplo:
Aluno
Chave
CodigoAluno Nome BI codCurso
estrangeira
1001 João 987345222 010
1002 Pedro 223344556 010
Curso
1003 Maria 223345566 null
codCurso Nome
010 LEI
011 IG
• O valor da chave estrangeira é o valor da chave primária
012 ouLI é
NULL
• Uma chave estrangeira pode fazer parte de uma chave
primária
21
10
30/10/20
Restrições de Integridade -
Chave Estrangeira
• No modelo relacional é a chave estrangeira que especifica o
relacionamento entre as relações
• Através da chave estrangeira entre aluno e curso conseguimos
determinar, por exemplo, que o João e o Pedro estão a tirar o
curso LEI
CodigoAluno Nome BI codCurso
1001 João 987345222 010
Chave
estrangeira
1002 Pedro 223344556 010
1003 Maria 223345566 012
codCurso Nome
010 LEI
011 IG
012 LI
22
Restrições de Integridade -
Chave Estrangeira
• Deve ser mantida quando existem:
• modificações nos valores dos atributos da chave primária ou
• remoções de tuplos na relação referenciada pela chave
estrangeira
• Estratégias para tratar a integridade referencial:
• Não permitir a modificação ou a remoção da chave primária se
esta chave estiver sendo usada na definição de alguma chave
estrangeira
• Permitir operações de modificação e remoção na chave primária
e permitir a propagação em cascata
• Remover um tuplo implica remover os tuplos associados à mesma
chave estrangeira
• Modificar uma chave primária implica modificar a chave estrangeira
correspondente
23
11
30/10/20
Restrições de Integridade -
Chave Estrangeira
• A chave estrangeira pode fazer referência a uma chave
primária da própria relação
• O auto-relacionamento supervisionado_por na relação
empregado é uma chave estrangeira que referencia a chave
primária codEmp da mesma relação
24
Exercício 3
• Identifique as possíveis chaves primárias, candidatas e
estrangeiras em cada uma das relações abaixo:
Curso Departamento
codCurso Nome CodDep codDep Nome
010 LEI A A Tecnologia
011 IG A B Saúde
013 MM B C Humanas
014 LEB B E Social
Aluno
núme Nome Dt_ingresso Curso BI Endereço Depto
ro
1001 João 22-09-2004 010 22734567 Rua T A
1002 Pedro 22-09-2005 010 22834567 Rua Y A
1003 Gabriel 22-09-2004 013 22349856 Rua T B
1004 Ana 22-09-2005 014 22343449 Rua H B
1005 Eva 22-09-2004 013 22039484 Rua K B
25
12
30/10/20
26
Outras Restrições
• Restrições de domínio, de entidade e de integridade
referencial fazem parte do modelo relacional
• Existem outras restrições que são específicas do problema que
se deseja modelar
• Exemplo:
• Alunos só podem fazer unidades curriculares do 2º semestre após
terem sido aprovados nas unidades curriculares do 1º semestre
27
13
30/10/20
Outras Restrições
Vantagens de ser o SGBD a gerir as restrições
• As restrições ficam centralizadas num único sítio, isso permite
• A definição das restrições podem ser alteradas sem precisar
modificar o código das aplicações
• A documentação e a listagem das restrições são facilitadas, pois
estão num mesmo sítio, independente das aplicações que a usam
ou não
• O SGBD verifica sempre as restrições, assim nunca poderá
haver um erro nos dados por uma falha de verificação que
deveria ser feita por uma aplicação e por algum motivo não foi
feita
28
Exercício 4
• Crie as relações abaixo usando o modelo relacional:
29
14
30/10/20
Representação usando
Diagramas
• Não há um padrão, quando se fala em modelo relacional
tipicamente não se pensa nele na forma de diagramas
• Entretanto ...
• Pode-se usar a notação do diagrama de classes da UML para
representar o modelo relacional
• Com as devidas adaptações pois o diagrama de classes originalmente
foi pensado para modelar dados orientados a objetos
• Pode-se usar as notações para representar o ER, sendo que:
• No relacional não existem os losangulos (relacionamentos são
representados apenas com uma linha ligando as duas relações)
• Deve-se indicar a chave primária (atributos sublinhados ou usando as
iniciais PK
• Deve-se, preferencialmente, indicar as chaves estrangeiras, usando as
iniciais FK, ou usando uma seta ligando diretamente a chave estrangeira
de uma relação com a chave primária da outra
30
15
30/10/20
Exemplos: BD Company
(Relacional) Versão compacta, não tem o tipo dos
atributos
16
30/10/20
Exercício 5
• Crie as relações abaixo usando diagramas para representar o
modelo relacional:
35
Dicionário de Dados
• É um documento com explicações textuais de todos os objetos
criados em um modo conceitual (MER ou MR)
• Permite ao analista obter informações sobre todos os objetos
do modelo
• Contém informações muitas vezes difíceis de serem incluídas
em um diagrama
• O objetivo de um dicionário de dados é ser claro e consistente
• Existem várias maneiras para construir um dicionário de
dados, uma sugestão é usar tabelas, vejamos um exemplo ...
36
17
30/10/20
Dicionário de Dados
Relação: Produto | produtos comercializados pela empresa
Atributo Tipo Chave Observação Descrição
Código inteiro sim Não nulo Identificação do produto
nome string Não Valor único Descrição do produto
não nulo
preço decimal Não Não nulo Preço unitário do produto
fornecedor decimal estrangeira Identificador do fornecedor
do produto
37
38
18
30/10/20
Exemplo
• Crie um dicionário de dados para o modelo relacional:
39
Exemplo
Relação: Employee Empregados de uma empresa
Atributo Chave Descrição
Fname Primeiro nome do empregado
Minit Iniciais do apelido do empregado
Lname Último nome do empregado
SSN sim Nº da segurança social do empregado
Bdate Data de nascimento do empregado
Sex Sexo do empregado
Salary Salário do empregado
Super_ssn estrangeira Nº da segurança social do supervisor do emp.
Dno estrangeira Código do departamento do empregado
Relação: depto_locations Localizações dos departamentos
Atributo Chave Descrição
Dnumber sim Número de identificação do departamento
Dlocation Sim Número de identificação da localização do depto
40
19
30/10/20
Exemplo
Relação: Departament Departamentos de uma empresa
Atributo Chave Descrição
Dname Valor único Nome do departamento
Dnumber Sim Número de identificação do departamento
Mgr_ssn estrangeira Nº seg. social do gerente do departamento
Mgr_start_date Data em que o gerente do depto. começou
41
Exemplo
Relação: works_on Projetos em que os empregados trabalham
Atributo Chave Descrição
Essn Sim, Número de identificação do empregado
estrangeira
Pno Sim, Número de identificação do projeto
estrangeira
hours Número de horas que o emp. Trabalhou no projeto
42
20
30/10/20
Exercício 6
• Crie um dicionário de dados para as relações do exercício 5:
• Departamento com os atributos: nome, número, localização
43
21