5 puntos por GN⁺ 2024-06-06 | 2 comentarios | Compartir por WhatsApp
  • Las claves naturales son claves que se usan en bases de datos para garantizar la unicidad
  • Las claves naturales se basan en datos reales, como nombre, ciudad, año, etc.
  • Por ejemplo, en una base de datos de los 50 mejores restaurantes del mundo, se podrían usar restaurantName, cityName y year como clave natural
  • Sin embargo, las claves naturales pueden no garantizar la unicidad. Por ejemplo, puede haber restaurantes con el mismo nombre en varias ciudades

Identidad

  • Además de garantizar la unicidad, las claves naturales también deben garantizar la identidad
  • Por ejemplo, el número de chasis de un automóvil o un número de identificación personal (número CPR) podrían usarse como clave natural
  • Sin embargo, una misma persona puede tener varios números de identificación. Por ejemplo, en Dinamarca, una persona transgénero puede recibir un nuevo número CPR

Errores de documentación

  • Las claves naturales son vulnerables a errores de documentación
  • Pueden ocurrir errores de ingreso de datos, errores tipográficos de usuarios y errores de conversión de datos
  • El sistema debe poder corregir esos errores. Por lo tanto, no es apropiado usar claves externas como claves de la base de datos

Conclusión

  • Usar claves naturales en el diseño de bases de datos no es una buena idea
  • Pueden producirse errores en los datos, y debe ser posible corregirlos
  • Por lo tanto, es recomendable usar siempre claves artificiales en las tablas de la base de datos

La opinión de GN⁺

  • Problemas de las claves naturales: las claves naturales pueden no garantizar la unicidad ni la identidad, y son vulnerables a errores de ingreso de datos.
  • Ventajas de las claves artificiales: las claves artificiales garantizan unicidad e identidad, y permiten corregir errores de datos con facilidad.
  • Consideraciones al usar ORM: al usar bibliotecas ORM, es más fácil trabajar con claves artificiales. Como los ORM determinan en parte la estructura de la base de datos, usar claves artificiales es más eficiente.
  • Productos con funciones similares: otras herramientas de diseño de bases de datos o bibliotecas ORM también recomiendan usar claves artificiales. Por ejemplo, Hibernate y Entity Framework.
  • Consideraciones al adoptar la tecnología: al introducir un nuevo diseño de base de datos, conviene considerar las desventajas de las claves naturales y optar por claves artificiales. Las claves artificiales ayudan a garantizar la integridad de los datos y facilitan la corrección de errores.

2 comentarios

 
GN⁺ 2024-06-06
Comentario de Hacker News
  • IDs únicos, cortos y legibles para humanos: Se prefieren IDs como cus_MJA953cFzEuO1z que usa Stripe. También hay formas de generarlos en JavaScript/TypeScript.
  • Números de identificación personal: Se compara el número CPR de Dinamarca con el SSN de Estados Unidos. El SSN no es único, puede cambiar y puede emitirse incluso a personas que no son ciudadanas estadounidenses. Se recomienda no usarlo como clave de base de datos.
  • Alias y registros de auditoría: Al usar una clave natural como el número CPR danés, se necesita una tabla separada para registrar los cambios. Las URL también pueden usarse como claves naturales, pero si cambian hay que crear una tabla de redirecciones.
  • Límites de las claves naturales: Si un identificador único cambia, hay que rastrear toda la información relacionada. Si se agrega una clave artificial, hay todavía más información que rastrear. El modelado de datos debe reflejar el mundo real.
  • Claves naturales y privacidad: Si una clave natural incluye información personal, puede propagarse a otras tablas a través de claves foráneas.
  • Ejemplo de gamertag: Un ejemplo de usar el gamertag de PlayStation Network como clave natural. Si el gamertag no cambia, puede usarse como identificador único.
  • Ejemplo en el sector salud: Si el personal de registro introduce mal un número de salud personal (PHN), se generan problemas. Si se usa una clave artificial, luego puede corregirse.
  • Falta de control sobre las claves naturales: No se puede confiar en nombres, direcciones o números oficiales de registro porque no están bajo tu control. Hay que usar un sistema de claves únicas.
  • Uso de claves artificiales: Usar un campo de ID único en todas las tablas facilita resolver problemas. Como los datos y las relaciones cambian con frecuencia, es difícil confiar en las claves naturales.
  • Mutabilidad e ID únicos: La posibilidad de cambio exige un identificador común a lo largo del tiempo. La base de datos debe incluir una clave sustituta explícita en el esquema.
 
jsonobject 2024-06-07

También recomiendo usar TSID, que incluso con claves artificiales está preparado para entornos distribuidos, como regiones globales. Yo uso TSID como PK en MySQL y DynamoDB.

https://jsonobject.hashnode.dev/using-tsid-as-database-pk