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
Author: Ricardo Palomares Martinez
Date: Fri, 16 Feb 2007 21:54
Date: Fri, 16 Feb 2007 21:54
51 lines
3232 bytes
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
Author: Cheli Pineda Ferrer
Date: Mon, 19 Feb 2007 07:55
Date: Mon, 19 Feb 2007 07:55
24 lines
1965 bytes
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