Ver Mensaje Individual
  #7 (permalink)  
Antiguo 19/01/2009, 11:23
paloto
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Respuesta: como poner mas de un valor en un campo

Lo lógico, correcto y eficiente es hacer lo que dice gnzsoloyo, dos tablas. Una de ellas con el nombre, el apellido y un campo id (opcional) y otra tabla con un campo SID y otro que corresponda al id de la tabla anterior.

En cualquier caso, respondiendo estrictamente a tu pregunta, sí se puede hacer, pero además de ser una chapuza no es recomendable ni provechoso. La manera de proceder sería la siguiente:

El campo SID sería un VARCHAR cuyo tamaño dependería del número máximo de SID que puedan corresponder a cada registro, y su valor sería una cadena de los SID concatenados separados por comas (por ejemplo). Mediante código se extraería de ese campo los diferentes SID del registro.

Esto presenta varios problemas:
1 - El campo VARCHAR tiene que tener un límite de caracteres por lo tanto estás limitando el número de veces que se puede repetir un nombre-apellido .
2 - En los registros con un solo SID, estás malgastando espacio al haber definido el campo como VARCHAR de muchos caracteres y utilizar solo uno o dos.
3 - Necesitas codificar un script que extraiga del dato almacenado en el campo los diferentes SID que están concatenados y a la hora de almacenar, tendrás que construir la cadena de SID separados por comas.
4 - Para hacer un select por SID, tendrás que hacer un LIKE en el WHERE lo cual resulta menos eficiente que una búsqueda por un PK o un campo numérico.
5 - Si quieres eliminar un SID, en lugar de hacer un DELETE FROM que es lo que harías de la otra forma, tendrías que hacer un SELECT y un UPDATE para modificar el campo correspondiente.
6 - Etc.

En definitiva, no tiene sentido hacerlo a no ser que se trate de un caso raro, raro, raro, raro... Y si se da la situación de que hacer esto sea lo mejor me gustaría que me explicases la situación en la que se da esta circunstancia porque me resulta dificil de imaginar.

Un saludo