🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.bd.misc
Article #155

Claves primarias simples en lugar de compuestas

#155
From: 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?
Technical Details
Message-ID: <bplha4-03a.ln1@Father.family>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news1.google.com!newsfeed.gamma.ru!Gamma.RU!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.icl.net!newsfeed.freenet.de!news.newsland.it!aioe.org!Father.family!news

Show Full Headers
Complete Article Headers
X-Google-Thread: 106e2f,a285ffcbbf2f23a9,start
X-Google-Attributes: gid106e2f,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!news1.google.com!newsfeed.gamma.ru!Gamma.RU!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.icl.net!newsfeed.freenet.de!news.newsland.it!aioe.org!Father.family!news
From: Ricardo Palomares Martinez <rpm.PUBLI@iespana.es>
Newsgroups: es.comp.bd.misc
Subject: Claves primarias simples en lugar de compuestas
Date: Fri, 16 Feb 2007 22:54:19 +0100
Organization: Hogar, dulce hogar
Lines: 51
Message-ID: <bplha4-03a.ln1@Father.family>
NNTP-Posting-Host: ZpXS4kufLSNv31vt9Lrapw.user.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable
X-Complaints-To: abuse@aioe.org
User-Agent: Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1 Mnenhy/0.7.4.0