MySQL Banco de Dados

SQL

15/11/2016

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

Curtidas 0

Melhor post

Luiz Santos

Luiz Santos

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
GOSTEI 2

Mais Respostas

Luiz Nogueira

Luiz Nogueira

15/11/2016

Tem como mostrar o relacionamento? Se existir relação com outras tabelas.
GOSTEI 1
Vagner Carvalho

Vagner Carvalho

15/11/2016

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

Douglas Noronha

15/11/2016

Coloque endereco_id como UNIQUE, ou você pode fazer uma verificação antes de inserir os dados.
GOSTEI 1
Janaína Bandeira

Janaína Bandeira

15/11/2016

Na tabela ENDERECO eu coloco o id como UNIQUE além de pk? E na tabela EMPRESA o atributo endereco_id coloco qual constraint??
GOSTEI 0
Janaína Bandeira

Janaína Bandeira

15/11/2016

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á.
GOSTEI 0
Luiz Santos

Luiz Santos

15/11/2016

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
GOSTEI 0
Luiz Nogueira

Luiz Nogueira

15/11/2016

É possivel fazer essas alterações com dados na tabela?
GOSTEI 1
Janaína Bandeira

Janaína Bandeira

15/11/2016

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..
GOSTEI 0
Luiz Santos

Luiz Santos

15/11/2016

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

Grande abraço
GOSTEI 0
Janaína Bandeira

Janaína Bandeira

15/11/2016

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??
GOSTEI 0
Luiz Santos

Luiz Santos

15/11/2016

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)
GOSTEI 1
Janaína Bandeira

Janaína Bandeira

15/11/2016

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??
GOSTEI 0
Luiz Santos

Luiz Santos

15/11/2016

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
GOSTEI 1
Janaína Bandeira

Janaína Bandeira

15/11/2016

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
GOSTEI 0
POSTAR