MySQL - primary key int v varchar

   
Vista:

primary key int v varchar

Publicado por raysa (3 intervenciones) el 30/09/2009 18:26:46
Hola a todos,
me gustaria saber que es mejor o peor: si poner como primary key un varchar(250) o un int??
en cuestiones de eficiencia se nota mucho poner la primary key como varchar???
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:primary key int v varchar

Publicado por Gonzalo GC (339 intervenciones) el 30/09/2009 21:20:46
Primero: para lograr 18.446.744.073.709.551.615 claves diferentes con una PK numérica sólo necesitas un BIGINT, que ocupa 8 Bytes...
Usar un VARCHAR(250) implicaría una combinatoria de 250 ^32 -1, algo así como 5421 x 10^73, es decir 5421 seguido de 73 ceros.. de combinaciones posibles. ¿para qué quieres tanto? no podrías llenarlo ni en un millón de años y con el BIGINT ya te resultaría difícil en tu vida.

En cuanto a eficiencia, es indistinto. No hace demasiado si usa uno u otro. Lo que se debe plantear es qué datos se usarán como PK sobre la base de las CC encontradas.
No nos olvidemos que una PK puede ser bien un DATETIME, un DOUBLE, un INTEGER, etc. O Sea, cualquier cosa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:primary key int v varchar

Publicado por raysa (3 intervenciones) el 30/09/2009 23:01:05
Hola, la tabla que quiero utilizar es la siguiente: TipoEstancia

La pregunta es la si es mejor utilizar la primera opcion o la segunda
1) TipoEstancia(nomTipoEStancia, notas) siendo nomTipoEstancia PK

2)TipoEStancia(idTipoEstancia,nomTipoEstancia,notas) siendo idTipoEstancia PK

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:primary key int v varchar

Publicado por Gonzalo GC (339 intervenciones) el 30/09/2009 23:51:26
Lo que determina la elección, al menos según el modelo referencial, es la unicidad de los valores de nomTipoEstancia.
Si no existe ninguna posibilidad de que se ingresen en dos registros distintos, el mismo valor para nomTipoEstancia, entonces puedes usarlo como PK sin problemas.
En caso contrario tienes dos opciones: a) agregarle otro atributo a la clave que sirva para identificarlo unívocamenet, o b) crear artificialmente una PK numérica, sea esta autoincremental o no.
Lo central aquí es que según el modelo es mejor evitar las claves artificiales mientras se pueda, tratando de ajustarse lo mejor posible a las Formas Normales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar