Pourquoi sont-clés étrangères plus utilisé dans la théorie que dans la pratique?

Après l'étude de 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é.

  • Règles d'intégrité référentielle sont pas 1 pour 1 relation avec ce que devrait être autorisée pour les jointures. Les pommes et les oranges.
  • Vous ne comprenez pas ce que les clés étrangères sont destinés. Rejoindre sur la non-colonnes de clé est très utile dans le monde réel.
  • wiki de la communauté cette place!
  • Tables de bases (& les résultats de la requête) représentent des relations/associations. FKs sont (ubiquitaire) appelle à tort "relations". FKs & autres contraintes ne sont pas nécessaires à la requête. Ils sont faits re chaque situation de l'entreprise & son DB état. Ils s'arrêtent quelques invalide mises à jour & permettre à certaines optimisations. Une requête renvoie de manière appropriée les lignes associées indépendamment de la cardinalités de certains binaires associés relations. Propriétaire de JOINTURE NATURELLE de l'Animal retourne (o,a,n) lignes où o est le propriétaire d'un & animal a un nom n si oui ou non Propriétaire ou de l'Animal est de 1 M ou M:1 ou 1:1, ou tous les animaux sont détenus ou des personnes que des animaux etc.
  • Quelqu'un sait comment je peut pas notifié à propos de cette question plus? cela fait maintenant près de 10 ans.
InformationsquelleAutor Petruza | 2009-12-09