fjuniorwin Postado Março 31, 2008 Denunciar Share Postado Março 31, 2008 Olá amigos,Estou com a seguinte dúvida:Eu tenho uma tabela que preciso relacionar 2 campos entre si, no caso eles estão na mesma tabela. Como faço? Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Março 31, 2008 Denunciar Share Postado Março 31, 2008 Oi, fjuniorwin!O que você está querendo parece ser um auto relacionamento.Mas preciso que você descreva melhor o que você quer. Use uma estrutura fictícia como exemplo. Link para o comentário Compartilhar em outros sites More sharing options...
0 fjuniorwin Postado Março 31, 2008 Autor Denunciar Share Postado Março 31, 2008 Oi, fjuniorwin!O que você está querendo parece ser um auto relacionamento.Mas preciso que você descreva melhor o que você quer. Use uma estrutura fictícia como exemplo.Sim amigo,É um auto relacionamento, você por favor, poderia colocar aqui algum exemplo? qualquer um server, com base nele irei montar meu bd. Desde já agradeço a sua atenção. Link para o comentário Compartilhar em outros sites More sharing options...
0 fjuniorwin Postado Abril 1, 2008 Autor Denunciar Share Postado Abril 1, 2008 Oi, fjuniorwin!O que você está querendo parece ser um auto relacionamento.Mas preciso que você descreva melhor o que você quer. Use uma estrutura fictícia como exemplo.Sim amigo,É um auto relacionamento, você por favor, poderia colocar aqui algum exemplo? qualquer um server, com base nele irei montar meu bd. Desde já agradeço a sua atenção. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Abril 1, 2008 Denunciar Share Postado Abril 1, 2008 Sim amigo,É um auto relacionamento, você por favor, poderia colocar aqui algum exemplo? qualquer um server, com base nele irei montar meu bd. Desde já agradeço a sua atenção.Oi, fjuniorwin!Imagine um cadastro de funcionários em uma empresa. Estes funcionários pertencem a um departamento e estes funcionários possuem um gerente. Um gerente também é um funcionário.CREATE TABLE departamento ( ID_Departamento UNSIGNED INTEGER NOT NULL AUTO_INCREMENT, NM_Departamento VARCHAR(40) NOT NULL, PRIMARY (ID_Departamento) )ENGINE = InnoDB; O campo ID_Departamento abaixo fará relacionamento com a tabela “departamentos” acima. Esta restrição não permite exclusão ou alteração em cascata, porque posso excluir um departamento sem excluir os funcionários. Mas me obriga a transferir os funcionários para outro departamento antes de excluir o departamento que eu quero. O campo ID_Gerente é um campo ALIAS (*1) (conterá as mesmas características e informações do campo ID_Funcionarios) do campo ID_Funcionarios e guardará o identificador do funcionário que um funcionário de um departamento está subordinado. O campo CPF é único para que não possa haver dois registros com o mesmo número de CPF, criei um índice único por este campo. CREATE TABLE funcionarios ( ID_Funcionario UNSIGNED INTEGER NOT NULL AUTO_INCREMENT, NM_Funcionario VARCHAR(60) NOT NULL, CPF CHAR(11) NOT NULL, ID_Departamento UNSIGNED INTEGER NOT NULL DEFAULT 0, ID_Gerente UNSIGNED INTEGER NOT NULL DEFAULT 0, PRIMARY (ID_Funcionario) )ENGINE = InnoDB; CREATE UNIQUE INDEX UK_Funcionartio_IX001 ON funcionarios (CPF); CREATE INDEX AK_Funcionario_IX002 funcionarios(ID_Gerente); ALTER TABLE funcionarios ADD CONSTRAINT FK_Funcionario_IX003 FOREIGN KEY (ID_Departamento) REFERENCES departamento ON DELETE NO ACTION, ON UPDATE NO ACTION; Assim, para cadastrar um funcionário, primeiro necessito cadastrar o(s) departamento(s). INSERT INTO departamentos (ID_Departamento, NM_Departamento) VALUES (1, “CONTABILIDADE”); INSERT INTO funcionarios (ID_Funcionario, NM_Funcionario, CPF, ID_Departamento, ID_Gerente) VALUES (1, “JOSE”, “11111111122”, 1, 1); INSERT INTO funcionarios (ID_Funcionario, NM_Funcionario, CPF, ID_Departamento, ID_Gerente) VALUES (2, “JOAO”, “22222222211”, 1, 1);De acordo com o exemplo acima, o ID do gerente é o mesmo que o ID do funcionário para o funcionário”JOSE”. O que significa, por este modelo que ele é o gerente do departamento “CONTABILIDADE” O funcionário “JOAO” também pertence ao departamento “CONTABILIDADE” e possui, como gerente, o funcionário “JOSE”. Link para o comentário Compartilhar em outros sites More sharing options...
0 fjuniorwin Postado Abril 1, 2008 Autor Denunciar Share Postado Abril 1, 2008 Sim amigo,É um auto relacionamento, você por favor, poderia colocar aqui algum exemplo? qualquer um server, com base nele irei montar meu bd. Desde já agradeço a sua atenção.Oi, fjuniorwin!Imagine um cadastro de funcionários em uma empresa. Estes funcionários pertencem a um departamento e estes funcionários possuem um gerente. Um gerente também é um funcionário.CREATE TABLE departamento ( ID_Departamento UNSIGNED INTEGER NOT NULL AUTO_INCREMENT, NM_Departamento VARCHAR(40) NOT NULL, PRIMARY (ID_Departamento) )ENGINE = InnoDB; O campo ID_Departamento abaixo fará relacionamento com a tabela “departamentos” acima. Esta restrição não permite exclusão ou alteração em cascata, porque posso excluir um departamento sem excluir os funcionários. Mas me obriga a transferir os funcionários para outro departamento antes de excluir o departamento que eu quero. O campo ID_Gerente é um campo ALIAS (*1) (conterá as mesmas características e informações do campo ID_Funcionarios) do campo ID_Funcionarios e guardará o identificador do funcionário que um funcionário de um departamento está subordinado. O campo CPF é único para que não possa haver dois registros com o mesmo número de CPF, criei um índice único por este campo. CREATE TABLE funcionarios ( ID_Funcionario UNSIGNED INTEGER NOT NULL AUTO_INCREMENT, NM_Funcionario VARCHAR(60) NOT NULL, CPF CHAR(11) NOT NULL, ID_Departamento UNSIGNED INTEGER NOT NULL DEFAULT 0, ID_Gerente UNSIGNED INTEGER NOT NULL DEFAULT 0, PRIMARY (ID_Funcionario) )ENGINE = InnoDB; CREATE UNIQUE INDEX UK_Funcionartio_IX001 ON funcionarios (CPF); CREATE INDEX AK_Funcionario_IX002 funcionarios(ID_Gerente); ALTER TABLE funcionarios ADD CONSTRAINT FK_Funcionario_IX003 FOREIGN KEY (ID_Departamento) REFERENCES departamento ON DELETE NO ACTION, ON UPDATE NO ACTION; Assim, para cadastrar um funcionário, primeiro necessito cadastrar o(s) departamento(s). INSERT INTO departamentos (ID_Departamento, NM_Departamento) VALUES (1, “CONTABILIDADE”); INSERT INTO funcionarios (ID_Funcionario, NM_Funcionario, CPF, ID_Departamento, ID_Gerente) VALUES (1, “JOSE”, “11111111122”, 1, 1); INSERT INTO funcionarios (ID_Funcionario, NM_Funcionario, CPF, ID_Departamento, ID_Gerente) VALUES (2, “JOAO”, “22222222211”, 1, 1);De acordo com o exemplo acima, o ID do gerente é o mesmo que o ID do funcionário para o funcionário”JOSE”. O que significa, por este modelo que ele é o gerente do departamento “CONTABILIDADE” O funcionário “JOAO” também pertence ao departamento “CONTABILIDADE” e possui, como gerente, o funcionário “JOSE”.Muito obrigado pela sua atenção, você me ajudou muito!Valeu mesmo!!! Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
fjuniorwin
Olá amigos,
Estou com a seguinte dúvida:
Eu tenho uma tabela que preciso relacionar 2 campos entre si, no caso eles estão na mesma tabela.
Como faço?
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados