• Since this board's quote feature only shows the first part of the post, here's the part I'm addressing:

    "But anyway, if we declare the PK as (strDescription, strCategory), we're using the data itself as a PK.  Sort of defeats the purpose of a PK and any potential optimizations it might provide."

    This looks like a confusion of logical-physical (the result of SQL implementing PK's as physical indexes). As a logical construct, a PK has nothing to say about performance, and nothing but the data [loosely speaking!] could inform any of the candidate keys which may be designated as the PK. (I may be misunderstanding -- if by "data" you are referring specifically to the strDescription column and no other, then I see your point).

    When we talk about the index SQL uses to implement the PK, though, then it may be time to be concerned about the size of the columns involved.

    By the way, Don's point about the difficulty of assessing the design in the absence of the actual DDL for the table is a good one. Has everyone noticed how often we have to use the word "assume"?

     

    TroyK