Question

Je veux utiliser la fonction Texte intégral de recherche de Microsoft SQL Server.

Si j'ai un client de table qui se réfère d'autres tables comme Ville, Pays, Département, etc. est-il préférable de créer une table distincte qui détiendrait des données de normalisées, qui seraient alors le texte intégral indexé, ou est-il préférable pour créer une valeur factice dans chaque table étrangère (par exemple avec la touche -1), puis remplacer les valeurs NULL de la table client avec ces valeurs fictives correspondant, puis créer une vue indexée (les entrées factices sont en raison de la vue indexée et l'utilisation de « jointure » au lieu de « rejoindre gauche »), puis créer un index de texte intégral sur ce point de vue index?

Avec ce dernier je n'aurais pas à vous soucier de peupler la table « dénormalisés » à chaque fois un changement d'enregistrement du client, ou dans l'une des tables étrangères -. Ville, Pays, Département, etc.

Ou peut-être pas de ce qui précède, je pourrais utiliser quelques idées nouvelles ainsi:)

Était-ce utile?

La solution

Aucune de ces.

Gardez les données normalisées et créer des index FT séparés sur chaque table normalisée. Lorsque vous interrogez les données, de recherche le tableau correspondant. Si vous voulez une requête pour enjamber plusieurs tables (par exemple. Si deux villes, pays ou département contiennent « York ») utilisent alors les opérateurs de UNION de requête normale à des recherches globales sur plusieurs tables. Voilà comment fonctionne FT, donc gardez votre conception alignée sur la façon dont le fonctionnement de la fonctionnalité. Ne pas essayer de tricher, vous allez seulement vous brûler.

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