Hi all,
Here is a specific case which I have discovered DRAMATICALLY benefits from autonumber usage. It is probably a case faced by many of us in the business - that of converting "flat" data stored in Excel files into relational data stored in an Access database. This is also true of timely additions to a database. e.g. monthly or weekly imports.
First, consider how you would weave a unique id INTO an Excel file - NOT easy by any means. In fact it took me 4 weeks to create a piece of code that does this properly. So now you have all your "keys" woven into your flat Excel data.
This means you can import to a staging table in Access, and then into the specific tables the data belongs in. Now if you want to ADD data to the Access DB, you have to somehow check to see if it exists in table a, then reassign an ID based on that match to your record in the staging table, and repeat this process for variable sets (tables) a -> x, in the staging DB. Also you have to find the end of each table and append if that data doesn't already exist in that table. For 9 different tables, this is a non-trivial undertaking, and it leaves a fair amount of room for error unless you are some Access/VB god who can do this stuff with their eyes closed.
Now if you use autonumbers in your DB instead of doing the "pure" and "elite" method, then:
A. You don't have to "weave" the data with IDs (bloody difficult).
B. You can import without having to reorder and rearrange the Excel import file. i.e. straight from the source with no transformations.
C. Once in the staging table you can run a check unmatched records query on each table, then append the results of this query to the relevant table and repeat.
D. You don't have to manually increment the numbers, or get the "end no" of each table.
E. The database takes the overhead of creating and sustaining the relationships, which is what it is meant to be used for.
So my vote is definitely FOR autonumbers, then again, I agree with KornGeek in that different DBs need different keys.
E.G. a parts DB or any DB that tracks physical products would be useful. if it tracks virtual info like document numbers, dates, or non-physical info, you're better off with autonumbers, as all they do is maintain relationships.
I also liked the chainsaw analogy.
Nathan