I'm not sure if this is the "right" way but it works for me...
pre-release versions I call v0.x (e.g. v0.1, v0.2 etc)
full release versions then start at 1 (e.g. v1.0)
bugfix versions increment the second of the two number (e.g. v1.1, v1.2 etc)
major functionality or db structure changes mean an increase in the first number (e.g. v2.0)
So a hypothetical set of versions could be:
v0.1 pre-release/development
v0.2
v1.0 first full release
v1.1 minor additions and bugfixes
v1.2
v2.0 major upgrade in functionality or DB
v2.1 minor additions/bugfixes
v3.0
etc
Works for me at least but I'm sure someone will be able to find a fault with it!