Maison > Article > base de données > Comment établir des relations entre les tables de base de données
Les tables de base de données sont connectées via des clés primaires et étrangères. Si une contrainte de clé primaire est spécifiée pour une table, le moteur de base de données renforcera l'unicité des données en créant automatiquement un index unique sur la colonne de clé primaire ; une clé étrangère est une ou plusieurs colonnes utilisées pour établir et renforcer un lien entre les données ; dans deux tables Une combinaison de pour contrôler les données qui peuvent être stockées dans la table de clé étrangère.
L'environnement d'exploitation de ce tutoriel : système Windows 7, mysql version 5.8, ordinateur Dell G3.
Les tables de base de données sont connectées via des clés primaires et étrangères.
(Tutoriel recommandé : Tutoriel vidéo MySQL )
Contrainte de clé primaire
La table a généralement un identifiant unique table Une colonne ou un ensemble de colonnes de valeurs pour chaque ligne de . Une ou plusieurs colonnes de ce type sont appelées clé primaire (PK) de la table et sont utilisées pour renforcer l'intégrité de l'entité de la table. Étant donné que les contraintes de clé primaire garantissent l'unicité des données, elles sont souvent définies sur les colonnes d'identité.
Si une contrainte de clé primaire est spécifiée pour une table, le moteur de base de données créera automatiquement un index unique sur la colonne de clé primaire pour renforcer l'unicité des données. Cet index permet également un accès rapide aux données lorsque la clé primaire est utilisée dans les requêtes. Si une contrainte de clé primaire est définie sur plusieurs colonnes, les valeurs d'une colonne peuvent être répétées, mais toute combinaison de valeurs de toutes les colonnes de la définition de contrainte de clé primaire doit être unique.
Comme le montre la figure ci-dessous, les colonnes ProductID et VendorID de la table Purchasing.ProductVendor forment une contrainte de clé primaire composite sur cette table. Cela garantit que chaque ligne de la table ProductVendor possède une combinaison unique de ProductID et VendorID. Cela empêche l'insertion de lignes en double.
Une table ne peut contenir qu'une seule contrainte de clé primaire.
La clé primaire ne peut pas dépasser 16 colonnes et la longueur totale de la clé ne peut pas dépasser 900 octets.
Les index générés par les contraintes de clé primaire n'augmenteront pas le nombre d'index dans la table au-delà de 999 index non clusterisés et 1 index clusterisé.
Si aucun index clusterisé ou non cluster n'est spécifié pour la contrainte de clé primaire et qu'il n'y a pas d'index clusterisé dans la table, un index clusterisé est utilisé.
Toutes les colonnes définies dans une contrainte de clé primaire doivent être définies pour ne pas être Null. Si la nullité n'est pas spécifiée, la nullité de toutes les colonnes participant à la contrainte de clé primaire sera définie sur non nulle.
Si une clé primaire est définie dans une colonne d'un type défini par l'utilisateur CLR, l'implémentation de ce type doit prendre en charge le tri binaire.
Contraintes de clé étrangère
Une clé étrangère (FK) est une colonne utilisée pour établir et renforcer un lien entre des données dans deux tables ou une combinaison de colonnes qui contrôle les données pouvant être stockées dans la table de clé étrangère. Dans une référence de clé étrangère, un lien est créé entre deux tables lorsqu'une ou plusieurs colonnes contenant les valeurs de clé primaire d'une table sont référencées par une ou plusieurs colonnes d'une autre table. Cette colonne devient la clé étrangère de la deuxième table.
Par exemple, comme il existe une relation logique entre les commandes clients et les vendeurs, la table Sales.SalesOrderHeader contient un lien de clé étrangère vers la table Sales.SalesPerson. La colonne SalesPersonID de la table SalesOrderHeader correspond à la colonne de clé primaire de la table SalesPerson. La colonne SalesPersonID de la table SalesOrderHeader est une clé étrangère de la table SalesPerson. En créant une relation de clé étrangère, la valeur de SalesPersonID ne peut pas être insérée dans la table SalesOrderHeader si la valeur de SalesPersonID n'existe pas dans la clé primaire de la table SalesPerson.
Une table peut référencer jusqu'à 253 autres tables et colonnes comme clés étrangères (références sortantes). SQL Server 2016 (13.x) augmente la limite du nombre d'autres tables et colonnes pouvant être référencées dans une table distincte (références entrantes) de 253 à 10 000. (Le niveau de compatibilité doit être d'au moins 130.) L'augmentation de la limite de nombre impose les contraintes suivantes :
Seule l'opération DELETE DML prend en charge plus de 253 références de clé étrangère. Les opérations UPDATE et MERGE ne sont pas prises en charge.
Une table qui contient des références de clé étrangère à elle-même ne peut toujours avoir que 253 références de clé étrangère.
Les index Columnstore, les tables à mémoire optimisée, la base de données Stretch ou les tables de clés étrangères partitionnées ne prennent actuellement pas en charge plus de 253 références de clés étrangères.
Index pour les contraintes de clé étrangère
Contrairement aux contraintes de clé primaire, la création d'une contrainte de clé étrangère ne créera pas automatiquement un index correspondant. Mais il est souvent utile de créer manuellement des index sur des clés étrangères pour les raisons suivantes :
Les colonnes de clé étrangère sont souvent utilisées dans les conditions de jointure lors de la combinaison de données de tables associées dans une requête, méthode Matches une ou plusieurs colonnes dans une contrainte de clé étrangère dans une table avec une colonne de clé primaire ou une colonne de clé unique dans une autre table. Les index permettent au moteur de base de données de trouver rapidement des données associées dans des tables de clés étrangères. Cependant, la création de cet index n'est pas obligatoire. Les données de deux tables liées peuvent être combinées même si aucune contrainte de clé primaire ou de clé étrangère n'est définie sur les deux tables, mais une relation de clé étrangère entre deux tables indique qu'elle a été optimisée en utilisant leurs clés comme conditions de combinaison dans des requêtes.
Les modifications apportées aux contraintes de clé primaire peuvent être vérifiées par les contraintes de clé étrangère dans la table associée.
Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!