Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/11/2009, 16:40
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: 16 años, 5 meses
Puntos: 2658
Respuesta: Podés darme vuestra opinión sobre este diseño?

Bueno, la idea es que la PK de cada una de esas tablas esté compuesta en cada caso por la PK de la persona, más un campo que pueda identificarlos univocamente. En el caso de teléfonos sería la PK de la persona + telefono, porque jamás la misma persona podría aparecer con el mismo teléfono dos veces; y lo mismo en el caso del e-Mail.
Al mismo tiempo, la PK de la persona es una FK que debe referenciar a la tabla donde se guardan los datos de la persona.

Te comento que por cuestiones de mnemotécnica, siempre es conveniente que el nombre de las tablas tenga una consistencia semántica. Así, por ejemplo, una tabla que guarde la INSCRIPCION no debería ser una tabla donde se guarden datos de una PERSONA, un ALUMNO o un PROFESOR. Esas serían otras tablas; Inscripción debería ser la que contiene el ID de la persona que se inscribe y los detalles que hacen al acto de inscripción, no los que identifican a la persona.
El respeto a una sintaxis consistente ayuda muchas veces a ubicarse rápidamente cuál es la tabla que uno necesita, sin tener que para ello mirar los nombres de sus campos...

Volviendo al tema: Por definición de bases de datos, un campo sólo puede tener un valor en un instante dado. En ese contexto, un campo ENUM sirve para predefinir un conjunto de valores que el campo puede tomar (restricción de dominio), pero solamente puede tener uno a la vez. Cualquier circunstancia en la que una misma instancia de entidad (digamos, una persona) tenga un atributo que puede tomar simultáneamente más de un valor, implica necesariamente la existencia de una relación nueva en donde cada uno de esos valores está representado por un registro distinto de la nueva tabla. Jamás puede darse que existan atributos multivaluados (más de un valor al mismo tiempo). Eso es parte de la 1FN.
Mi sugerencia de usar n campo ENUM es porque tienes un conjunto muy acotado de opciones invariables. Si estas opciones pudiesen variar en el tiempo, entonces ese campo sería la FK de una tabla que conserve la descripción del tipo.
Cita:
Cuando haces el REFERENCES contacto(idcontacto) que es "contacto"??
Es un error de escritura. Quería referirme a la tabla donde está la persona.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)