What are AutoNumber Dangers

  • Thread starter Thread starter Barry A&P
  • Start date Start date
B

Barry A&P

I recently viewed a post that said "autonumber is fine as long as you dont
display it to the user..." Everything in my database references
autonumbers!! did i make a big mistake somewhere?? i am even marking parts
with ID numbers that are generated by the autonumber field on a few of my
tables...

Should i be worried??

Do i need to seriously look into a new approach??

any comments are greatly appreciated..

Barry
 
There is nothing wrong with autonumbers, even in more advanced dbs dbas
create a form of autonumber (they call it differently but it serves the same
purpose).

The problem is that many people mistakenly try to rely on autonumbers as,
for instance, a document number. It is merely a unique id associated to a
record. In reality it should serve no other purpose. The end user should
even be aware of autonumber. If you need to number your records and display
it to the user, ie a sequential number associated to a document, then create
a custom field in your table for this distinct purpose.

Short answer, there is nothing wrong with autonumber, but rather the way
some people mistakenly try an use them.

Don't worry!
--
Hope this helps,

Daniel Pineault
http://www.cardaconsultants.com/
For Access Tips and Examples: http://www.devhut.net
Please rate this post using the vote buttons if it was helpful.
 
Same as what Daniel said...couple more notes.

When it's said to never show it to the outside world, that's to guard
against anybody ever trying to change one. The minute you try to use them
for a real world use, you run the risk of somebody with more authority than
brains or listening skills dictating a change or reassignment of a number
which violates an important and essential database principle.
 
Barry said:
I recently viewed a post that said "autonumber is fine as long as you dont
display it to the user..." Everything in my database references
autonumbers!! did i make a big mistake somewhere?? i am even marking
parts with ID numbers that are generated by the autonumber field on a few
of my tables...

Should i be worried??

Do i need to seriously look into a new approach??

any comments are greatly appreciated..

In my opinion "never expose AutoNumbers to users" is vastly overstated. It
is based on an assumption that users will make assumptions that might
confuse them (like the values should not have gaps).

Well, amongst users the stupid ones will make assumptions that confuse them
about LOTS of things. The smart ones not so much. Many situations will
never expose a long continuous block of records to a user at one time where
an assumption about gaps comes into play anyway.

There are cases where the "business rules" dictate no gaps. In those cases
avoid AutoNumbers. There is little reason to avoid them (and show them to
users) when business rules don't care.
 
Barry

What Daniel and Fred said ...

Access Autonumbers are designed to serve as unique row identifiers, nothing
else. As such, they are rarely suitable for human consumption.

Keep using them as unique row identifiers, but don't expect your users to
understand ... OR CARE!

If you want your users to care about some number, use Daniel's approach and
create a new field, in addition to your autonumber field. Use that new
field to hold a "sequence number". That one's OK to show the users...

(and all things in moderation... a fellow whose experience I greatly respect
quite often displays autonumbers to his user ... but he has a very high
class of users ...<g>)

Regards

Jeff Boyce
Microsoft Access MVP

--
Disclaimer: This author may have received products and services mentioned
in this post. Mention and/or description of a product or service herein
does not constitute endorsement thereof.

Any code or pseudocode included in this post is offered "as is", with no
guarantee as to suitability.

You can thank the FTC of the USA for making this disclaimer
possible/necessary.
 
What Daniel and Fred said ...

Me too!
Access Autonumbers are designed to serve as unique row identifiers, nothing
else. As such, they are rarely suitable for human consumption.

Rarely, but not never.
If you want your users to care about some number, use Daniel's approach and
create a new field, in addition to your autonumber field. Use that new
field to hold a "sequence number". That one's OK to show the users...

(and all things in moderation... a fellow whose experience I greatly respect
quite often displays autonumbers to his user ... but he has a very high
class of users ...<g>)

We sometimes let the users see an Autonumber, when they need to
correctly identify one record among many similar records -
transactions for example. Of course they can't change it, and we tell
them not to worry about gaps in the sequence. Once we explain that
it's just a unique "Reference Number" (we actually sometimes call it
that in the UI), they seem to do just fine with it. It's easier than
building our own sequence number.

Armen Stein
Microsoft Access MVP
www.JStreetTech.com
 
When it's said to never show it to the outside world, that's to
guard against anybody ever trying to change one.

Er, what? Autonumbers aren't editable, so there's no danger even
*if* somebody is tempted to change one.

The problem is that people invest MEANING in Autonumber values and
assume they are sequential and have no gaps. An Autonumber is really
just a special type of default value for a Long Integer field (you
can append any value to it you like that doesn't violate an existing
index). It can, in fact, be random (and *is* random in a replicated
Jet database).

The values of an Autonumber field have no meaning. Exposing them to
the user tempts them to invest the values with meaning, and that's
the flaw.
 
I recently viewed a post that said "autonumber is fine as long as you dont
display it to the user..." Everything in my database references
autonumbers!! did i make a big mistake somewhere?? i am even marking parts
with ID numbers that are generated by the autonumber field on a few of my
tables...

Should i be worried??

Do i need to seriously look into a new approach??

any comments are greatly appreciated..

Barry

Just one other caveat in addition to the good points made by the other
responders: if you ever Replicate your database (which you won't if it's in
2007 or 2010, that feature has been removed), all your autonumbers will become
random. The next three records might have autonumber values of -228412113,
1924443671 and -889225013. If that won't freak out your users nothing will!
 
I am in fact using the autonumber field because i Need a Unique Identifier
for each item. I tried the Consecutive number approach but had many cases
where using DMax+1 then the last record was deleted and the number was
re-created-- I am in Access 2007 and dont know if i will ever need to
replicate (whatever that does) so for now i will cross my fingers and hope i
dont ever see -32481927 as a Unique Identifier for one of my parts.. Cross
that bridge when i get there i guess...

Thank you everybody for your input..

Barry
 
Thanks Jeff

I needed to see this line

"(and all things in moderation... a fellow whose experience I greatly respect
quite often displays autonumbers to his user ... but he has a very high
class of users ...<g>)
"

Barry
 
if you ever Replicate your database (which you won't if it's in
2007 or 2010, that feature has been removed),

No, that has *not* been removed. A2007 and A2010 and the ACE all
still support Jet replication, just not in ACCDB format, but only in
MDB format.

The lack of replication (and ULS) is a FILE FORMAT issue, not an
application or database engine issue.
 
Of course you are right. I was mixing two topics together there (came from
assuming that the autonumber is also the PK) but I think that my statement
about the potential issue still is useful.
 
Back
Top