A bit simplistic, but in a nutshelll.... They are used for different things. A natural PK is used for data integrity purposes, and if it is a single attr, it can also be a performance enhancing index. An artificial key is used to speed up queries, by allowing joins on a single indexed attribute. So use your composite, data driven, unique index as an integrity rule to prevent duplicates, and use an artificial PK to enhance performance on queries & joins. When you need to enhance performance is largely up to you, unless you require your design to always maximise efficiency. HTH, Brent Wood