Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   Consulta sobre Primary Key en Base de Datos (http://www.forosdelweb.com/f14/consulta-sobre-primary-key-base-datos-359721/)

CLAYMAN 26/12/2005 09:24

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!

Mithrandir 26/12/2005 15:27

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.

jeubeda 27/12/2005 03:19

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).


La zona horaria es GMT -6. Ahora son las 22:46.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.