Composição de entidade em banco de dados
Pessoal, não estou conseguindo material que pelo menos me diga como se chama o que quero fazer!
A situação que tenho é que tenho uma entidade processo e um processo contém vários serviços que tb são entidades. Eu quero guardar no banco, quais serviços compõem um processo e criar todos os serviços inerentes ao processo sempre que ele for criado! Isso seria feito através de procedimentos armazenados? Seria processamento da aplicação? Só quero ter uma ideia do caminho mais indicado!
A situação que tenho é que tenho uma entidade processo e um processo contém vários serviços que tb são entidades. Eu quero guardar no banco, quais serviços compõem um processo e criar todos os serviços inerentes ao processo sempre que ele for criado! Isso seria feito através de procedimentos armazenados? Seria processamento da aplicação? Só quero ter uma ideia do caminho mais indicado!
Enoque Carmo
Curtidas 0
Melhor post
Npi Tecnologia
13/11/2016
Boa tarde Enoque!
Você pode fazer assim. Cria as tabelas de processo e serviço:
Criar uma terceira tabela para fazer a composição dos processos. Ela vai ter o id do processo e o id do serviço:
Neste exemplo, inserir dois produtos e cinco serviços:
Em seguida inseri liguei os serviços 1 e 2 ao processo 1 e os serviços 3, 4 e 5 ao processo 2:
Na parte do banco só precisa disso. Na sua aplicação, quando necessitar criar um no processo, você pode fazer um select como o abaixo, só substituindo a interrogação pelo id do processo, para pegar os serviços com os quais ele é composto:
Espero ter lhe ajudado, se a resposta for útil dê um like!
Daniel Araújo
daniel.cdc.araujo@gmail.com
Você pode fazer assim. Cria as tabelas de processo e serviço:
CREATE DATABASE DB; GO USE DB; GO CREATE TABLE PROCESSO( ID INT IDENTITY, DESCRICAO VARCHAR(50) NOT NULL, CONSTRAINT PK_PROCESSO PRIMARY KEY(ID) ); GO CREATE TABLE SERVICO( ID INT IDENTITY, DESCRICAO VARCHAR(50) NOT NULL, CONSTRAINT PK_SERVICO PRIMARY KEY(ID) ); GO
Criar uma terceira tabela para fazer a composição dos processos. Ela vai ter o id do processo e o id do serviço:
CREATE TABLE PROCESSO_SERVICO( ID INT IDENTITY, PROCESSO_ID INT NOT NULL, SERVICO_ID INT NOT NULL, CONSTRAINT PK_PROCESSO_SERVICO PRIMARY KEY(ID), CONSTRAINT FK_PROCESSO_SERVICO_PROCESSO FOREIGN KEY(PROCESSO_ID) REFERENCES PROCESSO(ID), CONSTRAINT FK_PROCESSO_SERVICO_SERVICO FOREIGN KEY(SERVICO_ID) REFERENCES SERVICO(ID) ); GO
Neste exemplo, inserir dois produtos e cinco serviços:
INSERT INTO PROCESSO VALUES('PROCESSO A'); INSERT INTO PROCESSO VALUES('PROCESSO B'); GO INSERT INTO SERVICO VALUES('SERVICO A1'); INSERT INTO SERVICO VALUES('SERVICO A2'); GO INSERT INTO SERVICO VALUES('SERVICO B1'); INSERT INTO SERVICO VALUES('SERVICO B2'); INSERT INTO SERVICO VALUES('SERVICO B1'); GO
Em seguida inseri liguei os serviços 1 e 2 ao processo 1 e os serviços 3, 4 e 5 ao processo 2:
INSERT INTO PROCESSO_SERVICO VALUES(1, 1); INSERT INTO PROCESSO_SERVICO VALUES(1, 2); GO INSERT INTO PROCESSO_SERVICO VALUES(2, 3); INSERT INTO PROCESSO_SERVICO VALUES(2, 4); INSERT INTO PROCESSO_SERVICO VALUES(2, 5); GO
Na parte do banco só precisa disso. Na sua aplicação, quando necessitar criar um no processo, você pode fazer um select como o abaixo, só substituindo a interrogação pelo id do processo, para pegar os serviços com os quais ele é composto:
SELECT SERVICO.ID ,SERVICO.DESCRICAO FROM SERVICO INNER JOIN PROCESSO_SERVICO ON PROCESSO_SERVICO.SERVICO_ID = SERVICO.ID WHERE PROCESSO_SERVICO.PROCESSO_ID = ?;
Espero ter lhe ajudado, se a resposta for útil dê um like!
Daniel Araújo
daniel.cdc.araujo@gmail.com
GOSTEI 1
Mais Respostas
Raylan Zibel
12/11/2016
Tente começar por aqui: https://www.devmedia.com.br/curso/curso-modelagem-de-bancos-de-dados-relacionais/409
GOSTEI 0
Enoque Carmo
12/11/2016
Eu já vi esse curso e complementei com outros, mas nenhum apresenta um caso parecido com o que apresentei. Na verdade eu sei uma forma de fazer, mas quero saber se o meu raciocínio é uma boa solução, profissional! Neste curso citado o orientador fala de auto relacionamento e não apresenta exemplos de uso! Talvez fosse uma boa solução para o meu problema!
GOSTEI 0
Raylan Zibel
12/11/2016
É... posso ter entendido errado, mas parece que você só precisa criar uma tabela pra fazer a interseção entre processos e serviços.
[processos] id_processo nm_processo [servicos] id_service nm_servico [proc_serv] id_processo integer id_servico integer
GOSTEI 0
Mariana Carvalho
12/11/2016
Enoque, você tambem pode perguntar nos links das video aulas, tirar duvidas.
GOSTEI 0
Enoque Carmo
12/11/2016
Obrigado, Daniel! Bem completo seu exemplo. Obrigado por responder me ajudou bastante!
GOSTEI 0
Enoque Carmo
12/11/2016
Obrigado, Raylan! Sua resposta me ajudou a formar opinião! Obrigado pela disposição em ajudar.
GOSTEI 0
Enoque Carmo
12/11/2016
Obrigado pessoal! Estou satisfeito com as respostas! Obrigado a todos!
GOSTEI 0