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

Añadir clave primaria

Estas en el tema de Añadir clave primaria en el foro de Mysql en Foros del Web. buenas compañeros estoy tratando de añadir un atributo mas como clave primaria el problemas esque ya tengo datos en la tabla y de esta tabla ...
  #1 (permalink)  
Antiguo 12/05/2011, 04:48
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Añadir clave primaria

buenas compañeros

estoy tratando de añadir un atributo mas como clave primaria el problemas esque ya tengo datos en la tabla y de esta tabla hay bastantes relaciones..

y cuando hago ALTER TABLE Customer ADD PRIMARY KEY (SID);

me dice ERROR multiple clave primary, laguna alguna manera?

el problema son los datos

un saludo y gracias
  #2 (permalink)  
Antiguo 12/05/2011, 05:24
Avatar de 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: Añadir clave primaria

Por definición, la clave primaria es siempre única. No puede haber dos claves primarias, pero lo que si puede existir es claves que estén compuestas por más de un campo.
Te lo explico de forma simple: La clave primaria es usada por los DBMS para mantener el orden físico de los registros en el disco, por eso es imposible generar dos claves distintas y declararlas primarias. ¿Te imaginas tratando de ordenar los libros de una biblioteca en diferentes estantes, de modo que el orden de los libros en ellos fuese de dos formas diferentes al mismo tiempo? Bueno, es imposible.
Otra cosa distinta son lo que se denominan claves candidatas (CC). Una CC es un atributo o conjunto de atributos que no puede repetirse entre diferentes registros. Como eso entra dentro de la definición de PK, entonces se la considera como una candidata a ser PK, pero que no lo es (la decisión de no usarla es una decisión del diseñador de la base). En esos casos lo que se hace es definir un índice UNIQUE sobre esa CC.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/05/2011, 01:13
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Añadir clave primaria

Hola gnzsoloyo.

Si veras la definicion esta me la sabia, pero creo que no me explicado bien. Lo que necesito es lo que tu dices que la clave primaria se componga por mas de un atributo (campo), el diseño lo hize yo y ahora no me vale solo con el campo que tengo como PK necesito que la PK se componga por dos. El problema viene por que hay datos en la tabla, y de estos datos hay otras que estan relacionadas.

Sabes de alguna solución?

Un saludo
  #4 (permalink)  
Antiguo 13/05/2011, 04:22
Avatar de 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: Añadir clave primaria

La solución no es sencilla, tal y como lo tienes, porque todas las tablas relacionadas, donde esa PK aparezca como FK deben seguir respetando su estructura de clave.
Esto significa que tienes que asegurarte de que todos los campos que compongan la PK en esa tabla se encuentren también en esas tablas, con el mismo tipo y orden, y que en todos casos la defición de la FK también haga referencia a todos los campos al mismo tiempo.
En otras palabras, debes:
1) Eliminar la definición de las FK de todas las tablas relacionadas.
2) Eliminar la PK de la tabla origen (no hablo de borrar el campo, sino su definición como PK).
3) Definir la nueva PK.
4) Asegurarte de que esas tablas cuenten con los campos necesarios para definir la FK.
5) Si el campo no estaba en esas tablas dependientes, debes insertar los datos en cada registro de manera que respeten la integridad referencia.
6) Volver a crear las definiciones de FK.
Toda esta tarea es básicamente manual. No es posible hacerla en automático.
Es la única forma.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 14/05/2011, 01:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Añadir clave primaria

Okey pues nada, MANOS a la OBRA

Muchas gracias
  #6 (permalink)  
Antiguo 14/05/2011, 06:52
Avatar de 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: Añadir clave primaria

Sugerencia práctica: Haz una copia de la base en otra y realiza primero la prueba de migración con la copia. No lo hagas desde el principio con la base de trabajo porque un error puede ser catastrófico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: clave, 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 13:01.