Esse tutorial tambem serve para o Xampp. Mas estou utilizando o Wamp no momento, por isso, nao vou colocar o passo a passo do Xampp.Tanto no Wamp quanto no Xampp, devemos editar o arquivo my.ini.Pesquise como voce pode encontra-lo no Xampp. No Wamp, basta acessar o arquivo atraves do menu - MySQL - my.ini, de acordo com a imagem:Procure o seguinte trecho do arquivo:; The default storage engine that will be used when create new tablesdefault-storage-engine=INNODB; New for MySQL 5.6 default_tmp_storage_engine if skip-innodb enable; default_tmp_storage_engine=INNODBNeste caso, o engine usado e o INNOBD. Se quiser passar a utilizar o MYISAM e so alterar as partes destacadas em vermelho para MYISAM ou vice-versa se ja utilizar este e quiser passar a utilizar o INNOBD.Nao se esqueca de reestartar os servicos do seu servidor local(Wamp / Xampp) para perceber a alteracao.Ps: Se voce esta fazendo isso porque nao estava conseguindo criar chaves estrangeiras ao criar tabelas no Workbench, sugiro que delete as tabelas que estava tentando relacionar, reinicie o aplicativo e recrie as tabelas.Tutorial feito com a versao 5.7.14 do MySQL. De acordo com Liskov (1987), na implementacao de uma heranca as funcoes que usam referencias para objetos de uma classe devem ser capazes de referenciar objetos das subclasses desta classe sem o saberem. Esse e o LSP, Principio da Substituicao de Liskov. Esse principio estabelece que as classes filhas devem implementar a superclasse sem alterar o contrato de implementacao, ou seja, as classes filhas devem implementar o que a superclasse propoe em seu escopo. Para mostrarmos um exemplo de violacao do LSP, considere uma implementacao parecida com o exemplo utilizado por Martin (2006), trata-se da seguinte classe Retangulo:public class Rectangle {private double width, height;public Rectangle(double w, double h) {width = w; height = h;}public double getWidth( ) {return width;}public double getHeight( ) {return height;}public void setWidth(double w){width = w;}public void setHeight(double h){height = h;}public double area( ) {return width*height;}}Agora vejamos a seguinte classe Quadrado, considerando o ponto de vista matematico que todo quadrado e um retangulo:public class Square extends Rectangle { public Square(double w) { super(w,w); } public void setWidth(double w) { // Violacao do principio aqui super.setWidth(w); super.setHeight(w); } public void setHeight(double h) { // Violacao do principio aqui super.setHeight(h); super.setWidth(h); }}Conforme a indicacao dos locais no codigo acima onde o principio e violado, essas linhas da implementacao desrespeitam o contrato de implementacao da superclasse Retangulo na qual quando se modifica a altura, so se modifica a altura e quando se modifica a largura, so se modifica a largura. Na classe Quadrado quando a altura e modificada, a largura tambem e modificada e vice-versa. Verifique o efeito nas funcoes de teste abaixo:static void testLSP(Rectangle r) { r.setWidth(4.0); r.setHeight(8.0); System.out print( 4.0X8.0 = " + r.area( ));}public static void main(String [ ] args) { Rectangle r = new Rectangle(1.0, 1.0); Square s = new Square(1.0); testLSP(r); // Funciona testLSP(s); // Nao Funciona!}Saida:4.0X8.0 = 32.0 (Certo)4.0X8.0 = 64.0 (Errado)Dizemos que testLSP(s) nao funciona por que o resultado impresso nao corresponde ao esperado pela leitura de seu codigo.Vejamos a solucao do problema:public class Rectangle { private