tipo tablas relacionar primaria por para modificar llave foranea dato crear compuesta codigo clave sql-server database-design types

sql server - tablas - Tipo de datos SQL para clave principal: ¿servidor SQL?



relacionar tablas en sql server por codigo (5)

¿Qué tipo de datos sql deberíamos usar para las claves numéricas de la clave principal?

  1. En t
  2. bigint
  3. numérico
  4. flotador

Realmente necesitas separar dos cuestiones separadas:

1) la clave primaria es una construcción lógica, uno de los candidatos clave que identifica de manera única y fiable una fila en su tabla. Esto puede ser cualquier cosa, en realidad, una INT, un GUID, una cadena, elija lo que tenga más sentido para su escenario.

2) la clave del clúster (la columna o columnas que definen el "índice agrupado" en la tabla): esta es una cuestión relacionada con el almacenamiento físico , y aquí, un tipo de datos pequeño, estable y en constante aumento es su mejor opción - INT o BIGINT como su opción predeterminada.

De forma predeterminada, la clave principal en una tabla de SQL Server también se usa como la clave de clúster, ¡pero eso no tiene por qué ser así! Personalmente, me parece que las ganancias de rendimiento masivas con el tiempo al dividir la Clave Primaria Clúster basada en GUID anterior en dos claves separadas: la clave primaria (lógica) en el GUID y la clave de agrupamiento (ordenamiento) en una IDENTIDAD INT separada (1 , 1) columna.

La fragmentación del índice se redujo a niveles mínimos y, por lo tanto, el rendimiento de la búsqueda del índice se incrementó: ¡muy recomendable!

Bagazo


Una gran razón para no usar GUID para PK es su terrible índice de relleno para las páginas de índice; dicho mal uso puede aumentar drásticamente los costos de rendimiento de E / S. Los GUID deben dejarse como AK y, en su lugar, generar consultas con PK derivadas de int, siempre que sea posible.


para los procesadores de 32 bits, un int es probable que sea el tamaño más eficiente para el procesamiento.


unsigned int de cualquier tamaño que satisfaga sus necesidades particulares


Generalmente, int .

bigint si crees que tendrás más filas que átomos en el universo.

uniqueidentifier es útil si necesita claves únicas a nivel mundial (claves que se garantiza que son únicas en todas las tablas de su esquema, quizás incluso universalmente únicas (no lo recuerdo))

Los otros dos que no usaría no son tipos integrales (tienen fracciones, que simplemente no tienen mucho sentido como teclas)