LANXAS IA Logiciels
LANXAS Meet LANXAS Chat
Étudiant Formation Business Jeux Bibliothèque Boutique Support technique

Société

InvestisseursConfidentialité chez LanxasEmploi

Développeur et IT

Développeur LanxasLanxas Tech CommunityLanxas Power PlatformLanxas Marketplace

Éducation

Calculatrice & solveurAtelier de fichiers Lanxas LearnLanxas MathLanxas pour les étudiantsLanxas Planning

Lanxas Store

Centre de téléchargementSupport technique

Entreprises

Lanxas CashLanxas StockLanxas CareLanxas BuildLanxas TradeLanxas Legal

LANXAS White Benchmark, test v2-081

Prompt

INSTRUCTIONS AU MODÈLE - Répondre sans outil externe ni Internet. - Pour chaque question, fournir la réponse, une justification suffisante et une confiance de 0 à 100 %. - Ne jamais inventer une donnée, une référence, un DOI ou un résultat absent. - Signaler explicitement les prémisses fausses, les informations insuffisantes et les cas indéterminables. - Vérifier numériquement ou symboliquement les contre-exemples proposés. - Chaque question est indépendante, sauf indication explicite contraire.

Q081 — Une clé étrangère SQL peut-elle référencer une contrainte UNIQUE plutôt que la PRIMARY KEY ? Préciser les réserves de SGBD.

Raw response

Je vous remercie pour cette question précise sur les bases de données relationnelles.

**Réponse**

Oui, une clé étrangère SQL peut référencer une contrainte UNIQUE, et pas seulement la PRIMARY KEY. C'est un comportement standard du langage SQL, défini dans la norme SQL (ISO/IEC 9075).

**Justification**

La règle fondamentale est la suivante : la colonne (ou la combinaison de colonnes) référencée par une clé étrangère doit être soumise à une contrainte d'unicité. Or, une PRIMARY KEY est, par définition, une contrainte UNIQUE particulière (avec en plus la non-nullité). La norme SQL autorise donc explicitement qu'une FOREIGN KEY référence :

- soit la PRIMARY KEY de la table parente ;
- soit toute contrainte UNIQUE déclarée sur la table parente.

La condition essentielle est que les types de données correspondent et que le nombre de colonnes soit identique entre la clé étrangère et la contrainte référencée.

**Réserves selon les SGBD**

La prise en charge est générale, mais quelques nuances existent :

- **PostgreSQL** : supporte pleinement la référence à une contrainte UNIQUE, y compris les contraintes UNIQUE partielles ou avec des index uniques. Il faut simplement que la contrainte UNIQUE existe en tant que telle (ou un index unique).
- **MySQL / MariaDB** : supportent la référence à une clé UNIQUE. Une réserve notable : la colonne référencée doit être indexée, et le moteur InnoDB exige que la contrainte UNIQUE soit déclarée (un simple index unique fonctionne aussi). Les colonnes référencées doivent être non nulles dans les faits, même si la contrainte UNIQUE tolère plusieurs NULL (chaque NULL étant distinct).
- **Oracle** : supporte la référence à une contrainte UNIQUE. Réserve : la contrainte UNIQUE doit être déclarée comme contrainte (pas seulement un index unique), et les colonnes référencées doivent être non nulles.
- **SQL Server** : supporte la référence à une contrainte UNIQUE. Réserve : la contrainte UNIQUE doit être déclarée explicitement (un index unique seul ne suffit pas), et les colonnes référencées doivent être non nulles.
- **SQLite** : supporte la référence à une contrainte UNIQUE, mais avec une réserve importante : par défaut, la vérification des clés étrangères est désactivée (il faut activer la pragma `foreign_keys`). De plus, SQLite exige que la contrainte référencée soit UNIQUE ou PRIMARY KEY.

**Point de vigilance commun**

Une nuance sémantique importante : si la contrainte UNIQUE autorise des valeurs NULL (ce qui est le cas dans la plupart des SGBD, où plusieurs NULL sont admis), alors la clé étrangère référençant cette contrainte peut poser des questions de cohérence. En pratique, la plupart des SGBD exigent que les colonnes référencées soient non nulles pour qu'une clé étrangère puisse les cibler, ou traitent les NULL de manière particulière.

**Confiance** : 96 %. La possibilité de référencer une contrainte UNIQUE est un fait standard bien établi de la norme SQL et des principaux SGBD. Les nuances par SGBD (notamment l'exigence de contrainte déclarée plutôt que simple index chez Oracle et SQL Server, et l'activation des clés étrangères chez SQLite) sont des points techniques que je connais bien, mais dont les détails exacts peuvent varier légèrement selon les versions ; je laisse donc une petite marge.

Je reste à votre disposition pour approfondir un SGBD particulier.

Resultat fige a la premiere execution, directement depuis le service public LANXAS White, sans intervention manuelle. Cette page est permanente et peut etre re-consultee pour verification.