Ver Mensaje Individual
  #11 (permalink)  
Antiguo 18/03/2011, 05:37
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, 2 meses
Puntos: 2658
Respuesta: Multiples consultas atraves de un campo Mysql

En este caso, ese ID corresponde a un numero de orden, pero no es clave primaria. Es un orden temático u orden de asignatura, pero en cualquier caso no compone la clave primaria de Libro.

Este tipo de casos se denomina clave candidata si se la combina con el categoría_id, por cuanto no puede haber dos libros de la misma categoría que posean el mismo número de orden. ¿Se comprende el concepto?

Aclaremos más: Se denominan claves candidatas a todas las combinaciones de campos de una misma tabla que puedan cumplir con la definición de clave primaria, es decir, identificar unívocamente un único registro en una tabla. Determinar las claves candidatas (CC) es una parte importante de la normalización de la base de datos, porque de ese modo se puede elegir a la más simple para usar como PK, y entre otras cosas ayuda a definir índices secundarios.

Desde el punto de vista ortodoxo del modelo, si quisieras suprimir la PK autoincremental que has puesto lo podría hacer perfectamente, porque con esa CC (nro_orden, categoria_id) es suficiente para encontrar un único ejemplar de libro en la biblioteca.
De todos modos, como ya existe una forma de identificar libros propia de la biblioteca (el libro_id) no es posible usar esa CC, por mejor que sea.

En resumen:
- Ese campo no es clave por sí mismo, se puede usar como índice secundario en combinación con el id de la categoría.
- La existencia de ese campo no invalida ni afecta la existencia de la PK planteada en la tabla. son cosas diferentes.
- La PK sólo tiene un campo: libro_id.

Un tip adicional: Según las reglas de normalización, sólo se debe incluir una clave numérica y autoincremental si llegados a la Tercera Forma Normal (3FN) no existe aún una clave candidata.

El problema es que para los programadores es más fácil pensar en claves numéricas, que comprender los conceptos de las formas normales y las claves candidatas... Simplemente le ponen un campo numérico y después, cuando haya que integrar bases de datos, o hacer migraciones, que se las arregle Magoya...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 18/03/2011 a las 06:11