Mysql
 sql >> Base de données >  >> RDS >> Mysql

Puis-je utiliser la même contrainte de clé étrangère dans deux tables différentes ?

Il y a des colonnes et il y a des clés étrangères (FK) et il y a des contraintes.

Vous pouvez avoir un nom de colonne dans une table indépendamment des autres tables.

Un FK est un ensemble de tables et de colonnes de référence et un ensemble de tables et de colonnes référencées. Tous les noms ensemble identifient un FK. C'est une chose conceptuelle à propos d'une base de données.

Une contrainte FK, étant une contrainte, est une chose dont le nom doit être unique dans la base de données. Il a et applique un FK associé, à savoir celui décrit dans sa déclaration. Vous pouvez avoir plusieurs contraintes FK dans une table appliquant le même FK.

Le SGBD a des noms uniques automatiques pour les contraintes FK. Par exemple, une partie nom plus une partie nombre où la contrainte est la contrainte numéro FK de la table portant ce nom. Vous pouvez en fait avoir le même texte de définition de contrainte FK sans nom plusieurs fois dans une table et dans plusieurs tables, chacune pour une contrainte FK différente. (Ceux à l'intérieur d'une table donnée appliquent le même FK.)

Vous devriez avoir un schéma de nommage unique lorsque vous souhaitez les nommer. Le référencement et les noms de table référencés doivent être impliqués et, si nécessaire, distinguer les noms de colonne.

De manière confuse, nous disons FK lorsque nous parlons de contrainte FK.

Lorsque vous dites "C'est la même clé étrangère dans deux tables différentes", cela utilise mal les termes. Deux FK différents sont impliqués et les contraintes FK correspondantes. Vous voulez dire peut-être "c'est la même colonne de référence et la table et les colonnes référencées dans les deux contraintes FK" ou "c'est le même texte qui référence dans les déclarations de contrainte FK des deux déclarations de table". Mais les noms de contrainte FK doivent être uniques.

Lorsque vous dites "Dans les deux cas, il s'agit d'un utilisateur interne", vous confirmez que le type et/ou la table de la colonne référencée sont les mêmes pour les deux contraintes FK. Mais ce sont des contraintes FK différentes pour différents FK.