Jump to content
Fórum Script Brasil
  • 0

Relacionamento (1,1) de Chave Estrangeira


Question

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 to post
Share on other sites

3 answers to this question

Recommended Posts

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

Edited by Kakao
Link to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149413
    • Total Posts
      645906
×
×
  • Create New...