juniormagalhaes Postado Maio 10, 2012 Denunciar Share Postado Maio 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 10, 2012 Denunciar Share Postado Maio 10, 2012 (editado) 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 Maio 10, 2012 por Kakao Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 juniormagalhaes Postado Maio 11, 2012 Autor Denunciar Share Postado Maio 11, 2012 Obrigado pela ajuda. Vou verificar aqui e postarei a resposta. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 caduff97 Postado Dezembro 16, 2020 Denunciar Share Postado Dezembro 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.