🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.bd.misc
2 messages
2 total messages Started by Ricardo Palomares Martinez Fri, 16 Feb 2007 21:54
Claves primarias simples en lugar de compuestas
#155
Author: Ricardo Palomares Martinez
Date: Fri, 16 Feb 2007 21:54
51 lines
3232 bytes
Saludos:

Hace mucho que estudié sobre bases de datos, claves primarias, claves
externas, etc. Me dejé pendiente el Proyecto de Fin de Carrera y ahora
me toca, y tengo que diseñar un esquema de base de datos para una
aplicación Java.

Mientras leía documentación de Hibernate (aunque al final no voy a
usar Hibernate), me pareció leer que recomiendan no definir una clave
primaria compuesta por varios campos de la tabla, y lo hacen como una
práctica recomendable para un buen diseño de base de datos, no como un
requisito de Hibernate. En su lugar, sugieren crear una clave
principal simple "sintética", como un entero con auto-incremento.

http://www.hibernate.org/hib_docs/v3/reference/en/html/collections.html#collections-idbag

Por otro lado, tengo el libro Base de Datos con Java, que tiene un
capítulo dedicado al diseño de modelos de bases de datos, y hace
alguna referencia a las claves compuestas sin indicar que sean malas
"per se".

Entiendo que las claves primarias "sintéticas" son más livianas de
mantener por el RDBMS, pero mi modelo (para una aplicación de ayuda a
la traducción) está lleno de relaciones padre-hijo (un [equipo de
traducción de un] idioma traduce productos, un producto tiene
versiones, una versión tiene ficheros, un fichero tiene cadenas), de
manera que una fila de la tabla de cadenas se identificaría por la
concatenación de todas las claves primarias de los respectivos padres,
pero a la vez todas esas columnas me aportan información de la cadena.

Si sustituyo la clave primaria de la tabla "productos", que sería
l10nCode + prodCode, por una clave "sintética", de manera que los
campos l10nCode y prodCode de la tabla "productos" tengan índices
normales no únicos (y así con cada tabla, claro), me da la sensación
de que en la tabla "cadenas" el número de índices se dispararía.

¿Realmente debo procurar definir claves primarias simples en todas mis
tablas, o lo he entendido mal? Si es así, ¿conocéis alguna referencia
donde pueda informarme mejor y ver qué efectos tiene y cómo se pueden
solventar los posibles inconvenientes?

Muchas gracias por anticipado.

-- 
If it's true that we are here to help others,
then what exactly are the OTHERS here for?
Re: Claves primarias simples en lugar de compuestas
#156
Author: Cheli Pineda Ferrer
Date: Mon, 19 Feb 2007 07:55
24 lines
1965 bytes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

        Es cierto lo que dice ese turorial, el problema es que las teor�as son muy
bonitas y no deber�a haber ning�n problema en utilizar claves primarias
compuestas, de hecho no lo hay en si mismo pero como comentas los sgbds son
m�s lentos tratando estos �ndices. Lo mismo pasa si tu clave primaria es
simple pero no es de tipo entero, por jemeplo si es un varchar ser� menos
eficiente que un entero y por eso en este caso tambi�n se recomienda
crearte el �ndice sint�tico.

Cheli
- -- 
jid: bubapf@jabber.org
Mi bit�cora: http://www.chelisl.net
SOLA (Charlas y m�s sobre programario libre)
http://sola.no-ip.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFF2VfvAaaAYx7o4VMRAu13AJ9ubL2qPaahw/RUrg2otlJ5eFsRywCeMBDr
REFjW0QyLak+TxxZ0GAjxFM=
=zXFl
-----END PGP SIGNATURE-----
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads