Al tener una llave numerica te hace mas rapidas las consultas, sobre todo si clave de producto es grande (digamos 18-20 caracteres) y haces joins con otras tablas con mucha info.. inventarios, transacciones.. etc..
Pero bueno a veces no es practico tener el auto incrementable por lo que ya se ha mencionado en otros posts..
Sin embargo si deseas utilizarlo SQL te provee de restriccion de clave unica, para validar la consistencia de tu info..y que no halla repetidos (sin depender de la capa de programacion)...
por ejemplo:
Código:
if OBJECT_ID('tempdb..#tmpTest') is not null drop table #tmpTest
create table #tmpTest (iKey int identity(1,1) Primary key, cProduct CHAR(10) Unique )
INSERT INTO #tmpTest VALUES('PROD01'),('PROD02'),('PROD03'),('PROD04'),('PROD05')
SELECT * FROM #tmpTest
INSERT INTO #tmpTest VALUES('PROD05')
Este ultimo truena con este mensaje..
Msg 2627, Level 14, State 1, Line 9
Violation of UNIQUE KEY constraint 'UQ__#tmpTest__368D6FC77A67F969'. Cannot insert duplicate key in object 'dbo.#tmpTest'.
The statement has been terminated.
Y como referencia..
Primary key VS Unique key in SQL Server Saludos!