Fórum MySQL Banco de Dados #571006

15/11/2016

0

SQL

Pessoal,
Boa tarde!

Sou nova em Banco de Dados e estou com uma dúvida:
Existe a tabela EMPRESA que tem como colunas: id, nome, cnpj e endereco_id.
Estou conseguindo inserir um cadastro de empresa no mesmo endereço das outras empresa, ou seja, o mesmo id. Como está sendo permitido isso se o relacionamento é de 1:1 entre empresa e endereço?? Quando montei a tabela Empresa eu coloquei endereco_id como chave estrangeira.
Alguém poderia me ajudar?
Janaína Bandeira

Janaína Bandeira

Responder

Post mais votado

16/11/2016

Boa tarde Jana.
Você tem duas situações ai.

Primeira:
O relacionamento 1:1 e 1:N, que no MER e no Modelo Lógico aparecem como sendo coisas diferentes, são implementados da mesma forma.
Assim é fácil de você virar a chave de um para o outro dentro do banco de dados, já que eles são conceituais.
Inclusive, se for realmente 1:1, seria melhor ter colocado o dado de endereço dentro de empresa.

Segunda:
Seu banco já existe e está populado.
Para você poder fazer valer a regra do 1:1, você tem que seguir a dica do Douglas e alterar / criar essa constraint como sendo UNIQUE.

Uma terceira de brinde:
Não faz muito sentido você ter uma tabela de endereços se não pode reutilizar ela.
Não necessariamente seja o seu caso, mas pense em um espaço de COWORKING onde você tem várias pessoas / empresas em um mesmo endereço que se utilizam do mesmo espaço. Você teria um mesmo endereço para várias empresas.

Espero ter conseguido ser claro.

Grande abraço

Luiz Santos

Luiz Santos
Responder

Gostei + 2

Mais Posts

15/11/2016

Luiz Nogueira

Tem como mostrar o relacionamento? Se existir relação com outras tabelas.
Responder

Gostei + 1

16/11/2016

Vagner Carvalho

Veja os relacionamento, e os campos de códigos dever ser único.
Não pode haver duplicidade de códigos.
Responder

Gostei + 1

16/11/2016

Douglas Noronha

Coloque endereco_id como UNIQUE, ou você pode fazer uma verificação antes de inserir os dados.
Responder

Gostei + 1

16/11/2016

Janaína Bandeira

Na tabela ENDERECO eu coloco o id como UNIQUE além de pk? E na tabela EMPRESA o atributo endereco_id coloco qual constraint??
Responder

Gostei + 0

16/11/2016

Janaína Bandeira

O relacionamento é 1:1. Empresas diferentes não devem possuir o mesmo endereço. Só que no banco eu consigo colocar.No aguardo, grata desde já.
Responder

Gostei + 0

16/11/2016

Luiz Santos

Só complementando a resposta a sua duvida.
Pelo fato de id_endereço ser PK em endereço, ele automaticamente já é UNIQUE na tabela endereço.
Logo a CONSTRAINT tem que ser criada no campo id_endereco na tabela empresa.
Lembre-se de limpar os lançamentos em que você repetiu o código do endereço, se não quando você for criar a constraint vai dar erro..

Grande abraço
Responder

Gostei + 0

16/11/2016

Luiz Nogueira

É possivel fazer essas alterações com dados na tabela?
Responder

Gostei + 1

16/11/2016

Janaína Bandeira

conforme o Luiz Santos falou lá em cima deve-se limpar os lançamentos em que você repetiu o código do endereço, se não quando você for criar a constraint vai dar erro..
Responder

Gostei + 0

16/11/2016

Luiz Santos

Luiz, desde que os dados respeitem a regra de "UNIQUE", sim, pode.

Grande abraço
Responder

Gostei + 0

16/11/2016

Janaína Bandeira

Ok farei, muito obrigada!
O bom que as tabelas não estão populadas.
Só mais uma coisa caro Luiz Santos:
Qual o comando que tenho que digitar para inserir a constraint no endereco_id na tabela Empresa??
Responder

Gostei + 0

16/11/2016

Luiz Santos

conforme o Luiz Santos falou lá em cima deve-se limpar os lançamentos em que você repetiu o código do endereço, se não quando você for criar a constraint vai dar erro..


Isso mesmo Jana

:0)
Responder

Gostei + 1

16/11/2016

Janaína Bandeira

Muito obrigada!
Aguardo mais só uma duvidazinha básica:

Qual o comando que tenho que digitar para inserir a constraint no endereco_id na tabela Empresa??
Responder

Gostei + 0

16/11/2016

Luiz Santos

Ok farei, muito obrigada!
O bom que as tabelas não estão populadas.
Só mais uma coisa caro Luiz Santos:
Qual o comando que tenho que digitar para inserir a constraint no endereco_id na tabela Empresa??


ALTER TABLE EMPRESA
ADD CONSTRAINT uc_idEndereco UNIQUE (id_endereco)


Só alterar o nome da tabela e do campo de acordo com o seu modelo

Grande abraço
Responder

Gostei + 1

16/11/2016

Janaína Bandeira

Ok farei, muito obrigada!
O bom que as tabelas não estão populadas.
Só mais uma coisa caro Luiz Santos:
Qual o comando que tenho que digitar para inserir a constraint no endereco_id na tabela Empresa??


[code]
ALTER TABLE EMPRESA
ADD CONSTRAINT uc_idEndereco UNIQUE (id_endereco)
[Muito obrigada irei tentar.]

Só alterar o nome da tabela e do campo de acordo com o seu modelo

Grande abraço
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar