TDSI – Mapeamento objeto relacional parte 3 (Agregação)

Mapeamento de agregação

Modelo E-R correspondente

Modelo lógico correspondente

Numa agregação o mapeamento é semelhante a composição, mas o todo não é dono das suas partes, ou seja se ele é eliminado suas partes sobrevivem.

Modelo físico correspondente

CREATE TABLE TIME (
  ID      INTEGER NOT NULL PRIMARY KEY,
  NOME    VARCHAR(50) NOT NULL,
  TECNICO VARCHAR(100) NOT NULL
);

CREATE TABLE ATLETA (
  ID      INTEGER NOT NULL PRIMARY KEY,
  NOME    VARCHAR(100) NOT NULL,
  IDADE   INTEGER NOT NULL,
  POSICAO VARCHAR(50) NOT NULL,
  ID_TIME INTEGER,
  FOREIGN KEY (ID_TIME) REFERENCES TIME ON DELETE SET NULL
);

/* inserção dos dados */

/* inserindo o time */

INSERT INTO TIME(ID,NOME,TECNICO)
      VALUES (777,'Cruzeiro do Sul Foot-Ball Club','João Saldanha');

/* inserindo os atletas do time */ 

INSERT INTO ATLETA(ID,NOME,IDADE,POSICAO,ID_TIME)
 VALUES (1970,'Emerson Arantes do Nascimento - Pelé',34,'meia-atacante',777);

INSERT INTO ATLETA(ID,NOME,IDADE,POSICAO,ID_TIME)
 VALUES (1971,'Eduardo Gonçalves de Andrade - Tostão',36,'centro-avante',777);

INSERT INTO ATLETA(ID,NOME,IDADE,POSICAO,ID_TIME)
 VALUES (1972,'Gérson de Oliveira Nunes - Gérson',33,'meia-armador',777);

Notar que na criação da tabela ATLETA o ID_TIME aceita nulos e na declaração de que ela é uma chave estrangeira FOREIGN KEY existe agora a cláusula ON DELETE SET NULL. 

Veja como ficou os dados antes do comando DELETE sempre prestando atenção na chave  primária de TIME (777)  e na estrangeira em ATLETA (777).

Agora como ficou a tabela ATLETA depois da exclusão do TIME.

 

 

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