MySQL Banco de Dados
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?
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
Curtidas 0
Melhor post
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
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
15/11/2016
Tem como mostrar o relacionamento? Se existir relação com outras tabelas.
GOSTEI 1
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.
Não pode haver duplicidade de códigos.
GOSTEI 1
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
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
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
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
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
15/11/2016
É possivel fazer essas alterações com dados na tabela?
GOSTEI 1
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
15/11/2016
Luiz, desde que os dados respeitem a regra de "UNIQUE", sim, pode.
Grande abraço
Grande abraço
GOSTEI 0
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??
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
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
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??
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
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??
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
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??
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