Sí, puede hacerlo (y debe hacerlo, desde el punto de vista del diseño de la base de datos).
Sin embargo, considere qué significa si user_id
es la clave principal en la tabla 2. En efecto, dice que cada fila en la tabla 2 corresponde a un usuario, pero ya tiene una tabla donde cada fila corresponde a un usuario: tabla 1. Esto plantea la pregunta "¿por qué no pone todos los datos de la tabla 2 en columnas que aceptan nulos en la tabla 1?". Después de todo, tener dos tablas significa que tendrá que hacer dos consultas para obtener estos datos en lugar de uno.
Ahora hay algunos escenarios en los que esta práctica podría ser una buena idea:
- si usted tiene una gran cantidad de usuarios, pero sólo unas pocas filas de la tabla 2, tal vez la consulta en la tabla 2 será solamente realiza raramente ; al mismo tiempo, puede ganar espacio de almacenamiento y velocidad de modificación en la tabla 1
- ; podría ser posible en el futuro cambiar la clave primaria de la tabla 2, mientras la clave externa permanezca; si coloca todos los datos en la tabla 1, es probable que esta modificación rompa su modelo de base de datos
Puede ser una buena idea, pero depende de los detalles de su aplicación.
Pregunta similar (pero no duplicada): [¿Cómo crear una clave externa que también es una clave principal en MySQL?] (Http://stackoverflow.com/questions/5575051/how-to-create-foreign-key -that-is-also-a-primary-key-in-mysql) – naXa