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

Consulta sobre Primary Key en Base de Datos

Estas en el tema de Consulta sobre Primary Key en Base de Datos en el foro de Programación General en Foros del Web. Hola a todos: Tengo una duda. Estoy haciendo un sistemita tipo una discoteca; o sea apara almacenar la info detallada de mis cd's. Tengo una ...
  #1 (permalink)  
Antiguo 26/12/2005, 09:24
 
Fecha de Ingreso: agosto-2004
Mensajes: 56
Antigüedad: 19 años, 8 meses
Puntos: 0
Consulta sobre Primary Key en Base de Datos

Hola a todos: Tengo una duda. Estoy haciendo un sistemita tipo una discoteca; o sea apara almacenar la info detallada de mis cd's.
Tengo una tabla Artistas donde se almacenaran todos las bandas que tengan al menos un disco en el sistema. (otras tablas: Album, temas,....etc)
Dicha tabla tiene una clave primaria NroArtista que es numerica. Pero tengo serios problemas con eso porque al realizar las busquedas siempre tengo que comparar dos strings...es decir siempre por el nombre de la banda.
Pregunto: Se puede poner como clave primaria un campo NombreBanda que sea un string en vez de numerica? Considerando que cada nombre de banda jamas se repetira. Muchas Gracias!
  #2 (permalink)  
Antiguo 26/12/2005, 15:27
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Es inficiente, porque el sistema tendrá que indexar llaves demasiado largas (el nombre completo de la banda). Hacer búsquedas y JOINs será más pesado debido a la sobrecarga que implica hacer joins sobre campos de string, y más aún sobre campos largos.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 27/12/2005, 03:19
Avatar de jeubeda  
Fecha de Ingreso: octubre-2004
Ubicación: Argentino, en Valencia, E
Mensajes: 78
Antigüedad: 19 años, 6 meses
Puntos: 0
una clave secundaria

Este es un asunto sobre el que hay bastante escrito. Utilizar un número único es que identifique la fila es lo que llaman usar surrogates. El problema es que el atributo que identifica es el nombre. De lo contrario, a pesar de usar un número como identificador único, es necesario verificar que el nombre no exista: un problema común en este caso es que dos nombres iguales se ingresen con dos números distintos. Es decir, el número es un identificador unívoco, pero igualmente necesito una clave secundaria que me asegure que el nombre no haya sido ingresado previamente, salvo que el número sea el resultado de un algoritmo que genere un valor basado en el string (tipo crc). Si el caso es que estamos hablando de una base de datos pequeña, quizá usar el nombre como identificador primario no implique problemas de performance, con lo que pudiera ser la mejor solución. Si, por el contrario, la cantidad de filas será grande, o existirán muchas relaciones con otras tablas, mantener una clave secundaria para controlar la inserción de filas sería necesario. De esa forma, se atiende a lo que Mithrandir observa (la intervención en joins).
__________________
Jorge Ubeda
Página, Blog

Última edición por jeubeda; 27/12/2005 a las 04:05
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 07:03.