O MySQL, a partir da versão 3.23.43b, passa a incorporar o recurso de criação e manutenção de tabelas do tipo InnoDB. Tabelas do tipo InnoDB suportam restrições por chave estrangeira e o uso de stored procedures. Assim, se você quer modelar/desenvolver bancos implementando o recurso de chaves estrangeiras, suas tabelas terão que ser do tipo InnoDB.
Criando tabelas
Para criar tabelas do tipo InnoDB, você deverá incluir no final da tabela a seguinte sintaxe:
ENGINE = innodb;
Veja exemplos de criação de tabelas.
CREATE TABLE "cidades" (
"codcidade" INT NOT NULL ,
"descricao" VARCHAR( 50 ) NOT NULL
) ENGINE = innodb;
CREATE TABLE "clientes" (
"codcliente" INT PRIMARY KEY ,
"nome" VARCHAR( 50 ) NOT NULL
) ENGINE = innodb;
CREATE TABLE "vendedores" (
"codvendedor" INT PRIMARY KEY ,
"nome" VARCHAR( 50 ) NOT NULL
) ENGINE = innodb;
CREATE TABLE "vendas" (
"codvenda" INT PRIMARY KEY ,
"datavenda" DATE NOT NULL
"codcliente" INT,
"codvendedor" INT
) ENGINE = innodb;
Após criar as tabelas, você fará uma alteração na estrutura de cada tabela que necessita utilizar a chave estrangeira. Essa alteração da estrutura da tabela é feita a partir do comando alter table.
Veja alguns exemplos:
ALTER TABLE "clientes" ADD CONSTRAINT "fk_cidade" FOREIGN KEY ( "codcidade" ) REFERENCES "cidade" ( "codcidade" ) ;
ALTER TABLE "vendas" ADD CONSTRAINT "fk_vendas_codcliente" FOREIGN KEY ( "codcliente" ) REFERENCES "clientes" ( " codcliente " ) ;
ALTER TABLE "vendas" ADD CONSTRAINT "fk_vendas_codvendedor" FOREIGN KEY ( "codvendedor" ) REFERENCES "vendedores" ( " codvendedor " ) ;
Após criar as chaves estrangeiras vamos verificar a estrutura das tabelas utilizando o comando DESC. Digite DESC vendas para visualizar a estrutura da tabela vendas.
Conclusões
Neste artigo foram apresentados exemplos práticos da criação de chaves estrangeiras a partir do uso de de tabelas do tipo InnoDB.