Cita:
Iniciado por ramonw Hola gnzsoloyo, me podes explicar muy brevemente que es una PK de dos campos ?
La verdad que no sabia que se podia dividir la PK en dos campos.
Saludos.
Es algo que surge del modelo relacional, pero para explicarlo tienes que volver a la definición básica que se da en la asignatura de Bases de Datos, en todas las carreras de informática.
Palabras más, palabras menos se expresa:
"Una clave primaria o PRIMARY KEY es un campo
o conjunto de campos que identifica unívocamente un registro en una tabla".
En el modelado de sistemas de datos, una PK debe surgir del análisis de los atributos propios de la relación que se expresa en esa tabla, por lo tanto, debería haber al menos
un atributo que pueda permitir identificar un registro entre los miles o millones que se encuentren en esa tabla, o en toda posible tabla similar en diferentes bases de datos (es lo que se debe intentar).
Infortunadamente no siempre es posible encontrar un único atributo que cumpla el principio de unicidad, por lo que en esos casos se debe identificar el subconjunto de más de un atributo que puede hacerlo. Allí es donde aparecen las PK compuestas.
Tu confusión puede provenir de la práctica difundida entre los desarrolladores que no han tenido estudios formales, de "crear" PKs simplemente agregandoles un campo autonumérico e incremental. Eso es una salida por la tangente que muestra falta de análisis del sistema y eventualmente trae problemas en las migraciones, consolidaciones de bases y creaciones de Datawarehouses o Datamarts.
Lo ideal es que las claves autonuméricas se eviten dentro de lo posible, y sólo se usen si llegados a la 3FN en la normalización, no se ha podido encontrar un determinante de la relación que pueda ser clave candidata. Pero sólo en esos casos.
Lamentablemente es muy fácil usar ese tipo de soluciones, y en los tutoriales no se hace mención de los problemas que causan a futuro.
Por lo demás, debes recordar también que las PK de tablas que intervienen en una relaicón N:M son parte de la PK que identifica el registro que expresa la relación, en la tabla relacional que debe crearse para administrarla. En ese caso la PK de ambas tablas es el identificador único en la tabla relacional, por lo que la PK de ambas pasa a ser en la nueva tabla, la PK, no sólo porque expresa la relación entre ambas, sino porque define la dependencia de esa tabla de las tablas origen.
¿Se entiende?
Lo que pueden suceder en ese caso es que es que en algún momento te encuentres con PKs que tienen 2, 3, 4, 5, u 11 campos, ya que están heredando claves, y si las claves de origen son compuestas... Que no te extrañe.