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

Relacionamento (1,1) de Chave Estrangeira


juniormagalhaes

Pergunta

Olá a todos!

Existe uma tabela chamada LOJA e outra tabela chamada EMPREGADO.

A loja possui somente um gerente (EMPREGADO) e o gerente só pode

pertencer a apenas uma LOJA. Assim, o relacionamento entre as tabelas

é um para um. No máximo um gerente por loja e no máximo uma loja

por gerente. Minha dúvida é como fazer isso?

Segue abaixo o código:

create table loja (

codigo numeric (3) primary key,

nome varchar (40),

telefone numeric (10)

);

create table empregado (

matricula numeric (3) primary key,

nome_funcionario varchar (40)

);

Pelo que sei, se inserir um campo na tabela empregado chamado CODIGO_LOJA,

e torná-lo uma chave estrangeira que faz referência ao atributo CODIGO da tabela loja

sera possível existir vários empregados para uma mesma loja. Como tornar um para um?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

A solução mais simples é incluir a coluna gerente na tabela loja fazendo referência para a tabela empregado:

create table loja (
    codigo numeric (3) primary key,
    nome varchar (40),
    telefone numeric (10),
    gerente_matricula numeric(3) references empregado (matricula)
);

Eu usei o tipo numeric na minha resposta só para ficar compatível com o seu código. Mas é melhor usar integer nos campos de matrícula e de código.

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

  • 0

@juniormagalhaes para resolver o problema de não ter vários empregados (gerentes) para a mesma loja, o campo CODIGO_LOJA na tabela EMPREGADO deve ser UNIQUE. Da seguinte forma:

 

CREATE TABLE loja (
	codigo SERIAL PRIMARY KEY,
	nome VARCHAR(40),
	telefone NUMERIC(10)
);

CREATE TABLE empregado (
	matricula SERIAL PRIMARY KEY,
	nome_funcionario VARCHAR(40),
	codigo_loja INT UNIQUE NOT NULL REFERENCES loja(codigo)
);

Obs.: Os campos CODIGO e MATRICULA podem ser um SERIAL PRIMARY KEY, que irá autoincrementar 1 a cada linha.

Obs2.: O campo CODIGO_LOJA pode ser NOT NULL para forçar que seja inserida a referência da loja.

 

Abraços,

Cadu

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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