BD1 - Engenharia Reversa flipbook

nilton.freire
from nilton.freire More from this publisher

Banco de Dados

Engenharia Reversa

Normalização

04/12/2019 1


Engenharia Reversa

• É um processo que visa analisar as tabelas de um banco de dados

já implementado e obter, a partir desta análise, o diagrama

Entidade-Relacionamento do sistema.

• Parte de um modelo relacional (esquema lógico).

• Resulta em um modelo E-R (esquema conceitual).

• É um processo inverso ao do projeto lógico.

• Pode ser bastante útil quando:

• o banco de dados foi criado de forma empírica;

• o esquema do banco de dados sofreu modificações que não

foram registradas no modelo conceitual.

Engenharia Reversa 4 de dezembro de 2019 2


Engenharia Reversa

Esquema E-R

(conceitual)

Engenharia

Reversa de

BD relacional

R

E

G

R

A

S

Projeto

Lógico de

BD relacional

Esquema Relacional

(lógico)

Engenharia Reversa 4 de dezembro de 2019 3


Etapas da Engenharia Reversa

• Identificação do objeto correspondente a cada tabela.

• Definição da cardinalidade máxima de cada relacionamento.

• Definição dos atributos de cada entidade e relacionamento.

• Definição de identificadores de cada entidade.

• Definição da cardinalidade mínima de cada relacionamento.

• Construção do diagrama Entidade-Relacionamento.

Engenharia Reversa 4 de dezembro de 2019 4


Identificação do Objeto de Cada Tabela

• Uma tabela pode corresponder a uma entidade ou a um

relacionamento.

• Os fatores determinantes para a identificação são:

• a composição de sua chave primária;

• a posição da(s) chave(s) estrangeira(s) dentro da tabela.

Engenharia Reversa 4 de dezembro de 2019 5


Identificação do Objeto de Cada Tabela

• Tipo #1: A tabela possui a chave primária formada por atributos

próprios e não possui chave estrangeira.

A (a1, a2, a3)

• Corresponde a:

• Tabela que cede chave estrangeira em um relacionamento

1:1, ou;

• Tabela que cede chave estrangeira em um relacionamento

1:N, ou;

• Tabela participante de um relacionamento N:N.

Engenharia Reversa 4 de dezembro de 2019 6


Identificação do Objeto de Cada Tabela

A (a1, a2, a3)

FK

A

1 N1

R

B

a1

a2

a3

b1

b2

b3

FK

FK

A

N

R

N

B

a1

a2

a3

b1

b2

b3

Engenharia Reversa 4 de dezembro de 2019 7


Identificação do Objeto de Cada Tabela

• Tipo #2: A tabela possui a chave primária formada por atributos

próprios e possui chave estrangeira.

B (b1, b2, b3, a1)

[a1] referencia A

• Corresponde a:

• Tabela que recebe chave estrangeira em um relacionamento

1:1, ou;

• Tabela que recebe chave estrangeira em um relacionamento

1:N (lado N).

Engenharia Reversa 4 de dezembro de 2019 8


Identificação do Objeto de Cada Tabela

B (b1, b2, b3, a1)

[a1] referencia A

FK

A

1 1

R

B

a1

a2

a3

b1

b2

b3

A

FK

1 N

R

B

a1

a2

a3

b1

b2

b3

Engenharia Reversa 4 de dezembro de 2019 9


Identificação do Objeto de Cada Tabela

• Tipo #3: A tabela possui uma chave estrangeira que faz parte da

chave primária composta.

B (b1, a1, b2, b3)

[a1] referencia A

• Corresponde a:

• Tabela que recebe chave estrangeira em um relacionamento

identificador.

• Corresponde a uma entidade fraca.

Engenharia Reversa 4 de dezembro de 2019 10


Identificação do Objeto de Cada Tabela

B (b1, a1, b2, b3)

[a1] referencia A

FK/PK

A

1 N

R

B

a1

a2

a3

b1

b2

b3

Engenharia Reversa 4 de dezembro de 2019 11


Identificação do Objeto de Cada Tabela

• Tipo #4: A tabela possui uma chave primária formada por duas

chaves estrangeiras concatenadas.

R (a1, b1)

[a1] referencia A

[b1] referencia B

• Corresponde a:

• Relacionamento com cardinalidade N:N.

Engenharia Reversa 4 de dezembro de 2019 12


Identificação do Objeto de Cada Tabela

R (a1, b1)

[a1] referencia A

[b1] referencia B

FK

FK

A

N

R

N

B

a1

a2

a3

b1

b2

b3

Engenharia Reversa 4 de dezembro de 2019 13


Identificação do Objeto de Cada Tabela

• Tipo #5: A tabela possui duas chaves estrangeiras e uma

delas é a chave primária.

R (a1, b1, r1, r2, r3)

[a1] referencia A

[b1] referencia B

• Corresponde a:

• Relacionamento com cardinalidade 1:1, ou;

• Relacionamento com cardinalidade 1:N.

• Se a cardinalidade for 1:N, a chave estrangeira é proveniente

da tabela do lado N do relacionamento.

Engenharia Reversa 4 de dezembro de 2019 14


Identificação do Objeto de Cada Tabela

R (a1, b1, r1, r2, r3)

[a1] referencia A

[b1] referencia B

A

FK

1 1

R

FK

B

a1

a2

a3

r2

r3

b1

b2

b3

• A chave primária é uma das chaves estrangeiras. Pode ser

proveniente de qualquer uma das tabelas relacionadas.

Engenharia Reversa 4 de dezembro de 2019 15


Identificação do Objeto de Cada Tabela

R (a1, b1)

[a1] referencia A

[b1] referencia B

A

FK

1 N

R

FK

B

a1

a2

a3

b1

b2

b3

• A chave primária será a chave estrangeira proveniente da tabela

do lado N do relacionamento.

Engenharia Reversa 4 de dezembro de 2019 16


Identificação do Objeto de Cada Tabela

• Tipo #6: A tabela possui a chave primária igual a uma chave

estrangeira.

B (a1, b1, b2, b3)

[a1] referencia A

• Corresponde a:

• Entidade especializada.

Engenharia Reversa 4 de dezembro de 2019 17


Identificação do Objeto de Cada Tabela

B (a1, b1, b2, b3)

[a1] referencia A

A

a1

a2

a3

B

C

b1

b2

b3

c1

c2

c3

Engenharia Reversa 4 de dezembro de 2019 18


Identificação do Objeto de Cada Tabela

• Tipo #7: A tabela possui uma chave estrangeira que faz

referência à chave primária da própria tabela.

A (a1, a2, a3, a4)

[a4] referencia A

• Corresponde a:

• Auto-relacionamento de cardinalidade 1:1, ou;

• Auto-relacionamento de cardinalidade 1:N.

Engenharia Reversa 4 de dezembro de 2019 19


Identificação do Objeto de Cada Tabela

A (a1, a2, a3, a4)

[a4] referencia A

A

1 1

R

a1

a2

a3

A

1 N

R

a1

a2

a3

Engenharia Reversa 4 de dezembro de 2019 20


Identificação do Objeto de Cada Tabela

• Tipo #8: A tabela possui a chave primária composta, formada por

duas chaves estrangeiras que fazem referência à mesma tabela.

R (r1, r2)

[r1] referencia A

[r2] referencia A

• Corresponde a:

• Auto-relacionamento de cardinalidade N:N.

Engenharia Reversa 4 de dezembro de 2019 21


Identificação do Objeto de Cada Tabela

R (r1, r2)

[r1] referencia A

[r2] referencia A

A

N

R

N

a1

a2

a3

Engenharia Reversa 4 de dezembro de 2019 22


Identificação do Objeto de Cada Tabela

• Tipo #9: A tabela possui a chave primária composta, formada

por três chaves estrangeiras.

R (a1, b1, c1)

[a1] referencia A

[b1] referencia B

[c1] referencia C

• Corresponde a:

• Relacionamento ternário. As três tabelas que participam do

relacionamento tem cardinalidade máxima igual a N.

Engenharia Reversa 4 de dezembro de 2019 23


Identificação do Objeto de Cada Tabela

R (a1, b1, c1)

[a1] referencia A

[b1] referencia B

[c1] referencia C

FK

FK

A

N

R

N

B

a1

a2

a3

N

FK

b1

b2

b3

C

b1

b2

b3

Engenharia Reversa 4 de dezembro de 2019 24


Identificação do Objeto de Cada Tabela

• Tipo #10: A tabela possui três chaves estrangeiras e duas delas

formam a chave primária da tabela.

R (a1, b1, c1)

[a1] referencia A

[b1] referencia B

[c1] referencia C

• Corresponde a:

• (1) Relacionamento ternário. Uma das três tabelas que

participam do relacionamento tem cardinalidade máxima

igual a 1.

Engenharia Reversa 4 de dezembro de 2019 25


Identificação do Objeto de Cada Tabela

R (a1, b1, c1)

[a1] referencia A

[b1] referencia B

[c1] referencia C

FK

FK

A

N

R

N

B

a1

a2

a3

1

FK

b1

b2

b3

C

c1

c2

c3

Engenharia Reversa 4 de dezembro de 2019 26


Identificação do Objeto de Cada Tabela

• Tipo #10: A tabela possui três chaves estrangeiras e duas delas

formam a chave primária da tabela.

R (a1, b1, c1)

[a1] referencia A

[b1] referencia B

[c1] referencia C

• Corresponde a:

• (2) Entidade associativa que recebe chave estrangeira de uma

terceira tabela.

Engenharia Reversa 4 de dezembro de 2019 27


Identificação do Objeto de Cada Tabela

R (a1, b1, c1)

[a1] referencia A

[b1] referencia B

[c1] referencia C

FK

FK

A

N

R

N

B

a1

a2

a3

R

N

FK

b1

b2

b3

c1

c2

c3

C

1

Engenharia Reversa 4 de dezembro de 2019 28


Definição da Cardinalidade

• Em muitos casos o esquema relacional não informa com precisão

as cardinalidades do relacionamento.

• Nesses casos, além de analisar a semântica do relacionamento:

• para definir a cardinalidade máxima é necessário verificar nas

tabelas se as chaves estrangeiras admitem repetição de

dados. Se permitir, a cardinalidade é de 1:N, se não, é de 1:1.

• para definir a cardinalidade mínima é necessário verificar a

possibilidade da existência de valores nulos nas chaves

estrangeiras das tabelas relacionadas. Se a chave estrangeira

puder ser nula, a cardinalidade mínima da tabela do lado que

cede a chave estrangeira é igual a zero, senão, é igual a um.

Engenharia Reversa 4 de dezembro de 2019 29


Definição dos Atributos

• Toda coluna da tabela que não seja chave estrangeira, é definida

como sendo um atributo da entidade ou do relacionamento

correspondente à tabela.

• As chaves estrangeiras não correspondem a atributos no

diagrama E-R. Elas representam os relacionamentos entre as

tabelas, existentes apenas no modelo lógico.

• O diagrama E-R deverá ser construído, portanto, sem a existência

de chaves estrangeiras nas entidades.

Engenharia Reversa 4 de dezembro de 2019 30


Definição dos Identificadores

• Toda coluna que faz parte da chave primária e não é chave

estrangeira, corresponde a um atributo identificador da entidade

ou relacionamento.

• Toda coluna que faz parte da chave primária e é chave

estrangeira, corresponde a um identificador externo da entidade,

existente através de um relacionamento identificador.

• O diagrama E-R deverá ser construído, portanto, sem a existência

de identificadores externos nas entidades.

Engenharia Reversa 4 de dezembro de 2019 31


Engenharia Reversa – Exercício:

• Construir o diagrama E-R a partir do esquema relacional abaixo:

DISCIPLINA (CodDisc, NomeDisc)

CURSO (CodCr, NomeCr)

CURRÍCULO (CodCr, CodDisc, ObrOpc)

[CodCr] referencia CURSO

[CodDisc] referencia DISCIPLINA

PRÉDIO (CodPr, Endereço)

SALA (CodPr, CodSl, Capacidade)

[CodPr] referencia PRÉDIO

TURMA (Anosem, CodDisc, SiglaTur, Capacidade, CodPr, CodSl)

[CodDisc] referencia DISCIPLINA

[CodPr, CodSl] referencia SALA

LABORATÓRIO (CodPr, CodSl, Equipam)

[CodPr, CodSl] referencia SALA

Engenharia Reversa 4 de dezembro de 2019 32


Engenharia Reversa – Exercício:

• As tabelas correspondem aos seguintes objetos:

• DISCIPLINA - entidade que cede chave estrangeira.

• CURSO - entidade que cede chave estrangeira.

• CURRÍCULO - Relacionamento N:N entre as entidades CURSO e

DISCIPLINA, com atributos.

• PRÉDIO - entidade que cede chave estrangeira.

• SALA - entidade que recebe chave estrangeira em um relacionamento

identificador com PRÉDIO.

• TURMA - entidade que recebe chave estrangeira em um

relacionamento identificador com DISCIPLINA outra chave estrangeira

em um relacionamento com SALA.

• LABORATÓRIO - entidade especializada de SALA.

Engenharia Reversa 4 de dezembro de 2019 33


Engenharia Reversa – Exercício:

• Diagrama Entidade-Relacionamento resultante:

DISCIPLINA

N

CURRIC

N

CURSO

1

R1

N

TURMA

N 1 N 1

R2

SALA

R3

PRÉDIO

p

LABORAT

Engenharia Reversa 4 de dezembro de 2019 34


Engenharia Reversa – Exercício:

• Descrição das entidades resultantes:

DISCIPLINA (CodDisc, NomeDisc)

CURSO (CodCr, NomeCr)

PRÉDIO (CodPr, Endereço)

SALA (CodSl, Capacidade)

TURMA (Anosem, SiglaTur, Capacidade)

LABORATÓRIO (Equipam)

CURRÍCULO (ObrOpc) - relacionamento

Engenharia Reversa 4 de dezembro de 2019 35


Copyright © 2019 Nilton Freire Santos.

Todos os direitos reservados.

Normalização 04/12/2019 36


Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!