TDSI – Mapeamento objeto relacional parte 2 (Composição)

Mapeamento de composição

Modelo E-R correspondente

Modelo lógico correspondente

No modelo lógico foi alterado o nome da chave estrangeira para id_notafiscal.

No modelo físico será acrescentado  na criação da tabela ITEMPRODUTO uma cláusula logo após a FOREIGN KEY, a ON DELETE CASCADE para que os dados se comportarem de forma igual a uma composição, ou seja, quando o objeto é destruído as associações também são porque o TODO é dono de suas PARTES.

CREATE TABLE NOTAFISCAL (
 ID INTEGER NOT NULL PRIMARY KEY,
 NROSERIE BIGINT NOT NULL,
 DATAEMISSAO DATE NOT NULL
);

CREATE TABLE ITEMPRODUTO(
 ID INTEGER NOT NULL PRIMARY KEY,
 QUANTIDADE NUMERIC(8,3) NOT NULL,
 VALOR NUMERIC(10,2) NOT NULL,
 ID_NOTAFISCAL BIGINT NOT NULL,
 FOREIGN KEY (ID_NOTAFISCAL) REFERENCES NOTAFISCAL ON DELETE CASCADE
);

Quando o comando DELETE for executado na tabela NOTAFISCAL ele vai eliminar automaticamente os relacionamentos filhos.

Exemplo:


INSERT INTO NOTAFISCAL (ID,NROSERIE,DATAEMISSAO)
       VALUES (100,557799,'26/05/2014');

INSERT INTO ITEMPRODUTO(ID,QUANTIDADE,VALOR,ID_NOTAFISCAL)
       VALUES (80,1.5,712.55,100);
INSERT INTO ITEMPRODUTO(ID,QUANTIDADE,VALOR,ID_NOTAFISCAL)
       VALUES (81,2.0,600.51,100);

/* reparem na chave estrangeira em ITEMPRODUTO de valor igual a 100 */

Veja como ficou os dados no banco


Agora executando o comando

 DELETE FROM NOTAFISCAL
 WHERE ID = 100;

Todos os dados das duas tabelas serão EXCLUÍDOS.

Parte 3 – Mapeamento de agregaçã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