
02/07/2009, 18:54
|
 | 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: ayuda para estructurar las tablas de proyecto Por definición, una clave primaria (Primary Key) es un campo, o mínimo conjunto de campos que identifica unívocamente un registro dado en una tabla.
Esto significa que para ser una clave primaria debe cumplir con:
1. No puede repetirse jamás (condición que por defecto cumple el campo id_negocio).
2. No puede ser NULL (condición que por defecto cumple el campo id_negocio).
3. Debe ser una expresión única o una combinación mínima de campos (condición que por defecto cumple el campo id_negocio).
Por ello es que definir una clave múltiple donde un sólo campo ya puede cumplir con ese rol, es innecesario e ineficiente.
En ese contexto, donde id_negocio es autoincremental, el resto de los campos son innecesarios para una PK. Además, una clave múltiple posee el inconveniente de para ser usada como clave foránea deben estar todos los campos de la clave en las tablas en donde se desee relacionar las dos tablas, ya que una FK apunta forzosamente a la clave completa y no a una parte de ella (3FN y 4FN).
Esto último significa que para que la FK en INFO_NEGOCIO fuera válida, no solamente requeriría el campo id_negocio, sino que le tienes que agregar además id_usuario, id_pais, id_estado, id_ciudad, id_categoria, id_subcategoria, que también son parte de la clave.
¿Se comprende la idea?
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |