Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/10/2010, 02:17
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: atributos multivaluados

La forma correcta es usar tablas referenciadas, me explico

TablaClientes
idCliente clave principal
Nombre
Apellido
... y todos los campos "unicos" del cliente

TablaTelefonosClientes
idTel clave principal
idCliente clave foranea referenciada a TablaClientes
Telefono

TablaEmailsClientes
idEmail clave principal
idCliente clave foranea referenciada a TablaClientes
email

Una tabla para cada campo que necesites, telefonos, emails, direcciones, delegaciones, contactos...

Esto te permite tener una relación 1 a n (es decir un cliente puede tener un numero indefinido de telefonos o emails). Por otro lado la definicion de una clave foranea (FK) te asegura que esten relacionados. Tambien puedes definir ON DELETE CASCADE lo que te asegurará que al borrar un cliente tambien se borren sus registros relacionados en las tablas "auxiliares".

Todo esto trabajando con tablas del motor Innodb.

Parece mas complicado pero no lo es.

Quim

En las tablas auxiliares puede ser una buena idea agregar algun campo que cualifique al telefono o al email, es decir un campo donde puedas marcar que telefono es el principal o del departamento comercial o de facturación... Usando el id de cliente y el cualificador podras obtener siempre el telefono que busques...

Última edición por quimfv; 27/10/2010 a las 02:23