>The only good reason I can think of to use a character based primary key is that it allows for the use of concatinated keys. This ability doesn't seem to out-weight the performance issues so why would I ever use a character based primary key? Am I missing the boat here? Is there some hidden advantage to it? If not, why do most all of the frameworks I have looked at default to it?
Integer is a bit faster and takes less space. Someone pointed out that 4 billion records is greater that the 2 gig limit. That's not 2 billion records, but bytes. This DBF size limitation is not likely to change (repeated stated by the Fox team) because it is so deeply entwined inside the C++ code of VFP. It is highly unlikely that you'll have a problem with this.
Also, do NOT consider concatenation of fields. Make the PK totally surrogate and unique. IF you need a concatenation key, make it candidate or regular, but not the PK.
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer