Quand vous étudiez la théorie relationnelle des clés étrangères sont, bien entendu, obligatoire. Mais dans la pratique, dans chaque endroit où je travaille, le tableau des produits et des jointures sont toujours fait en spécifiant les touches explicitement dans la requête, au lieu de s'appuyer sur des clés étrangères dans le SGBD.
De cette façon, vous pouvez bien entendu joindre deux tables de champs qui ne sont pas destinés à être des clés étrangères, d'avoir des résultats inattendus.
Pourquoi pensez-vous que c'est? Ne devrait pas Sgbd assurer que les Jointures et des Produits être effectuées uniquement par les clés étrangères?
EDIT: Merci pour toutes les réponses. Il est clair pour moi maintenant que la principale raison pour FKs est la référence de l'intégrité. Mais si vous avez la conception de la base de données, toutes les relations dans le modèle (I. E. les flèches dans la disquette de réparation d'urgence) deviennent des clés Étrangères, au moins en théorie, si oui ou non vous définir comme tels dans votre SGBD, ils sont sémantiquement FKs. Je ne peux pas imaginer la nécessité de joindre des tables de champs qui ne sont pas FKs. Quelqu'un peut-il donner un exemple qui fait sens?
PS: je suis conscient du fait que N:M les relations deviennent des tables séparées et pas les clés étrangères, juste omis pour des raisons de simplicité.