Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

una duda mas sobre clave primaria compuesta

Estas en el tema de una duda mas sobre clave primaria compuesta en el foro de Mysql en Foros del Web. hola a todos... he estado leyendo sobre las llaves primarias compuestas, ya que en un avazado estado de una codificacion me han hecho una observacion ...
  #1 (permalink)  
Antiguo 29/10/2010, 12:09
 
Fecha de Ingreso: septiembre-2010
Mensajes: 38
Antigüedad: 14 años, 3 meses
Puntos: 0
Busqueda una duda mas sobre clave primaria compuesta

hola a todos... he estado leyendo sobre las llaves primarias compuestas, ya que en un avazado estado de una codificacion me han hecho una observacion de algo que cambia como definir mi clave primaria en una tabla. (posiblemente la tabla en si y mucho mas)

en mi tabla usuarios tenia una llave primaria de nombre numA (que hace referencia a una serie de digitos) y hasta cierto tiempo (bajo un concepto erroneo que me hicieron llegar, y en el cual me base) todo iba tranquilo, hasta que se me hizo la obervacion que seria necesario agregar un digitoV y el agregado (valga la redundancia, asi le llaman de forma local aca a ese dato adicional) al numero A, ya que ese numero -numA por si solo- (contrario a lo que tenia explicado) no es unico por persona, sino por un grupo de personas, y ya para hacer referencia a una persona en particular (que es asi como deseo hacer registros, por persona en particular) se deberia considerar tanto su numero A, su digitoV y su agregado... es decir, (y hasta donde he entendido sobre llaves primarias compuestas) creo que necesito una clave compuesta... que sea la combinacion de (numA, digitoV, agregado)...

php + mysql 5+, phpmyadmin (xampp for windows)

el numA puede aparecer en varios registros siempre y cuando no se repita junto con el agregado en el mismo registro, y agragado puede aparecer en varios registros siempre y cuando no se le repita junto con numA en el mismo registro, mientras que de haber un numA con digitoV definido no podra haber otro registro con el mismo numA pero con otro digitoV...

ej. validos:
numA 123 digitoV 2 agregado 1F
numA 123 digitoV 2 agregado 2M
numA 567 digitoV 2 agregado 1F
numA 567 digitoV 2 agregado 2M

bajo este esquema lo siguiente no es valido
numA 123 digitoV 3 agregado 3F (debido a que digitoV es definido por numA y ya se establecio como 2)
numA 123 digitoV 2 agregado 1F (ya existe)

y vaya basicamente si esos valores ya estan en la tabla, no deberan repetirse en su combinacion.

mis dudas son las siguientes:

es posible añadir el concepto de primary a un nuevo campo -que tambien tendria que añadir- sin complicacion o seria mas recomendable eliminar la tabla entera y crear de cero junto con la llave compuesta?

es mi concepto correcto y adecuado para mi necesidad? (ya que en alguna ocacion se me enseño evadir claves primarias compuestas pero me siento en tal situacion)

que diferencia habria entre usar:

CAMPOS:
numA
digV
agregado
CONSTRAINT clave_principal UNIQUE (numA, numV,agregado)

y

`numA` VARCHAR NOT NULL,
`digV` VARCHAR NOT NULL,
`agregado` VARCHAR NOT NULL,
PRIMARY KEY (`numA`, `numV`,`agregado`),
UNIQUE (`numA`, `agregado`)

para/en la creacion de mi nueva llave primaria?

como haria despues referencia en algun query a mi llave primaria compuesta? digamos como validaria un insert si y solo si esa combinacion de campos aun no existe en la tabla? o esto es implicito por ser declarado una clave primaria compuesta e intentar un insert con esa combinacion arrojaria error?

de igual forma como validaria un select de multiples tablas donde una condicionante fuera que apareciera en dicha consulta esa cambinacion de campos?

seria mejor (mas sencillo pero quiza no adecuado?) seguir manejando como clave primaria un solo campo que sea varchar pero que en el se albergue la totalidad del numero que identifica a una persona en particular? (que un campo -el que ya existe- sea el input directo de todo el numero incluyendo numA, digitoV y agregado) dado que no voy a hacer validacion de los datos introducidos -se lo que implica pero no tengo los datos de otra fuente como para hacer comparacion/validacion-

me causa 'ruido' como crear y como hacer futuras referencias a la llave compuesta tanto como para un select simple o como parte de alguna condicion... es decir, se genera adicionalmente un nombre (no campo) que haga referencia a la combinacion de campos que forman mi clave compuesta? o se deben nombrar los campos que le comforman? y si de entrada es lo que necesito...

cualquier observacion es agradecida de antemano...

gracias por leerme,

saludos

Etiquetas: clave, compuesta, mas, primaria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:21.