Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/03/2014, 12:30
MatyD
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Duda sobre Constraint e indices!

Como están?

Estoy practicando con el tema integridad referencial, y tengo una duda sobre CONSTRAINT.

Mi problema es con el indice creado al utilizar constraint. Veo varios ejemplos y la gente utiliza diferentes métodos.

Bien mi duda es la siguiente, que método de los 2 que dejo debajo es "más" recomendado.

O si hay mucha diferencia entre ambos método explicarme cual es especificamente porque no logro verla de manera detallada.

Este es el primero como pueden ver identifico un índice para la columna tipo_usuario

Código MySQL:
Ver original
  1. CREATE TABLE tipo_usuario(
  2.     id_tipo_usuario INT UNSIGNED AUTO_INCREMENT,
  3.     descripcion VARCHAR(8),
  4.     PRIMARY KEY(id_tipo_usuario),
  5. ) ENGINE=innodb DEFAULT CHARACTER SET =utf8 COLLATE=utf8_spahish_ci;
  6.  
  7. CREATE TABLE usuarios(
  8.     id_usuario INT UNSIGNED AUTO_INCREMENT,
  9.     usuario VARCHAR(20) NOT NULL,
  10.     contrasena VARCHAR(64) NOT NULL,
  11.     nombre VARCHAR(20) NOT NULL,
  12.     apellido VARCHAR(20) NOT NULL,
  13.     mail VARCHAR(50),
  14.     tipo_usuario INT UNSIGNED,
  15.     id_local INT UNSIGNED,
  16.     esadmin INT DEFAULT '0',
  17.     puntos INT DEFAULT '0',
  18.     PRIMARY KEY(id_usuario),
  19.     UNIQUE usuario(usuario),
  20.     UNIQUE correo(email),
  21.     INDEX nombre(nombre),
  22.     INDEX fk_tipo_usuario_1(tipo_usuario),
  23.     CONSTRAINT tipo_usuario
  24.         FOREIGN KEY(tipo_usuario)
  25.         REFERENCES tipo_usuario(id_tipo_usuario)
  26.         ON DELETE NO ACTION
  27.         ON UPDATE NO ACTION
  28. ) ENGINE=innodb DEFAULT CHARACTER SET =utf8 COLLATE=utf8_spahish_ci;

Aquí no se identifica el índice antes de constraint sino que se hace directamente en el constraint
Código MySQL:
Ver original
  1. CREATE TABLE tipo_usuario(
  2.     id_tipo_usuario INT UNSIGNED AUTO_INCREMENT,
  3.     descripcion VARCHAR(8),
  4.     PRIMARY KEY(id_tipo_usuario),
  5. ) ENGINE=innodb DEFAULT CHARACTER SET =utf8 COLLATE=utf8_spahish_ci;
  6.  
  7. CREATE TABLE usuarios(
  8.     id_usuario INT UNSIGNED AUTO_INCREMENT,
  9.     usuario VARCHAR(20) NOT NULL,
  10.     contrasena VARCHAR(64) NOT NULL,
  11.     nombre VARCHAR(20) NOT NULL,
  12.     apellido VARCHAR(20) NOT NULL,
  13.     mail VARCHAR(50),
  14.     tipo_usuario INT UNSIGNED,
  15.     id_local INT UNSIGNED,
  16.     esadmin INT DEFAULT '0',
  17.     puntos INT DEFAULT '0',
  18.     PRIMARY KEY(id_usuario),
  19.     UNIQUE usuario(usuario),
  20.     UNIQUE correo(email),
  21.     INDEX nombre(nombre),
  22.     CONSTRAINT fk_tipo_usuario_1
  23.         FOREIGN KEY(tipo_usuario)
  24.         REFERENCES tipo_usuario(id_tipo_usuario)
  25.         ON DELETE NO ACTION
  26.         ON UPDATE NO ACTION
  27. ) ENGINE=innodb DEFAULT CHARACTER SET =utf8 COLLATE=utf8_spahish_ci;