mrsteve, one advantage of using the natural keys as in your example of temperatures is that you can run queries against that table to filter by values on any of the parts of the key, e.g. average temps in the tropics (filter by latitude),
without having to do a join to the location table, which the use of a surrogate key would force upon you
further, you
can often make a decision about whether the natural key realistically has a chance of ever changing -- for example, lat/long likely won't
finally, i'd like to second the remark that "Anyone who says natural keys are not normalised is wrong"
as well, the remark "wherever a surrogate is used then unique constraints must also be used to enforce any natural keys that exist, and this tends to get overlooked by those who fit a surrogate to everything without thinking" bears repeating
i've seen far too many needless surrogate keys
for example, in a many-to-many relationship table:
foo (id PK, fooname)
bar (id PK, barname)
foobar (id PK, fooid FK, barid FK)
the composite (fooid,barid) needs a unique constraint, which is conveniently provided if the composite were made the PK instead of the useless surrogate
rudy
http://r937.com/