Skip to content

Commit

Permalink
Amélioration de formulation ; interrogation sur erreurs dans la doc o…
Browse files Browse the repository at this point in the history
…riginale
  • Loading branch information
Krysztophe authored and gleu committed Mar 10, 2017
1 parent 69d6a23 commit 3238a09
Showing 1 changed file with 21 additions and 20 deletions.
41 changes: 21 additions & 20 deletions postgresql/intagg.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
<para>
Le module <filename>intagg</filename> fournit un
agrégateur d'entiers et un énumérateur. <filename>intagg</filename> est
maintenant obsolète car il existe des fonctions intégrées qui fournissent
les mêmes fonctionnalités. Néanmoins, le module est toujours disponible
pour fournir des fonctions de compatibilité.
maintenant obsolète car il existe des fonctions natives qui fournissent
les mêmes fonctionnalités et au-delà. Néanmoins, le module est toujours disponible
pour la compatibilité et utilise ces fonctions natives.
</para>

<sect2>
Expand All @@ -34,8 +34,8 @@
L'agrégateur est une fonction d'agrégat
<function>int_array_aggregate(integer)</function> qui produit un tableau
d'entiers contenant exactement les entiers fournis en argument.
Cette fonction appelle <function>array_agg</function> pour des raisons de
compatibilité.
Cette fonction appelle <function>array_agg</function>, qui fait la
même chose pour n'importe quel type de tableau.
</para>

<indexterm>
Expand All @@ -45,10 +45,10 @@
<para>
L'énumérateur est une fonction
<function>int_array_enum(integer[])</function> qui renvoie
<type>setof integer</type>. C'est essentiellement une opération reverse de
l'agrégateur&nbsp;: elle étend un tableau d'entiers en un ensemble de
lignes. Cette fonction appelle <function>unnest</function>, pour des raisons
de compatibilité.
<type>setof integer</type>. C'est essentiellement une opération inverse de
l'agrégateur&nbsp;: elle développe un tableau d'entiers en un ensemble de
lignes. Cette fonction utilise <function>unnest</function>, qui fait la
même chose pour n'importe quel type de tableau.
</para>

</sect2>
Expand All @@ -59,9 +59,11 @@
<para>
Un grand nombre de bases de données utilisent la notion de table <quote>une vers
plusieurs</quote> (<foreignphrase>one to many</foreignphrase>). Ce type de table
se trouve habituellement entre deux tables indexés, par exemple&nbsp;:
se trouve habituellement entre deux tables indexées, par exemple&nbsp;:
</para>

<!-- TODO : faire corriger les noms left et right qui ne compilent pas
et c'est une table many_to_many en fait... -->
<programlisting>
CREATE TABLE left (id INT PRIMARY KEY, ...);
CREATE TABLE right (id INT PRIMARY KEY, ...);
Expand All @@ -78,16 +80,16 @@ CREATE TABLE one_to_many(left INT REFERENCES left, right INT REFERENCES right);
</programlisting>

<para>
Cela renvoie tous les éléments de la table de droite pour un enregistrement
de la table de gauche donné. Il s'agit d'une construction assez commune en SQL.
Cela renverra tous les éléments de la table de droite pour un enregistrement
donné de la table de gauche. C'est une construction très courante en SQL.
</para>

<para>
Cette méthode devient complexe lorsqu'il existe de nombreuses entrées dans la
table <structname>one_to_many</structname>. Souvent, une jointure
de ce type résulte en un parcours d'index et une récupération de chaque enregistrement de
la table de droite pour une entrée particulière de la table de gauche.
Sur un système dynamique, il n'y a pas grand chose à faire. Au contraire,
de ce type résulte en un parcours d'index et une récupération de chaque
enregistrement de la table de droite pour une entrée de la table de gauche.
Sur un système très dynamique, il n'y a pas grand chose à faire. Au contraire,
lorsqu'une partie des données est statique, une table de résumé peut être
créée par agrégation.
</para>
Expand All @@ -101,7 +103,7 @@ CREATE TABLE summary AS

<para>
Ceci crée une table avec une ligne par élément gauche et un tableau d'éléments
droits. En l'absence de méthode d'utilisation de tableau, c'est réellement
droits. Sans un moyen d'utiliser ce tableau, c'est à peu près
inutilisable, d'où l'énumérateur.
</para>

Expand All @@ -121,14 +123,14 @@ SELECT left, right FROM one_to_many WHERE left = <replaceable>item</replaceable>
</programlisting>

<para>
La différence tient dans le fait que la requête qui utilise la table de résumé
Ici la requête sur la table de résumé
ne récupère qu'une ligne de la table alors que la requête directe à
<structname>one_to_many</structname> doit faire un parcours d'index et
récupérer une ligne par enregistrement.
</para>
<para>
Sur un système particulier, un <command>EXPLAIN</command> a montré qu'une requête avec
un coût de 8488 a été réduite à une requête d'un coût de 329. La requête
Sur une instance, un <command>EXPLAIN</command> a montré qu'une requête avec
un coût de 8488 a été réduite à un coût de 329. La requête
originale était une jointure impliquant la table
<structname>one_to_many</structname>, remplacée par&nbsp;:
</para>
Expand All @@ -145,4 +147,3 @@ SELECT right, count(right) FROM
</sect2>

</sect1>

0 comments on commit 3238a09

Please sign in to comment.