Tom, If the real-world primary key is large (say up to 100 characters in length)
then the disadvantage is that you are duplicating this referenced key in several other tables, each element taking up 100 characters. Space is wasted when compared to int4 ID's. But not really sure if this is a performance problem for SELECT except for the space required (varchar(128) vs. int4).
What is worth a try is to check an md5 or sha hash of those 100chars and use that as a key. with a proper hashing algorythm (proper= fitting to your data) collisions should not happen; and you have a shorter key to connect the tables. best wishes harald -- GHUM Harald Massa persuadere et programmare Harald Armin Massa Reinsburgstraße 202b 70197 Stuttgart 0173/9409607 - Python: the only language with more web frameworks than keywords.