juniormagalhaes Posted May 10, 2012 Report Share Posted May 10, 2012 Olá a todos!Existe uma tabela chamada LOJA e outra tabela chamada EMPREGADO.A loja possui somente um gerente (EMPREGADO) e o gerente só podepertencer 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 lojapor 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 lojasera possível existir vários empregados para uma mesma loja. Como tornar um para um? Quote Link to comment Share on other sites More sharing options...
0 Kakao Posted May 10, 2012 Report Share Posted May 10, 2012 (edited) 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 May 10, 2012 by Kakao Quote Link to comment Share on other sites More sharing options...
0 juniormagalhaes Posted May 11, 2012 Author Report Share Posted May 11, 2012 Obrigado pela ajuda. Vou verificar aqui e postarei a resposta. Quote Link to comment Share on other sites More sharing options...
0 caduff97 Posted December 16, 2020 Report Share Posted December 16, 2020 @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 Quote Link to comment Share on other sites More sharing options...
Question
juniormagalhaes
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 comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.