Pessoal, normalmente faço modelagem de banco de dados usando o CA ErWin, mas precisei utilizar a ferramenta de modelagem do MySQL Workbench 8.0 Community.
O problema ocorre quando a ferramenta começa a "enfeitar o pavão" quando se trata de FK. Vou mostrar um exemplo básico:
Temos aqui 3 tabelas representando condomínio, unidades e vagas. As vagas pertencem ao condomínio, assim como as unidades. As vagas podem pertencer a unidades diferentes no decorrer do tempo porque não são vagas fixas, portanto não posso pendurar vaga na unidade.
Problema 1: FK recebe o nome da tabela origem automaticamente.
Até aqui posso renomear o atributo ou alterar as configurações de modelagem.
Atributos renomeados, temos o seguinte modelo representado acima. Agora vamos levar a PK da entidade UNIDADE para ser FK não identificação na entidade VAGA.
E agora temos o Problema 2: a ferramenta não entende que o atributo CondomínioID já existe e cria novamente com o prefixo da entidade origem. Parece um problema besta e fácil de resolver apagando o atributo duplicado e mantendo apenas UnidadeID, mas ao sincronizar com o banco de dados, começam a surgir erros com índices.
Abaixo mostro como fica a modelagem no ERWin sem qualquer interferência:
Como podem ver, a modelagem fica perfeita. O ErWin entende que o atributo já existe na entidade e leva apenas o atributo que vai diferenciar para fazer o relacionamento.
Vocês devem estar se perguntando por que eu não uso o ErWin então... Mas a versão do ErWin que tenho não suporta MySQL após a versão 5.x e uma licença nova dessa ferramenta vai me custar 1 rim, senão os 2... Teoricamente, o Workbench deveria fazer essa modelagem sem problemas, mas eu não conheço bem e talvez possa ser alguma configuração. Alguém teria uma luz?
Obrigado.
O que acontece é que como já temos dados nas mesmas não estou conseguindo criar a chave estrangeira abaixo, tem alguma ideia de como criar a mesma sem alterar os dados??
ALTER TABLE `tb_dados` ADD FOREIGN KEY (`id_cliente`) REFERENCES `tb_cliente`(`id_cliente`) ON DELETE CASCADE
Obrigado.
Bom dia senhores.
Estou dando manutenção em uma banco de dados que não estava normalizado, sem chaves estrangeiras etc etc
depois de cria-las, quando vou importar os dados, acontecem vários erros, pq tem chaves primárias que foram excluidas
e no caso da estrangeira, fica ausente.
No phpmyadmin tem a opção de não checar as chaves, mas não gostaria de manter dados que não existem.
Qual a forma mais fácil de eu encontrar os registros que estão referenciados á um chave primária que não existe?
já procurei na internet e até encontrei muito artigo relacionado, mas ainda estou com muito dificuldade para exibir os dados da tabela principal (usuario) com a tabela (empresas - estrangeira)
o usuário do site, ao se cadastrar, vai inserir seus dados e a empresa em que trabalha. Em seguida, a página referente aquela empresa (ex: atento.php) deve exibir todos os usuários daquela empresa entenderam ?
- o nome do Banco de Dados "TrocaEmpresas"
a tabela é essa:
supondo que na tabela empresas esteja assim:
id: 1
Nome: Atento
Considerando que preciso exibir apenas o "nome ", "sobrenome" , "email" e "Empresa", como faço para exibir todos os usuários cadastrados nessa empresa na página atento.php ?
encontrei muita coisa sobre INNER JOIN, mas não consigo de jeito nenhum fazer funcionar, eu não estou entendendo muito bem o funcionamento, agradeço a disposição dos que me ajudarem a esclarecer essa dificuldade.
Bom dia a todos, então estou com uma duvida em banco de dados MySQL, como faria um insert nessas duas tabelas?
CREATE TABLE IF NOT EXISTS `cria`.`usuario` (
`iduser` INT(10) NOT NULL AUTO_INCREMENT,
`nomeuser` VARCHAR(50) NOT NULL,
`telefoneuser` BIGINT(20) NOT NULL,
`celularuser` BIGINT(20) NOT NULL,
`emailuser` VARCHAR(45) NOT NULL,
`senhauser` VARCHAR(50) NOT NULL,
`img_user` VARCHAR(300) NOT NULL,
PRIMARY KEY (`iduser`),
UNIQUE INDEX `emailuser` (`emailuser` ASC),
INDEX `fk_usuario_animal1_idx` (`iduser` ASC),
CONSTRAINT `fk_usuario_animal1`
FOREIGN KEY (`iduser`)
REFERENCES `cria`.`animal` (`idanimal`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = latin1;
CREATE TABLE IF NOT EXISTS `cria`.`animal` (
`idanimal` INT(10) NOT NULL AUTO_INCREMENT,
`nomeanimal` VARCHAR(30) NOT NULL,
`raca` VARCHAR(20) NOT NULL,
`vacinas` VARCHAR(20) NOT NULL,
`animal_img` VARCHAR(300) NOT NULL,
PRIMARY KEY (`idanimal`))
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = latin1;
Então eu sei que tenho que fazer select join, mas não sei se como colocar o 'value' nisso:
insert into usuario
(
nomeuser, telefoneuser, celularuser, emailuser, senhauser, img_user
)
(
SELECT nomeuser, telefoneuser, celularuser, emailuser, senhauser, img_user FROM usuario
JOIN animal ON usuario.iduser = animal.idanimal
) ;
aonde eu colocaria os valores? Lembrando que depois colocarei em php os comandos(mesmo que não faça diferença rs).