• Another thing to consider is that the foreign key needs to be the same data type as the primary key.

    When considering what to make your primary key, you should take a multitude of things into consideration. This includes that the values will be unique, small in size, static and that they have room to grow.

    Unique: They uniquely identify the row, so the values must be unique. Example: Don't use a name.

    Small in Size: Also, every nonclustered index will inherit the primary key as a part of the index. The impact on index size and index rows per page dictates that they should be kept small. Example: Don't use a name or nvarchar(255).

    Static: The values shouldn't change much because you don't want things shuffled around in the index because you update a value. Example: Don't use a date.

    Room to Grow: You don't want to have a key that will run out of room because you won't be able to insert any more rows into the table. Example: Don't use an integer on a table where you expect 250M rows a day.

    I am, but no means, the foremost authority on indexing, but this is a decent first-pass list as to how to design your keys. It will give you a decent start in the right direction when creating your nonclustered indexes as well.