Usuário com melhor resposta
Consulta /inserir

Pergunta
-
Respostas
-
Não sei se entendi direito mas , isso vai depender da sua regra de negócio.
pense no caso se:
um funcionário tem apenas um chefe , temos um relacionamento 1 para 1
então basta vc ter uma chave na tabela funcionário que corresponda ão chefe ,
exemplo relacionamento 1 para 1 :
CREATE TABLE Funcionario ( Codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1) , Nome VARCHAR(MAX) NOT NULL , email VARCHAR(MAX) , codigoChefe INT FOREIGN KEY REFERENCES Chefe(Codigo) ); CREATE TABLE Chefe ( Codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1) , Nome VARCHAR(MAX) NOT NULL , email VARCHAR(MAX) , Setor VARCHAR(MAX) );
Nesse exemplo acima vc consegue fazer a inserção na tabela funcionário o Id Correspondente do Chefe
seque o Exemplo :
INSERT INTO dbo.Chefe ( Nome, email, Setor ) VALUES ( 'Esposa', -- Nome - varchar(max) 'esposa@esposa', -- email - varchar(max) 'Todos' -- Setor - varchar(max) ) INSERT INTO dbo.Funcionario ( Nome, email, codigoChefe ) VALUES ( 'Wesley Neves', -- Nome - varchar(max) 'wesley.si.neves@gmail.com', -- email - varchar(max) 1 -- codigoChefe - int )
Agora Caso a regra do seu negocio for que um funcionário pode ter 1 ou mais chefes
temos um relacionamento 1 para N (logo precisamos fazer uma tabela associativa
segue o exemplo
CREATE TABLE Chefe ( Codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1) , Nome VARCHAR(MAX) NOT NULL , email VARCHAR(MAX) , Setor VARCHAR(MAX) ); CREATE TABLE Funcionario ( Codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1) , Nome VARCHAR(MAX) NOT NULL , email VARCHAR(MAX) , ); CREATE TABLE ChefesFuncionarios ( IdChefeFuncionario UNIQUEIDENTIFIER NOT NULL PRIMARY KEY, IdChefe INT FOREIGN KEY REFERENCES dbo.Chefe(Codigo), IdFuncionario INT FOREIGN KEY REFERENCES dbo.Funcionario(Codigo) ) INSERT INTO dbo.Chefe ( Nome, email, Setor ) VALUES ( 'Gerente de Infra', -- Nome - varchar(max) 'gerenciaTi@gerenciaTi', -- email - varchar(max) 'Infra' -- Setor - varchar(max) ) INSERT INTO dbo.Chefe ( Nome, email, Setor ) VALUES ( 'Gerente de Desenvolvimento', -- Nome - varchar(max) 'gerenciaTi@gerenciaDesenvolvimento', -- email - varchar(max) 'Desenvolvimento' -- Setor - varchar(max) ) /*Realiza o primeiro insert de funcionario*/ INSERT INTO dbo.Funcionario ( Nome, email ) VALUES ( 'Wesley Neves', -- Nome - varchar(max) 'wesley.si.neves@gmail.com'-- email - varchar(max) ) /*Realiza a associação para o chefe 1*/ INSERT INTO dbo.ChefesFuncionarios ( IdChefeFuncionario , IdChefe , IdFuncionario ) VALUES ( NEWID() , -- IdChefeFuncionario - uniqueidentifier 1 , -- IdChefe - int 1 -- IdFuncionario - int ) /*Realiza a associação para o chefe 2*/ INSERT INTO dbo.ChefesFuncionarios ( IdChefeFuncionario , IdChefe , IdFuncionario ) VALUES ( NEWID() , -- IdChefeFuncionario - uniqueidentifier 2 , -- IdChefe - int 1 -- IdFuncionario - int )
para juntas as tabelas basta fazer um Join
SELECT * FROM dbo.Funcionario AS F
JOIN dbo.ChefesFuncionarios AS CF ON CF.IdFuncionario = F.Codigo
JOIN dbo.Chefe AS C ON C.Codigo = CF.IdChefe
Wesley Neves
- Editado Wesley Neves sexta-feira, 23 de dezembro de 2016 01:17 correção
- Marcado como Resposta Filipe B CastroModerator terça-feira, 10 de abril de 2018 19:45
Todas as Respostas
-
Não sei se entendi direito mas , isso vai depender da sua regra de negócio.
pense no caso se:
um funcionário tem apenas um chefe , temos um relacionamento 1 para 1
então basta vc ter uma chave na tabela funcionário que corresponda ão chefe ,
exemplo relacionamento 1 para 1 :
CREATE TABLE Funcionario ( Codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1) , Nome VARCHAR(MAX) NOT NULL , email VARCHAR(MAX) , codigoChefe INT FOREIGN KEY REFERENCES Chefe(Codigo) ); CREATE TABLE Chefe ( Codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1) , Nome VARCHAR(MAX) NOT NULL , email VARCHAR(MAX) , Setor VARCHAR(MAX) );
Nesse exemplo acima vc consegue fazer a inserção na tabela funcionário o Id Correspondente do Chefe
seque o Exemplo :
INSERT INTO dbo.Chefe ( Nome, email, Setor ) VALUES ( 'Esposa', -- Nome - varchar(max) 'esposa@esposa', -- email - varchar(max) 'Todos' -- Setor - varchar(max) ) INSERT INTO dbo.Funcionario ( Nome, email, codigoChefe ) VALUES ( 'Wesley Neves', -- Nome - varchar(max) 'wesley.si.neves@gmail.com', -- email - varchar(max) 1 -- codigoChefe - int )
Agora Caso a regra do seu negocio for que um funcionário pode ter 1 ou mais chefes
temos um relacionamento 1 para N (logo precisamos fazer uma tabela associativa
segue o exemplo
CREATE TABLE Chefe ( Codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1) , Nome VARCHAR(MAX) NOT NULL , email VARCHAR(MAX) , Setor VARCHAR(MAX) ); CREATE TABLE Funcionario ( Codigo INT NOT NULL PRIMARY KEY IDENTITY(1, 1) , Nome VARCHAR(MAX) NOT NULL , email VARCHAR(MAX) , ); CREATE TABLE ChefesFuncionarios ( IdChefeFuncionario UNIQUEIDENTIFIER NOT NULL PRIMARY KEY, IdChefe INT FOREIGN KEY REFERENCES dbo.Chefe(Codigo), IdFuncionario INT FOREIGN KEY REFERENCES dbo.Funcionario(Codigo) ) INSERT INTO dbo.Chefe ( Nome, email, Setor ) VALUES ( 'Gerente de Infra', -- Nome - varchar(max) 'gerenciaTi@gerenciaTi', -- email - varchar(max) 'Infra' -- Setor - varchar(max) ) INSERT INTO dbo.Chefe ( Nome, email, Setor ) VALUES ( 'Gerente de Desenvolvimento', -- Nome - varchar(max) 'gerenciaTi@gerenciaDesenvolvimento', -- email - varchar(max) 'Desenvolvimento' -- Setor - varchar(max) ) /*Realiza o primeiro insert de funcionario*/ INSERT INTO dbo.Funcionario ( Nome, email ) VALUES ( 'Wesley Neves', -- Nome - varchar(max) 'wesley.si.neves@gmail.com'-- email - varchar(max) ) /*Realiza a associação para o chefe 1*/ INSERT INTO dbo.ChefesFuncionarios ( IdChefeFuncionario , IdChefe , IdFuncionario ) VALUES ( NEWID() , -- IdChefeFuncionario - uniqueidentifier 1 , -- IdChefe - int 1 -- IdFuncionario - int ) /*Realiza a associação para o chefe 2*/ INSERT INTO dbo.ChefesFuncionarios ( IdChefeFuncionario , IdChefe , IdFuncionario ) VALUES ( NEWID() , -- IdChefeFuncionario - uniqueidentifier 2 , -- IdChefe - int 1 -- IdFuncionario - int )
para juntas as tabelas basta fazer um Join
SELECT * FROM dbo.Funcionario AS F
JOIN dbo.ChefesFuncionarios AS CF ON CF.IdFuncionario = F.Codigo
JOIN dbo.Chefe AS C ON C.Codigo = CF.IdChefe
Wesley Neves
- Editado Wesley Neves sexta-feira, 23 de dezembro de 2016 01:17 correção
- Marcado como Resposta Filipe B CastroModerator terça-feira, 10 de abril de 2018 19:45
-