HSilva 0 Denunciar post Postado Junho 5, 2009 Olá Galera! Salve! Sou novo no fórum e novo em modelagem. Peço uma ajuda para entender uma coisa. Pesquisei, mas não achei. Estou aprendendo MySQL, e já fiz trabalhos básicos para a facu. Notei uma coisa, usando o DBDesigner e o Workbench 5: quando eu faço relacionamentos entre 3 ou mais tabelas, elas vão "herdando" as Foreign keys de outras tabelas (nao necessárias) como no exemplo a seguir: 1- Aqui só preciso de: a - O idtipo.tipoUsuario como foreign key em usuario - ok está certo b - O idUsuario.usuario como foreign key em locDomicilio - aí neste caso o diagrama herda a foreign kei da table tipoUsuario (coisa que eu nao quero). Pergunto: Isso é padrão? É o correto? Ou eu que tenho o conhecimento errado? Pois que basicamente aprendi é que preciso apenas da foreign key que vou usar e não daquelas que estão sendo herdadas da tabela anterior...deu pra entender a dúvida? heheh http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 6, 2009 sugiro re-estruturar as tabelas Na tabela "usuario", está incluindo campos para endereço, contato, etc. Sugiro separar os detalhamentos para tornar o sistema flexível. exemplo Person ID Name Surname BirthDate Genre Address ID PersonID Country PostalCode Province City Local LocalAdd Attribute Contact ID PersonID Email Number Type Attribute PersonDetail IDPerson AccountType obs: Saliento que é apenas um exemplo ilustrativo a caráter de aprendizado. Não quer dizer que seja o método correto ou que seja o melhor método. A escolha de métodos varia de acordo com as necessidades. Compartilhar este post Link para o post Compartilhar em outros sites
HSilva 0 Denunciar post Postado Junho 7, 2009 sugiro re-estruturar as tabelas Na tabela "usuario", está incluindo campos para endereço, contato, etc. Sugiro separar os detalhamentos para tornar o sistema flexível. exemplo Person ID Name Surname BirthDate Genre Address ID PersonID Country PostalCode Province City Local LocalAdd Attribute Contact ID PersonID Email Number Type Attribute PersonDetail IDPerson AccountType obs: Saliento que é apenas um exemplo ilustrativo a caráter de aprendizado. Não quer dizer que seja o método correto ou que seja o melhor método. A escolha de métodos varia de acordo com as necessidades. Olá! Obrigado pela dica Hinom, http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Entendi sua dica! Mas a dúvida é quanto ao diagrama do Workbench, se é normal ele herdar oas foreign keys de outras tabelas nao diretamente relacionadas. :mellow: Valeu! Aguardo! E parabéns pelo Fórum tem muitos recursos interessantes aqui no iMasters. ABC Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 10, 2009 O MySQL Workbench não cria indexações automaticamente. Precisa que sejam especificadas. Qual versão está usando ? Fiz um teste rápido com a versão 5.0 e não vi nenhuma "anormalidade" SQL SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `mydb`; -- ----------------------------------------------------- -- Table `mydb`.`table1` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`table1` ( `id` INT NOT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`table2` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`table2` ( `idtable2` INT NOT NULL , `id` NOT NULL , PRIMARY KEY (`idtable2`) , INDEX `id` (`id` ASC) , CONSTRAINT `id` FOREIGN KEY (`id` ) REFERENCES `mydb`.`table1` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`table3` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`table3` ( `idtable3` INT NOT NULL AUTO_INCREMENT , `id` INT NOT NULL , PRIMARY KEY (`idtable3`) ) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; Compartilhar este post Link para o post Compartilhar em outros sites
Cabrinha 0 Denunciar post Postado Junho 17, 2010 Olá Galera! Salve! Sou novo no fórum e novo em modelagem. Peço uma ajuda para entender uma coisa. Pesquisei, mas não achei. Estou aprendendo MySQL, e já fiz trabalhos básicos para a facu. Notei uma coisa, usando o DBDesigner e o Workbench 5: quando eu faço relacionamentos entre 3 ou mais tabelas, elas vão "herdando" as Foreign keys de outras tabelas (nao necessárias) como no exemplo a seguir: 1- Aqui só preciso de: a - O idtipo.tipoUsuario como foreign key em usuario - ok está certo b - O idUsuario.usuario como foreign key em locDomicilio - aí neste caso o diagrama herda a foreign kei da table tipoUsuario (coisa que eu nao quero). Pergunto: Isso é padrão? É o correto? Ou eu que tenho o conhecimento errado? Pois que basicamente aprendi é que preciso apenas da foreign key que vou usar e não daquelas que estão sendo herdadas da tabela anterior...deu pra entender a dúvida? heheh http://forum.imasters.com.br/public/style_emoticons/default/upset.gif então.. acontece que para criar as chaves estrangeiras você ta usando a opção relação identificável(não se é essa a palavra "Identifying Relationship") que além de criar uma chave estrangeira ainda a transforma em chave primaria da tabela filha, você tem q usar a opção de Non-Identifying Relationship!! Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Junho 17, 2010 Olá Cabrinha, Obrigado por compartilhar seu conhecimento conosco. Continue contribuindo respondendo os tópicos mais recentes. Abraços Mário Monteiro Compartilhar este post Link para o post Compartilhar em outros sites