Comment utiliser des règles d'intégrité référentielle et le prédicat de match de SQL

Règles d'intégrité référentielle exigent que les valeurs d'une colonne ou des colonnes dans une table SQL correspondent aux valeurs d'une ou plusieurs colonnes dans une autre table. Vous faites référence à des colonnes dans le premier tableau que le clé étrangère et les colonnes de la seconde table en tant que clé primaire ou clé unique.

Par exemple, vous pouvez déclarer la colonne EmpDeptNo dans une table des employés comme une clé étrangère qui fait référence à la DeptNo colonne d'une table DEPT. Cet affrontement assure que si vous enregistrez un employé dans la table des employés comme travaillant dans le département 123, une ligne apparaît dans la table DEPT où DeptNo est 123.

Si les membres de la paire de clés / clé primaire étrangère sont tous deux composés d'une seule colonne, la situation est assez simple. Cependant, les deux clés peuvent être constitués de plusieurs colonnes. La DeptNo valeur, par exemple, peut être unique au sein d'un seul Emplacement- par conséquent, d'identifier de manière unique un DEPT rangée, vous devez spécifier à la fois un Emplacement et un DeptNo.

Si les deux bureaux de Boston et Tampa ont un service 123, vous devez identifier les départements ('Boston', '123') et ('Tampa', '123'). Dans ce cas, la table EMPLOYEE a besoin de deux colonnes pour identifier un DEPT. Appelez ces colonnes EmpLoc et EmpDeptNo. Si un employé travaille dans le département 123 à Boston, le EmpLoc et EmpDeptNo les valeurs sont 'Boston' et '123'. Et la déclaration de clé étrangère dans la table EMPLOYEE ressemble:

FOREIGN KEY (EmpLoc, EmpDeptNo) RÉFÉRENCES DEPT (Lieu, DeptNo)

Tirer des conclusions valables à partir de vos données devient extrêmement compliqué si les données contiennent des valeurs NULL. Voilà parce que parfois vous voulez traiter ces données d'une façon, et parfois vous voulez traiter d'une autre manière. La UNIQUE, SIMPLE, PARTIEL, et COMPLET mots-clés précisent différentes façons de traiter les données qui contient les valeurs NULL.

Si vos données t contenir des valeurs nulles, abandon du mode de lecture rapide maintenant et lire la liste suivante lentement et avec précaution. Chaque entrée dans la liste donnée ici présente une situation différente par rapport à des valeurs nulles - et raconte comment le RENCONTRE prédicat gère.




Voici les scénarios qui illustrent les règles pour traiter avec des valeurs nulles et la RENCONTRE prédicat:

  • Les valeurs sont à la fois d'une façon ou l'autre. Si aucune des valeurs de EmpLoc et EmpDeptNo sont nulles (ou les deux sont nuls), les règles d'intégrité référentielle sont les mêmes que pour les clés à une seule colonne avec des valeurs qui sont NULL ou NOT NULL.

  • Une valeur est nulle et ne l'est pas. Si, par exemple, EmpLoc est nulle et EmpDeptNo est non nul - ou EmpLoc est nulle et non pas EmpDeptNo est nulle - vous avez besoin de nouvelles règles. Lorsque la mise en œuvre des règles, si vous insérez ou mettez à jour la table de EMPLOYÉ EmpLoc et EmpDeptNo les valeurs de (NULL, '123') ou ('Boston', NULL), vous avez six alternatives principales: SIMPLE, PARTIEL, et COMPLET, chacun avec ou sans UNIQUE mot-clé.

  • La UNIQUE mot-clé est présent. Une ligne correspondante dans la table de résultat sous-requête doit être unique pour que le prédicat d'évaluer à une valeur True.

  • Les deux composantes de l'expression de la valeur de la ligne R sont nulles. La RENCONTRE prédicat renvoie une valeur vrai quel que soit le contenu de la table résultat de la sous requête comparées.

  • Ni composante de l'expression de la valeur de la ligne R est nulle, SIMPLE est spécifié, UNIQUE est pas spécifié, et au moins une ligne de la table de résultat de sous-requête correspond R. La RENCONTRE prédicat renvoie une valeur True. Sinon, elle renvoie une valeur False.

  • Ni composante de l'expression de la valeur de la ligne R est nulle, SIMPLE est spécifié, UNIQUE est spécifié, et au moins une ligne de la table de résultat de la sous-requête est à la fois unique et correspond à R. La RENCONTRE prédicat renvoie une valeur True. Sinon, elle renvoie une valeur False.

  • Tout composant de l'expression de la valeur de la ligne R est nulle et SIMPLE est spécifié. La RENCONTRE prédicat renvoie une valeur True.

  • Toute composante de la valeur de la ligne R expression est non nulle, PARTIEL est spécifié, UNIQUE non spécifiée, et la partie non nulle d'au moins une ligne dans le tableau de résultat de sous-requête correspond R. La RENCONTRE prédicat renvoie une valeur True. Sinon, elle renvoie une valeur False.

  • Tout composant de l'expression de la valeur de la ligne R est non-nulle, PARTIEL est spécifié, UNIQUE est spécifié, et les parties non-nulles de R correspondent aux parties non nulles d'au moins une ligne unique dans le tableau de résultat sous-requête. La RENCONTRE prédicat renvoie une valeur True. Sinon, elle renvoie une valeur False.

  • Ni composante de l'expression de la valeur de la ligne R est nulle, COMPLET est spécifié, UNIQUE est pas spécifié, et au moins une ligne de la table de résultat de sous-requête correspond R. La RENCONTRE prédicat renvoie une valeur True. Sinon, elle renvoie une valeur False.

  • Ni composante de l'expression de la valeur de la ligne R est nulle, COMPLET est spécifié, UNIQUE est spécifié, et au moins une ligne de la table de résultat de la sous-requête est à la fois unique et correspond à R. La RENCONTRE prédicat renvoie une valeur True. Sinon, elle renvoie une valeur False.

  • Tout composant de l'expression de la valeur de la ligne R est nulle, et COMPLET est spécifié. La RENCONTRE prédicat renvoie une valeur False.


» » » » Comment utiliser des règles d'intégrité référentielle et le prédicat de match de SQL