web-dev-qa-db-fra.com

A quoi fait référence le terme "projection" dans une requête SQL (ou une définition de vue)

Dans le document Oracle The Query Optimizer, sous Afficher la fusion , j'ai trouvé les informations suivantes

L'optimisation de fusion des vues s'applique aux vues qui contiennent uniquement des sélections, projections et des jointures. En d'autres termes, les vues fusionnables ne contiennent pas d'opérateurs d'ensemble, de fonctions d'agrégation, DISTINCT, GROUP BY, CONNECT BY, etc. (c'est moi qui souligne)

Pourtant, je ne peux que deviner à quoi se réfère réellement une telle projection.

15
René Nyffenegger

En algèbre relationnelle, la projection signifie la collecte d'un sous-ensemble de colonnes à utiliser dans les opérations, c'est-à-dire qu'une projection est la liste des colonnes sélectionnées.

Dans une étape d'optimisation de requête, la projection se manifestera comme un tampon ou une zone de spoule d'une description contenant un sous-ensemble des colonnes de la table ou de l'opérateur sous-jacent, ou une vue logique basée sur les colonnes utilisées par les opérations suivantes.

Dans une vue, une projection équivaut à la liste des colonnes sélectionnées dans la requête sous-jacente à la vue.

18

Projection fait référence à ce sous-ensemble de l'ensemble de toutes les colonnes trouvées dans une table, que vous souhaitez renvoyer. Il peut aller de 0 ** à l'ensemble complet.

Il y a deux "ensembles" dans un tableau qui correspondent aux deux dimensions d'un tableau. Chaque table a un ensemble de colonnes ainsi qu'un ensemble de ( lignes . Chaque valeur individuelle dans un tableau peut être trouvée à une intersection spécifique de ces deux * ensembles **. Cependant, votre valeur n'est pas trouvée en "allant à" une adresse, telle que T6, comme vous le feriez avec Excel.

Il n'y a pas d'ordre inhérent aux tables relationnelles. C'est important à retenir. Au lieu de cela, pour récupérer votre valeur unique, vous devez sélectionner un sous-ensemble de colonnes (une dans ce cas) et un sous-ensemble de lignes (une dans ce cas). Pour sélectionner un sous-ensemble d'une colonne parmi toutes celles disponibles, il vous suffit de connaître son nom, ainsi que le nom de la table. Le nom de la colonne sera unique dans sa table.

Une fois que vous avez choisi la colonne dans laquelle se trouve votre valeur, vous devez choisir la ligne particulière dans laquelle elle se trouve. Cependant, les lignes n'ont pas de noms comme les colonnes. La façon dont nous spécifions une ligne est. . . eh bien, nous ne le savons pas exactement. . . Nous précisons quelque chose que nous savons sur la valeur que nous recherchons. Vous devez savoir quelque chose lié (littéralement) à la valeur que vous recherchez. Si vous pouvez spécifier suffisamment d'informations connexes, vous pourrez peut-être réduire l'ensemble des lignes renvoyées à celle que vous recherchez.

Pensez-y comme si un étudiant avait perdu son sac à dos. Disons qu'un gars l'a perdu. Il appelle perdu et retrouvé, et la femme présente dit: "Oui, nous avons quelques dizaines de sacs à dos. Pouvez-vous le décrire?" Vous dites "Eh bien, c'est bleu?". À quoi elle répond "Me demandez-vous ou me dites-vous", puis dit "J'ai huit bleus, je vais devoir faire mieux que ça, et vous ne sembliez pas trop sûr de cela." Vous dites "Voyons, euh, oh oui! Il y avait mon livre de mathématiques 1010 dedans." "Bien, maintenant tu es à quatre." Ensuite, vous vous souvenez que vous êtes censé rencontrer votre petite amie, Lucy, dans 15 minutes, et cela a déclenché un autre souvenir - du temps où vous vous ennuyiez en Math 1010 et écriviez, - en vraies petites lettres au bas du sac à dos, "Je aimer Lucy ". Elle les retourne et bien sûr, elle dit "le troisième dit 'J'aime Lucy' dessus. Venez le chercher, Ricky ."

Projection pourrait être comparé à dire ce que vous avez perdu - un sac à dos. Sélection peut être comparé à la description de ses attributs : il est bleu, contient un livre de mathématiques 1010 et contient "I love Lucy "écrit en bas.

Vous faites la même chose avec SQL. Tout d'abord, quel type d'informations que vous souhaitez voir. Deuxièmement, des critères décrivant celui ou ceux que vous souhaitez voir. Celles-ci sont appelées prédicats ou déclarations de vérité . Ils sont vrais pour un ou plusieurs membres de l'ensemble. S'ils ne le sont pas, ils ne renvoient aucune valeur.

* Les implémentations SQL de certains fournisseurs fournissent des moyens d'enfreindre ces règles, comme les tables imbriquées dans Oracle. Cependant, les tableaux bidimensionnels standard restent la forme prédominante.

** C.J. Date a écrit un article très intéressant intitulé "A Table With No Columns". Je l'ai trouvé très intéressant à lire, comme je le fais la plupart de ses nombreux articles "Écrits". Je les recommande vivement!

13
user6612