Comment utiliser SQL: moments et des périodes 2011

Bien que les versions de la norme avant SQL SQL: 2011 prévus pour DATE, TEMPS, TIMESTAMP, et INTERVALLE types de données, ils ne traitent pas l'idée d'un période du temps avec un temps de démarrage définie et une heure de fin définie.

Une façon de répondre à ce besoin est de définir une nouvelle PÉRIODE Type de données. SQL: 2011 cependant, ne fait pas cela. Pour introduire un nouveau type de données dans SQL à ce stade avancé de son développement serait faire des ravages avec l'écosystème qui a construit autour de SQL. Une intervention chirurgicale majeure à pratiquement tous les produits de base de données existants serait nécessaire d'ajouter un nouveau type de données.

SQL: 2011 permet de résoudre le problème en ajoutant Définitions période sous forme de métadonnées aux tables. Une définition de période est un composant de table nommée, l'identification d'une paire de colonnes qui capturent le début de la période et le temps de fin de période. La CREATE TABLE et ALTER TABLE énoncés utilisés pour créer et modifier des tableaux ont été mis à jour avec une nouvelle syntaxe pour créer ou détruire les périodes créées par ces nouvelles définitions de la période.

UN PÉRIODE est déterminée par deux colonnes: une colonne de début et une fin de colonne. Ces colonnes sont classiques, tout comme les colonnes des types de données de date existantes, chacune avec son propre nom unique. Comme mentionné précédemment, la définition d'une période est un composant de tableau nommé. Il occupe le même espace de nommage que les noms de colonnes, donc il ne doit pas dupliquer un nom de colonne existante.




SQL suit un modèle fermé-ouvert pour des périodes, ce qui signifie qu'une période comprend l'heure de début mais pas la fin des temps. Pour toute ligne de la table, un temps de fin de la période doit être supérieure à l'heure de début. Ceci est une contrainte qui est imposée par le SGBD.

Il ya deux dimensions du temps qui sont importantes quand traitement de données temporelles:

  • Durée de validité est la période de temps pendant laquelle une ligne dans une table reflète correctement la réalité.

  • Temps de transaction est la période de temps pendant laquelle une rangée est déterminé à ou enregistrés dans une base de données.

La période de validité et le temps de transaction pour une ligne dans une table ne sont pas nécessairement les mêmes. Par exemple, dans une base de données d'affaires qui enregistre la période au cours de laquelle un contrat est en vigueur, les informations sur le contrat peut être (et est probablement) inséré avant l'heure de début du contrat.

Dans SQL: 2011, des tableaux distincts peuvent être créés et maintenus pour accueillir les deux différents types de temps, ou un seul, table bitemporal peut servir l'objectif. Informations de temps de transaction est maintenue dans les tables système versionné, qui contiennent la période système en temps, désigné par le mot-clé LE TEMPS DU SYSTÈME.

Une information de temps valable, d'autre part, est maintenue dans les tableaux qui contiennent une période application en temps. Vous pouvez donner une période application en temps le nom que vous voulez, à condition que le nom ne soit pas déjà utilisé pour autre chose. Vous êtes autorisé à définir au plus une période de système en temps et une période application en temps.

Bien que le soutien de données temporelles dans SQL est introduite pour la première fois dans SQL: 2011, les gens ont dû faire face à des données temporelles à long avant que les constructions temporelles de SQL: 2011 ont été inclus dans les produits de base de données. Cela a été fait habituellement en définissant deux colonnes de la table, l'un pour l'datetime de début et l'autre pour le datetime final.

Le fait que SQL: 2011 ne définit pas une nouvelle PÉRIODE type de données, mais utilise plutôt des définitions de la période sous forme de métadonnées, signifie que les tables existantes avec ces colonnes de début et de fin peuvent être facilement mis à jour pour intégrer la nouvelle capacité. La logique pour fournir des informations de période peut être retiré à partir d'applications existantes, de les simplifier, de les accélérer, et de les rendre plus fiables.


» » » » Comment utiliser SQL: moments et des périodes 2011