fbpx
Wikipedia

Clave sustituta

Una clave sustituta o clave artificial en una base de datos es un identificador único para una entidad en el mundo real o modelado o para un objeto en la base de datos. Al contrario que la clave natural, la clave sustituta no deriva de los datos de una aplicación.

Definición

Hay al menos dos definiciones de una sustituta:

Sustituta (1) – Hall, Owlett y Todd (1976)
Una sustituta representa una entidad en el mundo exterior. La sustituta se genera internamente por el sistema pero nunca es visible para el usuario o la aplicación.[1]
Sustituta (2) – Wieringa y De Jonge (1991)
Una sustituta representa un objeto en la propia base de datos. La sustituta se genera por el sistema y es invisible al usuario o la aplicación.

La definición Sustituta (1) hace referencia al modelo de datos más que a un modelo de almacenamiento y es el utilizado en este artículo.

Una importante diferencia entre una sustituta y una clave primaria depende de si la base de datos es actual o temporal. Si una base de datos actual sólo almacena información válida actual, hay una correspondencia uno-a-uno entre la sustituta del mundo modelado y la clave primaria de la base de datos. En este caso, la sustituta puede utilizarse como clave primaria, resultando en el término clave sustituta. Sin embargo, en una base de datos temporal, hay una relación de muchas-a-una entre claves primarias y la sustituta. Desde que puede haber varios objetos de la base de datos correspondiendo a una única sustituta, no se puede utilizar la sustituta como clave primaria; necesitando otro atributo a añadir a la sustituta para identificar de forma única cada objeto.

Aunque Hall et al. (1976) no dice nada sobre esto, otros han argumentado que una sustituta debería tener las siguientes características:

  • El valor es único en el sistema y por lo tanto, nunca reutilizado
  • El valor está generado por el sistema
  • El valor no es manipulable ni por el usuario ni por la aplicación
  • El valor no contiene ningún significado semántico
  • El valor no es visible para el usuario o la aplicación
  • El valor no se compone de varios valores de diferentes dominios

Sustitutas en la práctica

En una base de datos actual, la clave sustituta puede ser la clave primaria, generada por el sistema de gestión de bases de datos y no deriva de los datos de ninguna aplicación. La única misión de la clave sustituta es actuar como clave primaria. También es posible que una clave sustituta exista como adición a una UUID generada por la base de datos.

Frecuentemente, una clave sustituta es un número secuencial (p.ej. una columna de identidad de Sybase o SQL Server, un número de serie en PostgreSQL o Informix, una SEQUENCE en Oracle o una columna definida con AUTO_INCREMENT en MySQL). Algunas bases de datos proporcionan UUID como tipo de datos posible para claves sustitutas (p.ej. PostreSQL UUID (inglés)).

Tener una clave independiente de todas las demás columnas, aísla las relaciones de la base de datos de los cambios en los valores de la información o del diseño de la base de datos (haciendo que sea más ágil) y garantizando la singularidad.

ClaveSustituta ClaveNegocio NombreEmpleado HorasPorSemana Desde Hasta
1 BOS0120 John Smith 40 01-01-2000 31-12-2000
56 P0000123 Bob Brown 25 01-01-1999 31-12-2011
234 BOS0120 John Smith 35 01-01-2001 31-12-2009

Algunos diseñadores de bases de datos utilizan claves sustitutas de forma sistemática sin tener en cuenta la idoneidad de otras claves candidatas, mientras que otros usarán una clave ya existente en los datos, si existe.

Una clave sustituta también puede llamarse una clave sintética, un identificador de entidad, una clave generada por el sistema, un número secuencial de base de datos, una clave técnica, un identificador único arbitrario. Algunos de estos términos describen la forma en la que se generan nuevos valores de sustitución más que la naturaleza del concepto de sustitución.

Aproximaciones de generación de sustitutas incluyen:

Ventajas

Inmutabilidad

Las claves sustitutas no cambian mientras la fila de datos exista. Esto tiene las siguientes ventajas:

  • Las aplicaciones no pueden perder su referencia a una fila de la base de datos.
  • La información de la clave primaria o natural siempre pueden ser modificadas, incluso con bases de datos que no soportan actualizaciones en cascada a través de claves foráneas relacionadas.

Cambios de requisitos

Los atributos que identifican únicamente a una entidad pueden cambiar, lo que invalidarían la idoneidad de las claves naturales. Considerando el siguiente ejemplo:

El nombre de usuario de red de un empleado se elige como clave natural. Cuando se fusiona con otra compañía los nuevos empleados se tienen que añadir. Algunos de los nombres de usuario nuevos crean conflictos porque sus nombres se generaron de forma independiente (cuando las compañías estaban separadas).

En estos casos, generalmente se ha de añadir un nuevo atributo sobre la clave natural (por ejemplo, una columna compañía_original). Con una clave sustituta, sólo la tabla que define la clave sustituta tendría que ser cambiada. Con claves naturales, tendrían que ser cambiadas todas las tablas que usan la clave natural (y posiblemente otro software relacionado).

En algunas ocasiones es difícil encontrar una clave natural apropiada. Las claves sustitutas evitan elegir una clave natural que podría ser incorrecta.

Rendimiento

Las claves sustitutas tienden a ser de un tipo de datos compacto, como un entero de 4 bytes. Esto permite a la base de datos realizar consultas de una sola columna más rápido que con múltiples columnas. La distribución no-redundante de claves causa que el índice en árbol-B esté completamente balanceado. Las claves sustitutas tienen mejor rendimiento (menos columnas a comparar) que las claves compuestas.

Compactabilidad

Cuando se utilizan varios sistemas de desarrollo de aplicaciones de base de datos, drivers, y sistemas de mapeo objeto-relacional, como Ruby on Rails o Hibernate, es más fácil utilizar un tipo entero o claves sustitutas GUID para cada tabla en lugar de claves naturales.

Uniformidad

Cuando cada tabla tienen una clave sustituta uniforme, se pueden automatizar fácilmente algunas tareas escribiendo código de forma independiente para cada tabla.

Validación

Es posible diseñar claves-valores que sigan patrones bien conocidos o estructuras que pueden ser verificadas automáticamente. Por ejemplo, las claves creadas para ser usadas en algunas columnas de una tabla podrían ser diseñadas para "parecer diferente de" aquellas que han sido creadas para utilizarse en otras columnas de la tabla, simplificando la detección de errores de aplicación en las cuales las claves están fuera de lugar. Sin embargo, esta característica de las claves sustitutas no deberían usarse nunca para guiar cualquier lógica de las aplicaciones, ya que violaría los principios de la normalización de bases de datos.

Desventajas

Disasociación

Los valores de las claves sustitutas generadas no tienen relación con el significado en el mundo real de los datos contenidos en una fila. Cuando se inspecciona una fila que contiene una referencia de una clave foránea a otra tabla usando una clave sustituta, e significado de la fila de la clave sustituta no se puede discernir por la propia clave. Toda clave foránea debe unirse para ver la información del ítem relacionado. Esto puede complicar la auditoría ya que la información incorrecta no es obvia.

Las claves sustitutas no son naturales para la información que se exporta y comparte. Una dificultad particular es que las tablas de dos, por otro lado, esquemas idénticos (por ejemplo, un esquema de prueba y un esquema de desarrollo) pueden contener registros que son equivalentes en un contexto de negocios pero tener claves diferentes. Esto se puede mitigar no exportando claves sustitutas, excepto los datos transitorios (más obviamente, en aplicaciones que tienen una conexión activa con la base de datos).

Optimización de consultas

Las bases de datos relacionales asumen que un índice se aplica a la clave primaria de una tabla. El índice único sirve para dos propósitos: (1) para aumentar la integridad de la entidad, ya que la clave primaria debe ser única en todas las filas y (2) para buscar rápidamente filas cuando se realiza una consulta. Desde que las claves sustitutas reemplazan a los atributos identificativos de una tabla—la clave natural—y desde que los atributos identificativos son los que van a ser consultados, el optimizador de consultas se ve forzado a realizar escaneos de tablas completas para rellenar las consultas. Para evitar el escaneo completo de una tabla, se aplica índices sobre los atributos identificativos, o conjuntos de ellos. Dichos conjuntos son por sí mismos una clave candidata. El índice puede ser un índice único.

Sin embargo, estos índices adicionales ocuparán espacio en disco y ralentizarán las inserciones y los borrados.

Normalización

Las claves sustitutas pueden resultar en valores duplicados en cualquier clave natural. Es parte de la implementación asegurar que esos duplicados no tengan lugar.

Modelado de procesos de negocio

Debido a que las claves sustitutas no son naturales, pueden aparecer defectos en los requerimientos de modelado de negocios. Los requerimientos de negocios, que recaen en claves naturales, necesitan trasladarse a claves sustitutas. Una estrategia es dibujar una distinción clara entre el modelo lógico (en el que la clave sustituta no aparece) y la implementación física de ese modelo, para asegurar que el modelo lógico es correcto y razonablemente bien normalizado, y para asegurar que el modelo físico es una implementación correcta del modelo lógico.

Divulgación inadvertida

La información propietaria podría filtrarse si se utilizan generadores de claves secuenciales. Sustrayendo una clave secuencial previamente generada, se podría conocer el número de filas insertadas durante ese periodo de tiempo. Esto podría exponer, por ejemplo, el número de transacciones o nuevas cuentas por periodo. Hay pocas formas de afrontar este problema:

  • Incrementar el número secuencial en una cantidad arbitraria
  • Generar una clave aleatoria tal como una uuid

Asunciones inadvertidas

Las claves sustitutas generadas secuencialmente pueden implicar que los eventos con un valor de clave mayor ocurran después de eventos con un valor menor. Esto no es necesariamente cierto, ya que tales valores no garantizan una secuencia temporal, y podría hacer que las inserciones fallaran y dejaran huecos que pudieran llenarse en posteriormente. Si la cronología es importante, entonces deberían registrarse por separado la fecha y la hora.

Véase también

Referencias

  1. P A V Hall, J Owlett, S J P Todd, "Relations and Entities", Modelling in Data Base Management Systems (ed GM Nijssen), North Holland 1976.
  2. http://docs.oracle.com/database/121/SQLRF/statements_7002.htm#SQLRF01402


  •   Datos: Q871776

clave, sustituta, clave, sustituta, clave, artificial, base, datos, identificador, único, para, entidad, mundo, real, modelado, para, objeto, base, datos, contrario, clave, natural, clave, sustituta, deriva, datos, aplicación, Índice, definición, sustitutas, p. Una clave sustituta o clave artificial en una base de datos es un identificador unico para una entidad en el mundo real o modelado o para un objeto en la base de datos Al contrario que la clave natural la clave sustituta no deriva de los datos de una aplicacion Indice 1 Definicion 2 Sustitutas en la practica 3 Ventajas 3 1 Inmutabilidad 3 2 Cambios de requisitos 3 3 Rendimiento 3 4 Compactabilidad 3 5 Uniformidad 3 6 Validacion 4 Desventajas 4 1 Disasociacion 4 2 Optimizacion de consultas 4 3 Normalizacion 4 4 Modelado de procesos de negocio 4 5 Divulgacion inadvertida 4 6 Asunciones inadvertidas 5 Vease tambien 6 ReferenciasDefinicion EditarHay al menos dos definiciones de una sustituta Sustituta 1 Hall Owlett y Todd 1976 Una sustituta representa una entidad en el mundo exterior La sustituta se genera internamente por el sistema pero nunca es visible para el usuario o la aplicacion 1 Sustituta 2 Wieringa y De Jonge 1991 Una sustituta representa un objeto en la propia base de datos La sustituta se genera por el sistema y es invisible al usuario o la aplicacion La definicion Sustituta 1 hace referencia al modelo de datos mas que a un modelo de almacenamiento y es el utilizado en este articulo Una importante diferencia entre una sustituta y una clave primaria depende de si la base de datos es actual o temporal Si una base de datos actual solo almacena informacion valida actual hay una correspondencia uno a uno entre la sustituta del mundo modelado y la clave primaria de la base de datos En este caso la sustituta puede utilizarse como clave primaria resultando en el termino clave sustituta Sin embargo en una base de datos temporal hay una relacion de muchas a una entre claves primarias y la sustituta Desde que puede haber varios objetos de la base de datos correspondiendo a una unica sustituta no se puede utilizar la sustituta como clave primaria necesitando otro atributo a anadir a la sustituta para identificar de forma unica cada objeto Aunque Hall et al 1976 no dice nada sobre esto otros han argumentado que una sustituta deberia tener las siguientes caracteristicas El valor es unico en el sistema y por lo tanto nunca reutilizado El valor esta generado por el sistema El valor no es manipulable ni por el usuario ni por la aplicacion El valor no contiene ningun significado semantico El valor no es visible para el usuario o la aplicacion El valor no se compone de varios valores de diferentes dominiosSustitutas en la practica EditarEn una base de datos actual la clave sustituta puede ser la clave primaria generada por el sistema de gestion de bases de datos y no deriva de los datos de ninguna aplicacion La unica mision de la clave sustituta es actuar como clave primaria Tambien es posible que una clave sustituta exista como adicion a una UUID generada por la base de datos Frecuentemente una clave sustituta es un numero secuencial p ej una columna de identidad de Sybase o SQL Server un numero de serie en PostgreSQL o Informix una SEQUENCE en Oracle o una columna definida con AUTO INCREMENT en MySQL Algunas bases de datos proporcionan UUID como tipo de datos posible para claves sustitutas p ej PostreSQL UUID ingles Tener una clave independiente de todas las demas columnas aisla las relaciones de la base de datos de los cambios en los valores de la informacion o del diseno de la base de datos haciendo que sea mas agil y garantizando la singularidad ClaveSustituta ClaveNegocio NombreEmpleado HorasPorSemana Desde Hasta1 BOS0120 John Smith 40 01 01 2000 31 12 200056 P0000123 Bob Brown 25 01 01 1999 31 12 2011234 BOS0120 John Smith 35 01 01 2001 31 12 2009Algunos disenadores de bases de datos utilizan claves sustitutas de forma sistematica sin tener en cuenta la idoneidad de otras claves candidatas mientras que otros usaran una clave ya existente en los datos si existe Una clave sustituta tambien puede llamarse una clave sintetica un identificador de entidad una clave generada por el sistema un numero secuencial de base de datos una clave tecnica un identificador unico arbitrario Algunos de estos terminos describen la forma en la que se generan nuevos valores de sustitucion mas que la naturaleza del concepto de sustitucion Aproximaciones de generacion de sustitutas incluyen Universally Unique Identifier UUIDs Globally Unique Identifier GUIDs Identificador de Objeto OIDs Columna de identidad de Sybase o SQL Server IDENTITY o IDENTITY n n Oracle SEQUENCE o GENERATED AS IDENTITY desde la version 12 1 2 Numero de serie en PostgreSQL o IBM Informix MySQL AUTO INCREMENT Tipo de dato AutoNumber en Microsoft Access AS IDENTITY GENERATED BY DEFAULT en IBM DB2 Columna Identity implementado en DDL en Teradata Tabla Sequence cuando la secuencia se calcula mediante un procedimiento y una tabla de secuencia con campos id sequenceName sequenceValue y incrementValueVentajas EditarInmutabilidad Editar Las claves sustitutas no cambian mientras la fila de datos exista Esto tiene las siguientes ventajas Las aplicaciones no pueden perder su referencia a una fila de la base de datos La informacion de la clave primaria o natural siempre pueden ser modificadas incluso con bases de datos que no soportan actualizaciones en cascada a traves de claves foraneas relacionadas Cambios de requisitos Editar Los atributos que identifican unicamente a una entidad pueden cambiar lo que invalidarian la idoneidad de las claves naturales Considerando el siguiente ejemplo El nombre de usuario de red de un empleado se elige como clave natural Cuando se fusiona con otra compania los nuevos empleados se tienen que anadir Algunos de los nombres de usuario nuevos crean conflictos porque sus nombres se generaron de forma independiente cuando las companias estaban separadas En estos casos generalmente se ha de anadir un nuevo atributo sobre la clave natural por ejemplo una columna compania original Con una clave sustituta solo la tabla que define la clave sustituta tendria que ser cambiada Con claves naturales tendrian que ser cambiadas todas las tablas que usan la clave natural y posiblemente otro software relacionado En algunas ocasiones es dificil encontrar una clave natural apropiada Las claves sustitutas evitan elegir una clave natural que podria ser incorrecta Rendimiento Editar Las claves sustitutas tienden a ser de un tipo de datos compacto como un entero de 4 bytes Esto permite a la base de datos realizar consultas de una sola columna mas rapido que con multiples columnas La distribucion no redundante de claves causa que el indice en arbol B este completamente balanceado Las claves sustitutas tienen mejor rendimiento menos columnas a comparar que las claves compuestas Compactabilidad Editar Cuando se utilizan varios sistemas de desarrollo de aplicaciones de base de datos drivers y sistemas de mapeo objeto relacional como Ruby on Rails o Hibernate es mas facil utilizar un tipo entero o claves sustitutas GUID para cada tabla en lugar de claves naturales Uniformidad Editar Cuando cada tabla tienen una clave sustituta uniforme se pueden automatizar facilmente algunas tareas escribiendo codigo de forma independiente para cada tabla Validacion Editar Es posible disenar claves valores que sigan patrones bien conocidos o estructuras que pueden ser verificadas automaticamente Por ejemplo las claves creadas para ser usadas en algunas columnas de una tabla podrian ser disenadas para parecer diferente de aquellas que han sido creadas para utilizarse en otras columnas de la tabla simplificando la deteccion de errores de aplicacion en las cuales las claves estan fuera de lugar Sin embargo esta caracteristica de las claves sustitutas no deberian usarse nunca para guiar cualquier logica de las aplicaciones ya que violaria los principios de la normalizacion de bases de datos Desventajas EditarDisasociacion Editar Los valores de las claves sustitutas generadas no tienen relacion con el significado en el mundo real de los datos contenidos en una fila Cuando se inspecciona una fila que contiene una referencia de una clave foranea a otra tabla usando una clave sustituta e significado de la fila de la clave sustituta no se puede discernir por la propia clave Toda clave foranea debe unirse para ver la informacion del item relacionado Esto puede complicar la auditoria ya que la informacion incorrecta no es obvia Las claves sustitutas no son naturales para la informacion que se exporta y comparte Una dificultad particular es que las tablas de dos por otro lado esquemas identicos por ejemplo un esquema de prueba y un esquema de desarrollo pueden contener registros que son equivalentes en un contexto de negocios pero tener claves diferentes Esto se puede mitigar no exportando claves sustitutas excepto los datos transitorios mas obviamente en aplicaciones que tienen una conexion activa con la base de datos Optimizacion de consultas Editar Las bases de datos relacionales asumen que un indice se aplica a la clave primaria de una tabla El indice unico sirve para dos propositos 1 para aumentar la integridad de la entidad ya que la clave primaria debe ser unica en todas las filas y 2 para buscar rapidamente filas cuando se realiza una consulta Desde que las claves sustitutas reemplazan a los atributos identificativos de una tabla la clave natural y desde que los atributos identificativos son los que van a ser consultados el optimizador de consultas se ve forzado a realizar escaneos de tablas completas para rellenar las consultas Para evitar el escaneo completo de una tabla se aplica indices sobre los atributos identificativos o conjuntos de ellos Dichos conjuntos son por si mismos una clave candidata El indice puede ser un indice unico Sin embargo estos indices adicionales ocuparan espacio en disco y ralentizaran las inserciones y los borrados Normalizacion Editar Las claves sustitutas pueden resultar en valores duplicados en cualquier clave natural Es parte de la implementacion asegurar que esos duplicados no tengan lugar Modelado de procesos de negocio Editar Debido a que las claves sustitutas no son naturales pueden aparecer defectos en los requerimientos de modelado de negocios Los requerimientos de negocios que recaen en claves naturales necesitan trasladarse a claves sustitutas Una estrategia es dibujar una distincion clara entre el modelo logico en el que la clave sustituta no aparece y la implementacion fisica de ese modelo para asegurar que el modelo logico es correcto y razonablemente bien normalizado y para asegurar que el modelo fisico es una implementacion correcta del modelo logico Divulgacion inadvertida Editar La informacion propietaria podria filtrarse si se utilizan generadores de claves secuenciales Sustrayendo una clave secuencial previamente generada se podria conocer el numero de filas insertadas durante ese periodo de tiempo Esto podria exponer por ejemplo el numero de transacciones o nuevas cuentas por periodo Hay pocas formas de afrontar este problema Incrementar el numero secuencial en una cantidad arbitraria Generar una clave aleatoria tal como una uuidAsunciones inadvertidas Editar Las claves sustitutas generadas secuencialmente pueden implicar que los eventos con un valor de clave mayor ocurran despues de eventos con un valor menor Esto no es necesariamente cierto ya que tales valores no garantizan una secuencia temporal y podria hacer que las inserciones fallaran y dejaran huecos que pudieran llenarse en posteriormente Si la cronologia es importante entonces deberian registrarse por separado la fecha y la hora Vease tambien EditarClave naturalReferencias Editar P A V Hall J Owlett S J P Todd Relations and Entities Modelling in Data Base Management Systems ed GM Nijssen North Holland 1976 http docs oracle com database 121 SQLRF statements 7002 htm SQLRF01402 Datos Q871776Obtenido de https es wikipedia org w index php title Clave sustituta amp oldid 124215898, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos