Como sabes, lo mejor y más correcto es que la Primary Key de una tabla se obtenga a través de un generador autoincremental.

Lo normal es que cada tabla tenga su propio generador autoincremental, sin embargo existe otra posibilidad muy interesante: usar un solo generador autoincremental para obtener la Primary Key de todas las tablas.

¿Por qué haríamos algo así?

  1. Las Primary Key no necesitan ser visibles a los usuarios porque son una herramienta para mantener la integridad de la Base de Datos, los usuarios ni siquiera necesitan saber que existen
  2. Los números de las Primary Key no necesitan ser consecutivos, solamente se requiere que sean únicos
  3. Si se usa un BIGINT entonces estaríamos seguros de que nunca jamás tendremos números repetidos
  4. La Base de Datos ya puede estar preparada para replicación. Si en el Servidor1 el valor inicial del generador es 1.000.000.000 y en el Servidor2 el valor inicial del generador es 2.000.000.000 entonces nunca tendremos conflictos porque en la gran mayoría de las bases de datos dichos números nunca se repetirán. Tener 1.000.000.000 de transacciones es exageradamente mucho. Desde luego que si pensamos que tal cosa podría ocurrir nuestro generador no empezaría en 1.000.000.000 sino en 10.000.000.000 o en otro número mayor. De esta manera podríamos copiar sin problemas el contenido de las tablas de una Base de Datos a la otra Base de Datos con la seguridad de que no tendremos conflictos porque siempre las Primary Key serán diferentes.

Ejemplo:

En cada una de nuestras tablas su Primary Key es el Identificador de la misma

  • Insertamos una fila en MiTabla1, su Identificador es 1
  • Insertamos una fila en MiTabla2, su Identificador es 2
  • Insertamos una fila en MiTabla2, su Identificador es 3
  • Insertamos una fila en MiTabla3, su Identificador es 4
  • Insertamos una fila en MiTabla1, su Identificador es 5
  • Insertamos una fila en MiTabla3, su Identificador es 6

El Identificador de cada tabla no tiene números secuenciales y consecutivos, pero no necesita tenerlos, lo único que necesita es que esos números no se repitan.

Artículos relacionados:

Entendiendo a las Primary Keys

Uso de la Primary Key

Agregando una Primary Key

Tablas sin una Primary Key

Nombre de la Primary Key de una tabla

Valor duplicado en una Primary Key o en una Unique Key

Entendiendo a las Foreign Keys

Entendiendo la Integridad Referencial

El generador autoincremental

El índice del blog Firebird21

El foro del blog Firebird21