Você está na página 1de 21

30/10/20

Modelação e Bases de Dados

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

CONCEITUAL • Criação do modelo conceitual (ER)

• Criação do modelo lógico (mais


LÓGICO detalhes, mais técnico)

• Criação dos scripts, modelo físico,


FÍSICO estratégias de segurança e
armazenamento, etc.

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

• Relação: Aluno Nome da Relação


CodigoAluno Nome BI Data_de_nasc
1001 João 987345222 01/09/1974
1002 Pedro 223344556 10/10/1987 Tuplo
1003 Maria 223345566 02/07/1983

Atributo

• A ordem dos tuplos de uma relação é irrelevante

Relação
• Relação: Aluno Nome do
Atributos

CodigoAluno Nome BI Data_de_nasc


1001 João 987345222 01/09/1974
1002 Pedro 223344556 10/10/1987
1003 Maria 223345566 02/07/1983

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:

Aluno(numInterno:inteiro, nome:varchar(25), dataDeNascimento:data)

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

1001 João 22-09-2004 010 22734567 Rua T A


1002 Pedro 22-09-2005 010 22834567 Rua Y A
1003 Gabrie 22-09-2004 013 22349856 Rua T B
l
1004 Ana 22-09-2005 014 22343449 Rua H B
1005 Eva 22-09-2004 013 22039484 Rua K B

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

A diferença entre estes tipos de dados está na capacidade total de


armazenamento e no aproveitamento da memória

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

• Um atributo pode conter o valor NULL, a menos que se diga


explicitamente que não

• Importante:
• Cada domínio está associado a um tipo de dados
• Exemplo: morada é do tipo de dados texto.

12

6
30/10/20

Extensão de uma Relação


• Conjunto de tuplos válidos num determinado instante
• A extensão de uma relação pode variar no tempo de acordo
com a realidade que pretende representar
• Exemplo: extensão da relação Aluno

CodigoAluno Nome BI Data_de_nasc


1001 João 987345222 01/09/1974
1002 Pedro 223344556 10/10/1987

• Outra forma de representar uma extensão de uma relação:


• { {1001,João,987345222,01/09/1974},
{1002,Pedro, 223344556,02/10/1987} }
• Todos os dados em uma relação possuem uma mesma
estrutura, ou seja, os mesmos atributos

13

Mundo Fechado e Aberto


• Mundo fechado:
• Se considerarmos que apenas os tuplos que aparecem em uma
relação são verdadeiros
• Mundo aberto:
• Se considerarmos que podem existir factos verdadeiros que não
estão na extensão de uma relação

Cantor
Caetano Veloso Antonio Zambujo
Mundo
Roberto Leal fechado
Sandra de Sá Marisa

Mundo aberto Rita Guerra

O mundo relacional é fechado

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

1002 Pedro 223344556 10/10/1987


1003 Maria 223345566 02/07/1983

Chave primária Chave Candidata

16

8
30/10/20

Exercício 2
• Identifique todas as possíveis super-chaves da relação abaixo:

Aluno

número Nome Dt_ingress Curso BI Endereço Depto


o
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

• Sabe-se que número e BI, cada um, unicamente identificam


cada tuplo da relação

17

Chave Primária Restrição de


integridade de
Entidade

• Critério para escolher a chave primária:


1. Unívoca: contém o conjunto de atributos que unicamente
identifica cada tuplo da relação
2. Não nula: os valores dos atributos que compõe a chave não
pode ser NULL (nulo, sem valor)
3. Não redundante: se retirarmos algum atributo da chave,
esta deixa de univocamente identificar os tuplos da relação

• Chave simples: quando a chave contém apenas um atributo


• Exemplo: {numInterno}, {BI}
• Chave composta: quando a chave contém mais de um
atributo
• Exemplo: {nome,telefone}

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

codEmp Nome Supervisionado_por


1001 João 1002
1011 Pedro 1002
1012 Ana NULL

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

Esquema e Estado de uma BD


• Um esquema de BD (ou esquema relacional) é uma
especificação da BD contendo, no mínimo os seguintes
componentes:
• Relações que formam a BD

• Atributos que formam a estrutura de cada relação

• Restrições de integridade (chaves)

• Um estado de uma BD (também chamado instância da BD) é o


conjunto de valores que as relações de um esquema de BD
tem em um dado instante.

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

• Esses tipos de restrições podem ser verificados por aplicações,


entretanto, a maioria dos SGBD oferecem funcionalidades que
permitem definir vários tipos de restrições

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:

• Departamento com os atributos: nome, número, localização


• Empregado com os atributos: número interno, nome, sexo,
endereço, data de nascimento, código do departamento
• Dependente com os atributos: nome, sexo, data de nascimento,
parentesco

• Identifique as chaves primárias das relações acima

• Relacione as relações acima utilizando chaves estrangeiras

• Qual o grau de cada relação?

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

Exemplos: BD Company (ER)

Fonte: Fundamentals of Database Systems, Navathe, 6ª ed.


31

15
30/10/20

Exemplos: BD Company
(Relacional) Versão compacta, não tem o tipo dos
atributos

Ênfase nas restrições de


integridade referencial

Fonte: Fundamentals of Database Systems, Navathe, 6ª ed.


32

Exemplos: BD Company (UML)


( ,
,
)

Fonte: Fundamentals of Database Systems, Navathe, 6ª ed.


33

16
30/10/20

Exercício 5
• Crie as relações abaixo usando diagramas para representar o
modelo relacional:

• Departamento com os atributos: nome, número, localização


• Empregado com os atributos: número interno, nome, sexo, endereço,
data de nascimento, código do departamento
• Dependente com os atributos: nome, sexo, data de nascimento,
parentesco, numeroDoEmpregado
• Projeto(numero, descricao, departamento)
• Trabalha_em(empregado, projeto, totalHoras)

• Identifique as chaves primárias e estrangeiras das relações acima

Escolha a notação que melhor lhe agradar

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

• Criar uma tabela para cada relação


• As colunas atributo, tipo, chave, observação e descrição são
apenas uma sugestão, podem haver outras para além destas

37

Gestão dos Dicionários de


Dados
• Um SGBD armazena os elementos de dados e seus
relacionamentos (metadados) no dicionário de dados
(catálogo)
• Mudanças são automaticamente registadas no dicionário de
dados

No Apex (Oracle): SQL Workshop -> Object Browser

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

Relação: project Projetos da empresa


Atributo Chave Descrição
Pname Valor único Nome do projeto
Pnumber Sim Número de identificação do projeto
Plocation Localização do projeto
Dnum estrangeira identificação do depto. Que contém o projeto

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

Relação: dependent Dependentes dos empregados


Atributo Chave Descrição
Essn Sim, Número de identificação do empregado
estrangeira
Dependent_name Sim Nome do dependente
Sex Sexo do dependente
Bdate Data de nascimento do dependente
Relationship parentesco

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

• Empregado com os atributos: número interno, nome, sexo,


endereço, data de nascimento, código do departamento

• Dependente com os atributos: nome, sexo, data de nascimento,


parentesco, numeroDoEmpregado
• Projeto(numero, descricao, departamento)

• Trabalha_em(empregado, projeto, totalHoras)

43

21

Você também pode gostar