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

No me deja poner clave primaria a tinytext

Estas en el tema de No me deja poner clave primaria a tinytext en el foro de Mysql en Foros del Web. Hola tengo una tabla (es una tabla relacion) con dos columnas persona_cod (int) y persona_email (tinytext) y me deja marcar el primero como primary key ...
  #1 (permalink)  
Antiguo 29/11/2008, 16:55
Avatar de normandos  
Fecha de Ingreso: diciembre-2001
Mensajes: 216
Antigüedad: 22 años, 3 meses
Puntos: 0
No me deja poner clave primaria a tinytext

Hola tengo una tabla (es una tabla relacion) con dos columnas persona_cod (int) y persona_email (tinytext) y me deja marcar el primero como primary key pero necesito marcar los dos campos ya que los dos juntos son clave primaria...
No me deja marcar el segundo campo como primary key!
Estoy trabajando con SQLYog.
Gracias
__________________
"No importa lo que nos suceda sino cómo reaccionamos ante lo que nos sucede."

Presidente James E. Faust
  #2 (permalink)  
Antiguo 29/11/2008, 18:39
Avatar de happy1783  
Fecha de Ingreso: mayo-2008
Ubicación: Bogotá
Mensajes: 146
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: No me deja poner clave primaria a tinytext

si es una tabla puente no debes marcarlos como primary key sino como foraney key o index
__________________
El hombre sabio vive actuando no pensando en actuar.
  #3 (permalink)  
Antiguo 29/11/2008, 18:55
Avatar de normandos  
Fecha de Ingreso: diciembre-2001
Mensajes: 216
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: No me deja poner clave primaria a tinytext

A ver, email es un atributo multivaluado de persona (una persona puede tener muchos emails) por eso cada registro se identifica por persona_cod (int) y persona_email (tinytext). Si solo le dejo el persona_cod (int) como primary key no me dejara registrar mas de una linea con ese persona_cod (int), me explico?
Por eso necesito que los dos sean primary key.
Estoy haciendo mal?
__________________
"No importa lo que nos suceda sino cómo reaccionamos ante lo que nos sucede."

Presidente James E. Faust
  #4 (permalink)  
Antiguo 29/11/2008, 19:18
Avatar de happy1783  
Fecha de Ingreso: mayo-2008
Ubicación: Bogotá
Mensajes: 146
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: No me deja poner clave primaria a tinytext

Pues no entiendo muy bien que es lo que quieres hacer pero tendras que buscar otra forma de hacerlo por que según la normas, no puedes crear dos primary key en una tabla.
__________________
El hombre sabio vive actuando no pensando en actuar.
  #5 (permalink)  
Antiguo 29/11/2008, 23:18
Avatar de normandos  
Fecha de Ingreso: diciembre-2001
Mensajes: 216
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: No me deja poner clave primaria a tinytext

Lo que quiero hacer es lo siguiente, se llama normalización. En una tabla tengo nombre, apellido, dirección, etc de una persona. Como la persona puede tener más de un email se crea una tabla aparte que tiene el id de la persona mas la direccion de mail. Puede haber varios registros con el mismo id pero ninguno con el mismo id y el mail a la vez. Se entiende ahora?
Y sí, puede haber más de una primary key, no entiendo porque dices que no.
Saludos
__________________
"No importa lo que nos suceda sino cómo reaccionamos ante lo que nos sucede."

Presidente James E. Faust
  #6 (permalink)  
Antiguo 30/11/2008, 08:17
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, 4 meses
Puntos: 2658
Respuesta: No me deja poner clave primaria a tinytext

Cita:
Y sí, puede haber más de una primary key, no entiendo porque dices que no.
Porque eso sería una absoluta y flagrante violación al modelo relacional, y además totalmente imposible de implementar, ya que una PRIMARY KEY es por definición única para cada tabla, no solamente por cuestiones de consistencia de datos y de integridad referencial, sino porque una PK define por default un índice agrupado (cluster) el cual se usa para mantener el ordenamiento físico de los registros, y no puede jamás existir un archivo ordenado físicamente de dos formas diferentes. ¿Podrías ordenar los libros de una biblioteca en dos formas distintas al mismo tiempo? No.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 30/11/2008, 10:22
Avatar de normandos  
Fecha de Ingreso: diciembre-2001
Mensajes: 216
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: No me deja poner clave primaria a tinytext

Tal vez me haya explicado mal, no sé.
Lo que quiero decir es que en la tabla email tanto el persona_id y el persona_email (son solo esos dos campos) los dos campos en conjunto son la primary key.
Ahora me expliqué bien?
__________________
"No importa lo que nos suceda sino cómo reaccionamos ante lo que nos sucede."

Presidente James E. Faust
  #8 (permalink)  
Antiguo 30/11/2008, 12:06
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, 4 meses
Puntos: 2658
Respuesta: No me deja poner clave primaria a tinytext

Lo que quedaba claro es que la PK a la que te referías es la de otra tabla, no la de PERSONA, sino en una que podrías llamar PERSONA_EMAIL.
SI la tabla en cuestión es donde pones los e-Mail y la relacionas con los ID_PERSONA, no debería haber problemas, a menos que la tabla ya estuviese cargada y hubiese duplicación de registros. Entonces te daría error porque no puede implementar la restricción.
Este tipo de operaciones debe hacerse en la etapa de diseño, a tablas vacías.
Otra cosa que me presenta dudas es ¿qué versión de MySQL estás usando y qué mensaje te devuelve al intentar seleccionar las columnas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 30/11/2008, 15:40
Avatar de normandos  
Fecha de Ingreso: diciembre-2001
Mensajes: 216
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: No me deja poner clave primaria a tinytext

Las tablas estan vacias.
Y sí los dos campos de la tabla Emails necesito que sean PK. Esos dos campos son persona_id (FK del campo "id" de la tabla Persona) y persona_email. .. El problema era que la estaba poniendo del tipo tinytext a persona_email y por eso no me dejaba...La cambié a tipo char y se solucionó el problema.
Gracias!
__________________
"No importa lo que nos suceda sino cómo reaccionamos ante lo que nos sucede."

Presidente James E. Faust
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 04:08.