Définition des contraintes de table - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Définition des contraintes de table

Les contraintes d’unicité, de clé primaire et de clé externe sont uniquement informatives ; elles ne sont pas appliquées par Amazon Redshift lorsque vous remplissez une table. Par exemple, si vous insérez des données dans une table avec des dépendances, l’insertion peut réussir même si elle enfreint la contrainte. Néanmoins, les clés primaires et les clés étrangères servent de conseils de planification et doivent être déclarées si votre processus ETL ou un autre processus de votre application impose leur intégrité.

Par exemple, le gestionnaire de requêtes utilise des clés primaires et étrangères dans certains calculs statistiques. Il le fait pour déduire l’unicité et les relations référentielles qui affectent les techniques de décorrélation des sous-requêtes. Ce faisant, il peut ordonner un grand nombre de jointures et supprimer les jointures redondantes.

Le planificateur exploite ces relations entre les clés, mais il suppose que toutes les clés des tables Amazon Redshift sont valides telles qu’elles sont chargées. Si votre application autorise les clés étrangères ou primaires non valides, certaines requêtes peuvent renvoyer des résultats incorrects. Par exemple, une requête SELECT DISTINCT peut renvoyer des lignes en double si la clé primaire n’est pas unique. Ne définissez pas de contraintes de clés pour vos tables si vous doutez de leur validité. Cependant, déclarez toujours les clés primaires et étrangères et les contraintes d’unicité lorsque vous savez qu’elles sont valides.

Amazon Redshift fait respecter les contraintes de colonne NOT NULL.

Pour de plus amples informations sur les contraintes de table, consultez CREATE TABLE. Pour plus d’informations sur la manière de supprimer une table avec des dépendances, consultez DROP TABLE.