I'm a fan of option 3:
CREATE TABLE Products
(
ProductId int NOT NULL IDENTITY(1,1) PRIMARY KEY,
CategoryId int NOT NULL FOREIGN KEY REFERENCES Categories(CategoryId),
Name varchar(200) NOT NULL
)
So the primary key is the only column to gain the table's name as a prefix -- IMHO it makes it easier to see when a join has gone wrong. Then again, I also like using GUIDs for primary keys if there is any possibility of having to cope with a merge replication situation at any point in the future...