Cómo usar sql: tiempos y períodos 2011
Aunque las versiones del estándar SQL antes de SQL: 2011 proporcionan para FECHA, HORA, TIMESTAMP, y INTERVALO tipos de datos, que no abordaron la idea de un período de tiempo con una hora de inicio definida y un tiempo final definitivo.
Una manera de abordar esta necesidad es definir un nuevo PERIODO tipo de datos. SQL: 2011, sin embargo, no lo hace. Para introducir un nuevo tipo de datos en SQL en esta última etapa de su desarrollo sería causar estragos en el ecosistema que se ha acumulado alrededor de SQL. Cirugía mayor a prácticamente todos los productos de bases de datos existentes sería necesario añadir un nuevo tipo de datos.
SQL: 2011 resuelve el problema agregando las definiciones de época como metadatos a las tablas. Una definición período es un componente de tabla llamada, la identificación de un par de columnas que capturar el inicio del período y el tiempo de cierre del período. los CREATE TABLE y ALTER TABLE declaraciones utilizadas para crear y modificar tablas se han actualizado con nueva sintaxis para crear o destruir los períodos creadas por estas nuevas definiciones de época.
LA PERIODO está determinado por dos columnas: una columna de inicio y una columna final. Estas columnas son convencionales, como las columnas de los tipos de datos de fecha existentes, cada una con su propio nombre único. Como se mencionó anteriormente, una definición período es un componente de tabla llamada. Ocupa el mismo espacio de nombres como nombres de columna, por lo que no debe duplicar cualquier nombre de la columna existente.
SQL sigue un modelo abierto-cerrado por períodos, lo que significa que un período incluye la hora de inicio, pero no el tiempo del fin. Para cualquier fila de la tabla, una hora de finalización período debe ser mayor que su hora de inicio. Esta es una restricción que se hace cumplir por el DBMS.
Hay dos dimensiones del tiempo que son importantes cuando se trata de datos temporales:
Tiempo valido es el período de tiempo durante el cual una fila en una tabla refleja correctamente la realidad.
Tiempo de transacción es el período de tiempo durante el cual una fila se ha comprometido a o registrados en una base de datos.
El tiempo de validez y el tiempo de transacción para una fila en una tabla que no tiene por qué ser el mismo. Por ejemplo, en una base de datos de negocios que registra el período durante el cual el contrato es válido, la información sobre el contrato puede ser (y probablemente es) que se inserta antes de la hora de inicio del contrato.
En SQL: 2011, mesas separadas pueden ser creados y mantenidos para dar cabida a los dos tipos diferentes de tiempo, o una sola, mesa bitemporal puede servir al propósito. Información de tiempo de transacción se mantiene en tablas versionada por el sistema, que contienen el período de tiempo del sistema, denotado por la palabra clave HORA DEL SISTEMA.
Información de tiempo válido, por otro lado, se mantiene en las tablas que contienen un período de tiempo de aplicación. Usted puede dar un período de tiempo de aplicación de cualquier nombre que desee, siempre y cuando el nombre no está ya utilizado para otra cosa. Se le permite definir como máximo un periodo de tiempo del sistema y otro período de tiempo de aplicación.
Aunque el apoyo de datos temporal en SQL se está introduciendo por primera vez en SQL: 2011, la gente ha tenido que lidiar con datos temporales mucho antes de las construcciones temporales de SQL: 2011 se incluyeron en cualquiera de los productos de base de datos. Normalmente, esto se hace mediante la definición de dos columnas de tablas, una para la fecha y hora de inicio y la otra para la fecha y hora final.
El hecho de que SQL: 2011 no define un nuevo PERIODO tipo de datos, sino que utiliza las definiciones de época como metadatos, significa que las tablas existentes con esas columnas de inicio y fin pueden ser fácilmente actualizados para incorporar la nueva capacidad. La lógica para el suministro de información periodo puede ser retirado de los programas de aplicación existentes, simplificando ellos, acelerarlos, y hacerlas más fiable.