TSQL les clés étrangères des points de vue?

J'ai un SQL-Server 2008 de la base de données et un schéma qui utilise les contraintes de clé étrangère pour appliquer l'intégrité référentielle. Il fonctionne comme prévu. Maintenant, l'utilisateur crée des vues sur les tables d'origine pour travailler sur des sous-ensembles de données uniquement. Mon problème est que le filtrage de certains jeux de données, dans certains tableaux, mais pas dans d'autres, ne pas violer les contraintes de clé étrangère.

Imaginez deux tables "un" et "deux". "une" contient juste une id de la colonne avec les valeurs 1,2,3. "Deux" références "un". Maintenant, vous créez des vues sur les deux tableaux. La vue de la table de "deux" ne filtre pas quelque chose pendant que l'affichage de la table "on" supprime toutes les lignes, mais le premier. Vous vous retrouverez avec des entrées dans le second point de vue que le point de nulle part.

Est-il un moyen pour éviter cela? Pouvez-vous avoir les contraintes de clé étrangère entre les points de vue?

Quelques Précisions en réponse à certains commentaires:

Je suis conscient que les contraintes sous-jacentes sera d'assurer l'intégrité des données, même lors de l'insertion à travers les points de vue. Mon problème est avec les déclarations de consommer de la vue. Ces déclarations ont été écrits avec les tables d'origine à l'esprit et à assumer certaines jointures ne peut pas échouer. Cette hypothèse est toujours valable lorsque l'on travaille avec les tables - mais les points de vue potentiellement briser il.

Joindre/vérification de toutes les contraintes lors de la création de la vue, en premier lieu, annyoing en raison du grand nombre de font référence à des tables. J'étais donc dans l'espoir d'éviter que.

  • Avez-vous besoin de s'inquiéter à ce sujet? Les clés étrangères d'insertion de contrôle/mise à jour des données, ils ne sont pas vérifiées lors de la sélection.
  • Pourquoi ne pas vous filtrez les deux points de vue?
  • Pourriez-vous me donner un exemple? Je ne comprends pas comment lire les tableaux peuvent influencer l'intégrité référentielle? Peut-être quelques tables avec des données, les points de vue et le problème que vous avez?
  • "certaines jointures ne peut pas fail?" Une jointure jamais "échoue." Si vous effectuez une JOINTURE INTERNE de Vue2 à Vue1 alors le résultat sera le même filtre que Vue1 a. Il fonctionne comme prévu.
  • Comme dit Aaron, se joint ne peut pas échouer. Que voulez-vous arriver dans votre application? Voulez-vous les lignes pour ne pas montrer en soit, s'ils en violation de l'une? Voulez-vous que l'utilisateur particulier d'être incapable de créer une ligne qui viole la vue à laquelle ils ont accès?
  • Avez-vous envisagé de demander à ask.sqlservercentral.com - qui est un site qui utilise le StackOverflow moteur, mais a un nombre croissant de SQL experts en suspens?

InformationsquelleAutor BuschnicK | 2009-12-18