Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dúvida sobre relacionamentos


fjuniorwin

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

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

  • 0
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

  • 0
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

  • 0
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

  • 0
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

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...