Also adding some fuel to the fire. Meaningless keys all the way with me, especially the junction tables, so much easier to reference one field.
My problem with natural keys is that the uniqueness is out of the hands of the developer.
Out of curiosity, were the findings of this thread published somewhere?
I also posted a long while ago on this thread.
It's a tautology, but the trouble is that a meaningless key is by it's very definition meaningless. The one side of a join simply cannot be meaningless. At the very least it must be a congruent synonym for a corresponding set of values (fields) that are unique within the table.
So pragmatically, you have one customer to many orders. You may choose to use a surrogate autonumber key for the customer record, but there absolutely must also be a "real" value in the record that is unique. For a customer, probably the customer name, or customer account number, generally both.
Now the orders on the many side will be related to order lines in a one to may relationship. You may add a surrogate autonumber key to the orders table, but the truth is that there will also be some other unique field, such as the order number. It doesn't have to be there to make the database relationship work, but it definitely has to be there to model the real world.