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

15

Dans le document Oracle The Query Optimizer , sous View Merging , j'ai trouvé les informations suivantes

L'optimisation de fusion des vues s'applique aux vues qui contiennent uniquement des sélections, des 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.

René Nyffenegger
la source

Réponses:

17

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 sous la forme d'un tampon ou d'une zone de spoule d'une certaine 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.

ConcernedOfTunbridgeWells
la source
13

La 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 possède 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 T60 , 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 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 à celui 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 ".Ricky . "

La projection pourrait être comparée à dire ce que vous avez perdu - un sac à dos. La sélection peut être comparée à la description de ses attributs : elle est bleue, contient un livre de mathématiques 1010 et a "I love Lucy" écrit en bas.

Vous faites la même chose avec SQL. Tout d'abord, quel type d'informations vous souhaitez voir. Deuxièmement, des critères décrivant celui ou ceux que vous souhaitez voir. Ce sont des prédicats ou des 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.

** CJ Date a écrit un article très intéressant intitulé "Une table sans colonnes". Je l'ai trouvé très intéressant à lire, comme je fais la plupart de ses nombreux articles "Écrits". Je les recommande vivement!

user6612
la source