Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/07/2011, 09:34
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: primary key compuesta - auto_increment

No se entiende mucho por qué tienes esa duda.
Es obvio (ver notas delmanual de referencia más abajo) que si se puede desde el momento en que así trabajan todos los DBMS relacionales (RDBMS), y MySQL lo es con tablas InnoDB.
Simplemente debes crear la PK con esa definición: con ambos campos.
Ahora bien, como una parte de la clave es FK, debes, al mismo tiempo, definir ese campo como FK de la tabla de la que dependa.

Toma el manual y hazlo. Después nos cuentas qué tal te fue:
3.6.6. Usar claves foráneas (foreign keys)
15.6.4. Restricciones (constraints) FOREIGN KEY

Sobre la PK:
Cita:
KEY normalemente es sinónimo para INDEX. En MySQL 5.0, el atributo clave PRIMARY KEY puede especificarse como KEY cuando se da en una definición de columna. Esto se implementó por compatibilidad con otros sistemas de bases de datos.

En MySQL, un índice UNIQUE es uno en que todos los valores en el índice deben ser distintos. Ocurre un error si intenta añadir un nuevo registro con una clave que coincida con un registro existente. La excepción es que una columna en el índice puede contener valores NULL , puede contener valores NULL múltiples. Esta excepción no se aplica a tablas BDB , en las que una columna indexada le permita un único NULL.

Una PRIMARY KEY es una KEY única donde todas las columnas de la clave deben definirse como NOT NULL. Si no se declaran explícitamente como NOT NULL, MySQL las declara implícitamente ( y sin decirlo ) . Una tabla puede tener sólo una PRIMARY KEY. Si no tiene una PRIMARY KEY y una aplicación pide una PRIMARY KEY en sus tablas, MySQL retorna el primer índice UNIQUE que no tenga columnas NULL como la PRIMARY KEY.

En la tabla creada, una PRIMARY KEY se guarda en primer lugar, seguida por todos los índices UNIQUE, y luego los índices no únicos. Esto ayuda al optimizador MySQL a priorizar qué indice usar y también detectar más rápido claves UNIQUE duplicadas.

Una PRIMARY KEY puede ser un índice de múltiples columnas. Sin embargo, no puede crear un índice de múltiples columnas usando el atributo de clave PRIMARY KEY en una especificación de columna. Hacerlo sólo marca la columna como primaria. Debe usar una cláusula PRIMARY KEY(index_col_name, ...) separada.

Si un índice PRIMARY KEY o UNIQUE consite sólo de una columna que tenga un tipo entero, puede referirse a la columna como _rowid en comandos SELECT.

En MySQL, el nombre de una PRIMARY KEY es PRIMARY. Para otros índices, si no asigna un nombre, el índice tieen el mismo nombre que la primera columna indexada, con un sufijo opcional (_2, _3, ...) para hacerlo único. Puede ver los nombres de índice para una tabla usando SHOW INDEX FROM tbl_name. Consulte Sección 13.5.4.11, “Sintaxis de SHOW INDEX”.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)