Question

J'implémente une application Web utilisant Silverlight avec une base de données SQL Server en back-end pour toutes les données que l'application affichera. Je veux m'assurer que l'application peut être facilement évolutive et je pense que la solution consiste à rendre la base de données faiblement couplée et non à tout lier avec des clés étrangères. J'ai essayé de chercher des exemples, mais en vain.

Quelqu'un at-il des informations ou de bons points de départ / exemples / exemples pour m'aider à démarrer avec cela?

Une aide grandement appréciée.

Cordialement,

Était-ce utile?

La solution

Sauf si vous effectuez des quantités massives d'insertions à la fois, comme avec un entrepôt de données, utilisez des clés étrangères . La la normalisation évolue à toute vitesse, et vous devriez en tirer parti. Les clés étrangères sont rapides et la contrainte ne vous retient vraiment que si vous insérez des millions d'enregistrements à la fois.

Assurez-vous que vous utilisez des clés entières comportant un index clusterisé. Cela devrait rendre la table de jointure très rapide. Les problèmes que vous pouvez résoudre sans clé étrangère sont nombreux et frustrants. Je viens de passer tout le week-end à le faire, et nous avons délibérément choisi de ne pas avoir de clé étrangère (nous avons cependant un téraoctet de données).

Autres conseils

Je pense que vous confondez un peu votre terminologie. "Lâchement couplé" fait référence à l’opportunité de disposer de composants logiciels qui ne sont pas si dépendants les uns des autres qu’ils ne peuvent pas fonctionner ou même être compilés sans être ensemble dans le même programme. Je n'ai jamais vu le terme utilisé pour décrire les relations entre les tables d'une même base de données.

Je pense que si vous recherchez les termes "normalisation" et "dénormalisation" vous obtiendrez de meilleurs résultats.

Avant de penser à une telle chose, vous devez penser à l’intégrité des données. Il existe des clés étrangères qui vous empêchent de placer des enregistrements dans des tables si les données primaires sur lesquelles elles sont basées ne sont pas présentes. Si vous n'utilisez pas de clés étrangères, vous vous retrouverez tôt ou tard (probablement plus tôt) avec des données sans valeur, car vous ne savez pas vraiment à qui est le client auquel la commande est attachée, par exemple. Les clés étrangères sont une protection des données, vous ne devriez jamais envisager de ne pas les utiliser.

Et même si vous pensez que toutes vos données proviendront de votre application, dans la vie réelle, ce n'est tout simplement pas vrai. Les données proviennent de plusieurs applications, d'importer de grandes quantités de données et de la fenêtre de requête (pensez à la décision de mettre à jour tous les prix sans modifier le prix à partir de l'interface utilisateur). Les données peuvent entrer dans la base de données à partir de nombreuses sources et doivent être protégées au niveau de la base de données. Faire moins, c'est mettre en péril l'ensemble de votre application et de vos données.

Intéressant commentaire sur la sécurité de la base de données lorsque des données sont saisies via des sources externes telles que des scripts de base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top