TDSI – Mapeamento objeto relacional parte 1 (Associação e Herança)

Os Modelos E-R feitos neste post, são de origem da UFU – FACOM de autoria do Prof. Dr. Michel Soares obtidos neste Link  da UFU – FACOM oriundos de pesquisa no site buscador google.com em 13/05/2014.

Obs: Um ponta de flecha aberta indica navegabilidade. É utilizada para enfatizar que uma classe possui uma referência a outra que a classe apontada não possui uma referência de volta. (http://www.devmedia.com.br/uml-para-java/2711)

Alguns modelos serão reapresentados aqui.

UML Base

UML Base

Associações 1 ..1Modelo E-R correspondente 1:1Modelo lógico correspondente 1:1 Modelo físico 1:1

CREATE TABLE Empregado (
 Matricula Integer PRIMARY KEY,
 CPF Char(11) not null,
 Nome Varchar(100) not null,
 CEP Char(8) not null,
 Endereco Varchar(50) not null
);

CREATE TABLE Departamento (
 Id Integer PRIMARY KEY,
 Sigla CHAR(5) not null,
 Nome Varchar(50) not null,
 Matricula Integer,
 FOREIGN KEY(Matricula) REFERENCES Empregado (Matricula)
);

Associações 1 ..n Modelo E-R correspondente 1:n Modelo lógico correspondente 1:n Modelo físico 1:n

CREATE TABLE Empregado (
 Matricula Integer PRIMARY KEY,
 CEP Char(8) not null,
 CPF Char(11) not null,
 Nome Varchar(100) not null,
 Endereco Varchar(50) not null,
 Id_departamento Integer not null,
 FOREIGN KEY(Id_departamento) REFERENCES Departamento (Id)
);

CREATE TABLE Departamento (
 Id Integer PRIMARY KEY,
 Sigla Char(5) not null,
 Nome Varchar(50) not null,
 Matricula Integer,
 FOREIGN KEY(Matricula) REFERENCES Empregado (Matricula)
);

Associações n ..n Modelo E-R correspondente n:n Lógico correspondente n:n com chave concatenada Lógico correspondente n:n com identificador (surrogate key) único. Modelo físico n:n com surrogate key (chave substituta)

CREATE TABLE Departamento (
 Id Integer PRIMARY KEY,
 Nome Varchar(50) not null,
 Sigla Char(5) not null,
 Matricula Integer
);

CREATE TABLE Empregado (
 Matricula Integer PRIMARY KEY,
 Nome Varchar(100) not null,
 CEP Char(8) not null,
 CPF Char(11) not null,
 Endereco Varchar(50) not null,
 Id_departamento Integer not null,
 FOREIGN KEY(Id_departamento) REFERENCES Departamento (Id)
);

CREATE TABLE Alocado (
 Id_projeto Integer primary key,
 Matricula_empregado Integer not null,
 FOREIGN KEY(Matricula_empregado) REFERENCES Empregado (Matricula),
 FOREIGN KEY(Id_Projeto) REFERENCES Projeto(
);

CREATE TABLE Projeto (
 Id Integer PRIMARY KEY,
 Nome Varchar(100) not null,
 Verba Numeric(10,2) not null
);

ALTER TABLE Departamento ADD FOREIGN KEY(Matricula) REFERENCES Empregado (Matricula)
ALTER TABLE Alocado ADD FOREIGN KEY(Id_projeto) REFERENCES Projeto (Id)

Modelo físico n:n com chave concatenada

CREATE TABLE Departamento (
 Id Integer PRIMARY KEY,
 Nome Varchar(50) not null,
 Sigla Char(5) not null,
 Matricula Integer
);

CREATE TABLE Empregado (
 Matricula Integer PRIMARY KEY,
 Nome Varchar(100) not null,
 CEP Char(8) not null,
 CPF Char(11) not null,
 Endereco Varchar(50) not null,
 Id_departamento Integer not null,
 FOREIGN KEY(Id_departamento) REFERENCES Departamento (Id)
);

CREATE TABLE Projeto (
 Id Integer PRIMARY KEY,
 Nome Varchar(100) not null,
 Verba Numeric(10,2) not null
);

CREATE TABLE Alocado (
 Matricula_empregado Integer not null,
 PRIMARY KEY(Id_projeto,Matricula_empregado),
 FOREIGN KEY(Matricula_empregado) REFERENCES Empregado (Matricula),
 FOREIGN KEY(Id_projeto|) REFERENCES Projeto(id)
); 

ALTER TABLE Departamento ADD FOREIGN KEY(Matricula) REFERENCES
 Empregado (Matricula)

Mapeamento de herança. Modelo E-R com generalização/especialização. Modelo lógico com geração de duas entidades para cada especialização. Modelo lógico com geração de uma entidade para as especializações. Modelo físico de herança com especialização/generalização com duas tabelas.

CREATE TABLE Contribuinte (
 Id Integer PRIMARY KEY,
 Endereco Varchar(50) not null
);

CREATE TABLE PessoaJuridica (
 Id_Contribuinte Integer PRIMARY KEY,
 CNPJ Char(14) not null,
 RazãoSocial Varchar(100) not null,
 FOREIGN KEY(Id_Contribuinte) REFERENCES Contribuinte (Id)
);

CREATE TABLE PessoaFisica (
 Id_Contribuinte Integer PRIMARY KEY,
 DataNascimento Date not null,
 Nome Varchar(100) not null,
 CPF Char(11) not null,
 FOREIGN KEY(Id_Contribuinte) REFERENCES Contribuinte (Id)
);

Modelo físico de herança fundindo tudo em uma única tabela.

CREATE TABLE Contribuinte (
 Id Integer PRIMARY KEY,
 Endereco Varchar(50),
 DataNascimento Date,
 Nome Varchar(100),
 CPF Char(11),
 CNPJ Char(14),
 RazãoSocial Varchar(100)
);

Parte 2 – Mapeamento de composição.

Esse post foi publicado em TDSI - Tópicos em Desenvolvimento de Sistemas de Informação I e III. Bookmark o link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s