this is a purist vs practicality problem:
The purist would say that you have a natural key already ( the category name ) - therefore you should use that as your key and form the foreign keys on that.
Practically though - this means that every foreign key uses up more space than the simple numeric key would use (an int is 4 bytes) -- a varchar(50) is 52 bytes.
Also practically if your key is also your Clustered index then you'd be inserting into an ordered structure with un-ordered data which will cause shuffling. Better to use a surrogate auto number key.
I'd go with the surrogate key for must real world situations.
Msg 3903.. The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION.http://nosqlsolution.blogspot.co.uk/