CREATE TABLE Code (
CodeID int IDENTITY(1,1)
, CodeType int
, Description varchar(255))
ALTER TABLE Code ADD CONSTRAINT PK_Code PRIMARY KEY (CodeID, CodeType)
I would put CodeID as the PRIMARY KEY and separate index on the CodeType field.
The reasons being that I may want a drop down box of all entries for a particular code type.
As CodeId is unique I don't have to worry about what type I am referencing in a PK->FK relationship.
If I have a database with a large number of "Lookup" tables but these table only hold a handful of records each then I will consider the "MUCK" approach.
If those lookup table contain a vast number of records then I keep them as individual tables because a MUCK table will slow the system down.
It really depends on who is going to be using the database and for what.