MySql 5.0.22 – Configurando Foreign key (InnoDB)
Usar chaves estrangeiras no MySql pode se tornar algo meio “trabalhoso”.
A importância do uso das mesmas, refiro-me às Foreign keys, nós estamos calejados de saber.
Caso você utilize phpMyAdmin para criar as tabelas de seu banco, e não está familiarizado com Sqls, como este:
CREATE TABLE tb_pais(id_pais INT NOT NULL,descricao VARCHAR(250), PRIMARY KEY (id_pais)) TYPE=INNODB;
CREATE TABLE tb_cidade(id_cidade INT, id_pais INT,descricao VARCHAR(250), INDEX pais_ind (id_pais),
FOREIGN KEY (id_pais) REFERENCES tb_pais(id_pais) ON DELETE CASCADE ON UPDATE CASCADE) TYPE=INNODB;
Vamos lá às dicas (estou considerando que o banco da aplicação já foi criado, iremos às tabelas):
1. Certifique-se que as tabelas estão operando em InnoDB (no caso acima, seriam as duas tabelas: tb_pais e tb_cidade). Isso vc pode configurar clicando na tabela desejada, e indo na aba “Operações”, colocando a opção “InnoDB” no campo “Storage Engine”. O default costuma ser o MyISAM, deve-se mudar.
2. Crie um índice no atributo que será a chave estrangeira (clica na aba “estrutura”, e em Ações clica em “índice”). No exemplo acima, seria o atributo id_pais da tabela tb_cidade. Automaticamente será gerado um índice com o nome do atributo.
3. Após gerado o índice para o atributo, clique em “ver relações”. Teremos 3 campos para configurar. No primeiro campo escolha a relação que este atributo terá com a tabela-mãe (no exemplo acima seria, “tb_pais -> id_pais“), nos demais campos você irá escolher a ação (cascate, restrict, set null, no action) que deverá ser feita ao deletar e/ou atualizar a tabela-mãe.
Explicando rapidamente: cascate é quando a tupla da tabela-mãe é deletada, todas as tuplas referenciadas nas tabelas-filha também serão, num efeito “cascata”; restrict é o contrário, enquanto houver referencia não pode deletar; set null insere valor null na tupla referenciada, considerando o mesmo contexto; e no action trata as tabelas-filhas como independentes e não ocorre mudança alguma, mesmo que deletando a tabela-mãe.
Pronto! Trabalho concluído, mãos à obra!
-
Arquivos
- janeiro 2012 (1)
- novembro 2011 (2)
- maio 2011 (1)
- janeiro 2008 (1)
- outubro 2007 (3)
- junho 2007 (2)
- maio 2007 (3)
-
Categorias
-
RSS
RSS Entradas
RSS Comentários