Changeset 635

Show
Ignore:
Timestamp:
04/24/07 09:55:39 (2 years ago)
Author:
sas
Message:

Relecture toujours en cours. Quelques contresens relevés

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • traduc/trunk/manuel/ddl.xml

    r634 r635  
    675675    <!-- referencing/referenced  
    676676         référençant/référencée ? --> 
    677     <!-- ICI --> 
    678677       <para> 
    679678        Dans cette situation, on dit que la table des commandes est la table 
     
    11041103 
    11051104   <para> 
    1106     Pour ajouter une colonne, une commande comme celle qui suit peut être 
    1107     utilisée&nbsp;: 
     1105    La commande d'ajout d'une colonne ressemble à celle-ci&nbsp;: 
    11081106<programlisting>ALTER TABLE produits ADD COLUMN description text;</programlisting> 
    11091107    La nouvelle colonne est initialement remplie avec la valeur par défaut 
     
    11111109   </para> 
    11121110 
    1113 <!--ICI--> 
    1114    <para> 
    1115     Vous pouvez aussi définir des contraintes sur la colonne au même moment 
    1116     en utilisant la syntaxe habituelle&nbsp;: 
     1111   <para> 
     1112    Des contraintes de colonne peuvent être définies dans la même commande, 
     1113    à l'aide de la syntaxe habituelle&nbsp;: 
    11171114<programlisting>ALTER TABLE produits ADD COLUMN description text CHECK (description &lt;&gt; '');</programlisting> 
    11181115    En fait, toutes les options applicables à la description d'une colonne 
    1119     dans <command>CREATE TABLE</command> peuvent être utilisées ici. Néanmoins, 
    1120     gardez en tête que la valeur par défaut doit satisfaire les contraintes 
    1121     données. Sinon, <literal>ADD</literal> échouera. Autrement, vous pouvez ajouter 
    1122     les contraintes plus tard (voir ci-dessous) après avoir rempli la nouvelle 
    1123     colonne correctement. 
     1116    dans <command>CREATE TABLE</command> peuvent être utilisées ici. Il ne 
     1117    faut toutefois pas oublier que la valeur par défaut doit satisfaire les contraintes 
     1118    données. Dans le cas contraire, <literal>ADD</literal> échoue. Il est 
     1119    aussi possible d'ajouter les contraintes ultérieurement (voir ci-dessous) après  
     1120    avoir rempli la nouvelle colonne correctement. 
    11241121   </para> 
    11251122 
     
    11281125    Ajouter une colonne avec une valeur par défaut nécessite la mise à jour 
    11291126    de chaque ligne de la table pour stocker la valeur de la nouvelle colonne. 
    1130     Néanmoins, si aucune valeur par défaut n'est spécifiée, 
     1127    Cependant, si aucune valeur par défaut n'est précisée, 
    11311128    <productname>PostgreSQL</productname> peut éviter la mise à jour physique. 
    1132     Donc, si vous avez l'intention de remplir la colonne avec des valeurs qui 
    1133     ne sont principalement pas celles par défaut, il est préférable d'ajouter 
     1129    Il est, de ce fait, préférable, si la colonne doit être remplie en majorité 
     1130    avec des valeurs différentes de la valeur par défaut, d'ajouter 
    11341131    la colonne sans valeur par défaut, d'insérer les bonnes valeurs avec une 
    1135     commande <command>UPDATE</command>, puis d'ajouter la valeur par défaut désirée 
     1132    commande <command>UPDATE</command> puis d'ajouter la valeur par défaut désirée 
    11361133    comme décrit ci-dessus. 
    11371134   </para> 
     
    11491146 
    11501147   <para> 
    1151     Pour retirer une colonne, utilisez une commande comme celle-ci&nbsp;: 
     1148    La commande de suppression d'une colonne ressemble à celle-ci&nbsp;: 
    11521149<programlisting>ALTER TABLE produits DROP COLUMN description;</programlisting> 
    1153     Les données de cette colonne disparaissent. Les contraintes de table 
    1154     impliquant la colonne sont aussi supprimées. Néanmoins, si la colonne est 
    1155     référencée par une contrainte de clé étrangère dans une autre table, 
    1156     <productname>PostgreSQL</productname> ne supprimera pas silencieusement 
    1157     cette contrainte. Vous pouvez autoriser la suppression de tout ce qui      
    1158     dépend de la colonne en ajoutant <literal>CASCADE</literal>&nbsp;: 
     1150    Toute donnée dans cette colonne disparaît. Les contraintes de table 
     1151    impliquant la colonne sont également supprimées. Néanmoins, si la colonne est 
     1152    référencée par une contrainte de clé étrangère d'une autre table, 
     1153    <productname>PostgreSQL</productname> ne supprime pas silencieusement 
     1154    cette contrainte. La suppression de tout ce qui      
     1155    dépend de la colonne peut être autorisée en ajoutant <literal>CASCADE</literal>&nbsp;: 
    11591156<programlisting>ALTER TABLE produits DROP COLUMN description CASCADE;</programlisting> 
    1160     Voir la <xref linkend="ddl-depend"/> pour une description du mécanisme général 
    1161     derrière ceci. 
     1157    Voir la <xref linkend="ddl-depend"/> pour une description du mécanisme général. 
    11621158   </para> 
    11631159  </sect2> 
     
    11771173ALTER TABLE produits ADD CONSTRAINT autre_nom UNIQUE (no_produit); 
    11781174ALTER TABLE produits ADD FOREIGN KEY (id_groupe_produit) REFERENCES groupes_produits;</programlisting> 
    1179     Pour ajouter une contrainte non NULL, qui ne peut pas être écrite 
    1180     sous forme d'une contrainte de table, utilisez cette syntaxe&nbsp;: 
     1175    Pour ajouter une contrainte NOT NULL, qui ne peut pas être écrite 
     1176    sous forme d'une contrainte de table, la syntaxe suivante est utilisée&nbsp;: 
    11811177<programlisting>ALTER TABLE produits ALTER COLUMN no_produit SET NOT NULL;</programlisting> 
    11821178   </para> 
    11831179 
    11841180   <para> 
    1185     La contrainte sera vérifiée immédiatement, donc les données de la 
    1186     table doivent satisfaire la contrainte avant qu'elle soit ajoutée. 
     1181    La contrainte étant immédiatement vérifiée, les données de la 
     1182    table doivent satisfaire la contrainte avant qu'elle ne soit ajoutée. 
    11871183   </para> 
    11881184  </sect2> 
    11891185 
    11901186  <sect2> 
    1191    <title>Retirer une contrainte</title> 
     1187   <title>Supprimer une contrainte</title> 
    11921188 
    11931189   <indexterm> 
     
    11971193 
    11981194   <para> 
    1199     Pour retirer la contrainte, il faut connaître son nom. Si vous lui avez donné 
    1200     un nom, alors c'est facile. Sinon, le système a attribué un nom généré que vous 
    1201     devez découvrir. La commande <literal>\d <replaceable>table</replaceable></literal> 
    1202     de <application>psql</application> peut être utile ici&nbsp;; d'autres interfaces peuvent 
    1203     aussi donner le moyen d'examiner les détails de table. La commande est&nbsp;: 
    1204 <programlisting>ALTER TABLE produits DROP CONSTRAINT autre_nom;</programlisting> 
    1205     (si vous traitez avec un nom de contrainte généré comme <literal>$2</literal>, 
    1206     n'oubliez pas qu'il faudra l'entourer de guillemets double pour en faire 
    1207     un identifiant valable) 
    1208    </para> 
    1209  
    1210    <para> 
    1211         Comme avec la suppression d'une colonne, vous avez besoin d'ajouter 
    1212         <literal>CASCADE</literal> si vous voulez supprimer une contrainte qui dépend 
    1213         d'autre chose. Un exemple concerne la contrainte de clé étrangère qui 
    1214         dépend d'une contrainte de clé unique ou primaire sur le(s) colonne(s) 
    1215     référencée(s). 
    1216    </para> 
    1217  
    1218    <para> 
    1219     Ça fonctionne de la même manière pour toutes les types de contrainte 
    1220     sauf les contraintes non NULL. Pour retirer une contrainte non NULL, 
    1221     utilisez 
     1195    Pour supprimer une contrainte, il faut connaître son nom. Si elle a été 
     1196    explicitement nommé, il n'y a aucune difficulté. Dans le cas contraire,  
     1197    le système a engendré et attribué un nom qu'il faut découvrir. La commande 
     1198    <literal>\d <replaceable>table</replaceable></literal> 
     1199    de <application>psql</application> peut être utile ici&nbsp;; d'autres interfaces 
     1200    offrent aussi la possibilité d'examiner les détails de table. La commande est&nbsp;: 
     1201<programlisting>ALTER TABLE produits DROP CONSTRAINT un_nom;</programlisting> 
     1202    (Dans le cas d'un nom de contrainte engendré, comme <literal>$2</literal>, 
     1203    il est nécessaire de l'entourer de guillemets doubles pour en faire 
     1204    un identifiant valable.) 
     1205   </para> 
     1206 
     1207   <para> 
     1208    Comme pour la suppression d'une colonne, <literal>CASCADE</literal> peut 
     1209    être ajouté pour supprimer une contrainte dont dépendent d'autres objets. 
     1210    Une contrainte de clé étrangère, par exemple, dépend d'une contrainte de 
     1211    clé primaire ou d'unicité sur la(les) colonne(s) référencée(s). 
     1212   </para> 
     1213 
     1214   <para> 
     1215    Cela fonctionne de la même manière pour tous les types de contrainte, 
     1216    à l'exception des contraintes NOT NULL. Pour supprimer une contrainte NOT NULL, 
     1217    on écrit 
    12221218<programlisting>ALTER TABLE produits ALTER COLUMN no_produit DROP NOT NULL;</programlisting> 
    1223     (Rappelez vous que les contraintes non NULL n'ont pas de noms.) 
     1219    (Les contraintes NOT NULL n'ont pas de noms.) 
    12241220   </para> 
    12251221  </sect2> 
     
    12341230 
    12351231   <para> 
    1236     Pour mettre une nouvelle valeur par défaut sur une colonne, utilisez une 
    1237     commande comme celle-ci&nbsp;: 
     1232    La commande de définition d'une nouvelle valeur par défaut de colonne 
     1233    ressemble à celle-ci&nbsp;: 
    12381234<programlisting>ALTER TABLE produits ALTER COLUMN prix SET DEFAULT 7.77;</programlisting> 
    1239     Notez que ceci n'affecte pas les lignes existantes dans la table, cela ne 
    1240     modifie que la valeur par défaut pour les futures commandes 
    1241     <command>INSERT</command>. 
    1242    </para> 
    1243  
    1244    <para> 
    1245     Pour retirer toute valeur par défaut, utilisez 
     1235    Cela n'affecte pas les lignes existantes de la table, mais uniquement la valeur 
     1236    par défaut pour les futures commandes <command>INSERT</command>. 
     1237   </para> 
     1238 
     1239   <para> 
     1240    Pour retirer toute valeur par défaut, on écrit 
    12461241<programlisting>ALTER TABLE produits ALTER COLUMN prix DROP DEFAULT;</programlisting> 
    1247     Ceci est équivalent à mettre la valeur par défaut à NULL. En conséquence, 
    1248     ce n'est pas une erreur de 
    1249     retirer une valeur par défaut qui n'a pas été définie car la valeur NULL 
    1250     est la valeur par défaut implicite. 
     1242    C'est équivalent à mettre la valeur par défaut à NULL. En conséquence, 
     1243    il n'y a pas d'erreur à retirer une valeur par défaut qui n'a pas été définie 
     1244    car NULL est la valeur par défaut implicite. 
    12511245   </para> 
    12521246  </sect2> 
     
    12611255 
    12621256   <para> 
    1263     Pour convertir une colonne en un autre type de données, utilisez une 
    1264     commande comme ceci&nbsp;: 
     1257    La commande de conversion du type de données d'une colonne ressemble à celle-ci&nbsp;: 
    12651258    <programlisting>ALTER TABLE produits ALTER COLUMN prix TYPE numeric(10,2);</programlisting> 
    1266     Elle ne réussira que si chaque valeur dans la colonne peut être 
     1259    Elle ne peut réussir que si chaque valeur de la colonne peut être 
    12671260    convertie dans le nouveau type par une conversion implicite. Si une 
    1268     conversion plus complexe est nécessaire, vous pouvez ajouter une clause 
    1269     <literal>USING</literal> qui spécifie comment calculer les nouveaux valeurs à 
    1270     partir des anciennes. 
     1261    conversion plus complexe est nécessaire, une clause 
     1262    <literal>USING</literal> peut être ajoutée qui indique comment calculer 
     1263    les nouvelles valeurs à partir des anciennes. 
    12711264   </para> 
    12721265   
    12731266   <para> 
    1274     <productname>PostgreSQL</productname> tentera de convertir la valeur par défaut de la 
    1275     colonne, si elle en a une. Mais ces conversions pourraient échouer ou 
    1276     pourraient produire des résultats surprenants. Il est souvent mieux de 
    1277     supprimer les contraintes sur une colonne avant de modifier son type, puis 
    1278     d'ajouter les contraintes modifiées convenablement
     1267    <productname>PostgreSQL</productname> tente de convertir la valeur par défaut de la 
     1268    colonne le cas échéant, ainsi que toute contrainte impliquant la colonne. Mais ces 
     1269    conversions peuvent échouer ou produire des résultats surprenants. Il est 
     1270    souvent préférable de supprimer les contraintes de la colonne avant d'en 
     1271    modifier le type, puis d'ajouter ensuite les contraintes convenablement modifiées
    12791272   </para> 
    12801273  </sect2> 
     
    13211314  </indexterm> 
    13221315 
    1323   <para> 
    1324    Quand vous créez un objet dans la base de données, vous en devenez le 
    1325    propriétaire. Avec les paramètres par défaut, seul le propriétaire 
    1326    d'un objet peut faire quelque chose avec. Pour que d'autres utilisateurs 
    1327    puissent s'en servir, des <firstterm>droits</firstterm> doivent être 
    1328    accordés (néanmoins, les superutilisateurs ont toujours accès à n'importe 
    1329    quel objet). 
    1330   </para> 
    1331  
    1332   <para> 
    1333    Il existe plusieurs droits&nbsp;: <literal>SELECT</literal>, 
     1316<!-- privilege : privilège ou droit ? 
     1317     grant ? --> 
     1318  <para> 
     1319   Tout utilisateur qui crée un objet dans la base de données en devient le 
     1320   propriétaire. Par défaut, seul le propriétaire peut l'utiliser. 
     1321   Pour que d'autres utilisateurs puissent l'utiliser, des 
     1322   <firstterm>droits</firstterm> (ou privilèges) doivent être 
     1323   accordés (les superutilisateurs ont, toutefois, accès à tout objet, 
     1324   toujours). 
     1325  </para> 
     1326 
     1327  <para> 
     1328   Il existe un certain nombre de droits différents&nbsp;: <literal>SELECT</literal>, 
    13341329   <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>, 
    13351330   <literal>REFERENCES</literal>, <literal>TRIGGER</literal>, 
    13361331   <literal>CREATE</literal>, <literal>CONNECT</literal>, <literal>TEMPORARY</literal>, 
    1337    <literal>EXECUTE</literal>, et <literal>USAGE</literal>. 
     1332   <literal>EXECUTE</literal> et <literal>USAGE</literal>. 
    13381333   Les droits applicables à un objet particulier varient 
    1339    suivant le type d'objet (table, fonction, etc.) Pour une 
     1334   selon le type d'objet (table, fonction...). La page de référence 
     1335   <xref linkend="sql-grant" endterm="sql-grant-title"/> fournit une 
    13401336   information complète sur les différents types de droits gérés par 
    1341    <productname>PostgreSQL</productname>, lisez la page de référence 
    1342    <xref linkend="sql-grant" endterm="sql-grant-title"/>.  La section et 
    1343    les chapitres suivants vous montreront aussi comment ces droits 
    1344    sont utilisés. 
    1345   </para> 
    1346  
    1347   <para> 
    1348    Le droit de modifier ou de détruire est le droit du propriétaire seul. 
     1337   <productname>PostgreSQL</productname>.  La section et 
     1338   les chapitres suivants présentent l'utilisation de ces droits. 
     1339  </para> 
     1340 
     1341  <para> 
     1342   Le droit de modifier ou de détruire un objet est le privilège du seul propriétaire. 
    13491343  </para> 
    13501344 
    13511345  <note> 
    1352     <para> 
    1353       Pour modifier le propriétaire d'une table, d'un index, d'une séquence ou 
    1354       d'une vue, utilisez la commande <xref linkend="sql-altertable" 
    1355       endterm="sql-altertable-title"/>. Il 
    1356       existe des commandes <literal>ALTER</literal> correspondant aux autres types  
    1357       d'objets. 
    1358     </para> 
     1346   <para> 
     1347    Pour modifier le propriétaire d'une table, d'un index, d'une séquence ou 
     1348    d'une vue, on utilise la commande 
     1349    <xref linkend="sql-altertable" endterm="sql-altertable-title"/>. 
     1350    Il existe des commandes <literal>ALTER</literal> correspondantes pour les autres types  
     1351    d'objets. 
     1352   </para> 
    13591353  </note> 
    13601354   
    13611355  <para> 
    1362    Pour accorder des droits, la commande <command>GRANT</command> est 
    1363    utilisée. Par exemple, si <literal>joe</literal> est un utilisateur 
    1364    existant et <literal>comptes</literal> une table existante, le 
    1365    droit de mettre la table à jour peut être accordé avec 
     1356   La commande <command>GRANT</command> est 
     1357   utilisée pour accorder des privilèges. Par exemple, si <literal>joe</literal> 
     1358   est un utilisateur et <literal>comptes</literal> une table, le 
     1359   droit d'actualiser la table <literal>comptes</literal> peut être accordé 
     1360   à <literal>joe</literal> avec 
    13661361<programlisting>GRANT UPDATE ON comptes TO joe;</programlisting> 
    1367    Écrire <literal>ALL</literal> au lieu d'un droit spécifique accorde tous 
    1368    les droits adéquats pour ce type d'objet. 
     1362   Écrire <literal>ALL</literal> à la place d'un droit spécifique accorde tous 
     1363   les droits applicables à ce type d'objet. 
    13691364  </para> 
    13701365 
    13711366  <para> 
    13721367   Le nom d'<quote>utilisateur</quote> spécial <literal>PUBLIC</literal> peut 
    1373    être utilisé pour donner un droit à chaque utilisateur du système. De plus, 
     1368   être utilisé pour donner un droit à tous les utilisateurs du système. De plus, 
    13741369   les rôles de type <quote>group</quote> peuvent être configurés pour aider à 
    13751370   la gestion des droits quand il y a beaucoup d'utilisateurs dans une base 
     
    13781373 
    13791374  <para> 
    1380    Pour révoquer un droit, utilisez la commande appropriée 
    1381    <command>REVOKE</command> ci-dessous&nbsp;: 
     1375   Pour révoquer un droit, on utilise la commande bien-nommée 
     1376   <command>REVOKE</command>, comme dans l'exemple ci-dessous&nbsp;: 
    13821377<programlisting>REVOKE ALL ON comptes FROM PUBLIC;</programlisting> 
    1383    Les droits spéciaux du propriétaire de l'objet (c'est-à-dire, le droit de faire des 
    1384    <command>DROP</command>, <command>GRANT</command>, <command>REVOKE</command>, etc.) 
    1385    sont toujours implicitement ceux du propriétaire et ne peuvent être ni 
     1378   Les droits spéciaux du propriétaire de l'objet (c'est-à-dire, le droit 
     1379   d'exécuter <command>DROP</command>, <command>GRANT</command>,  
     1380   <command>REVOKE</command>, etc.) appartiennent toujours implicitement au 
     1381   propriétaire. Il ne peuvent être ni 
    13861382   accordés ni révoqués. Mais le propriétaire de l'objet peut choisir 
    13871383   de révoquer ses propres droits ordinaires pour, par exemple, mettre 
    1388    une table en lecture seule pour soi-même ainsi que pour les autres. 
     1384   une table en lecture seule pour lui-même et pour les autres. 
    13891385  </para> 
    13901386 
     
    13921388   Habituellement, seul le propriétaire de l'objet (ou un superutilisateur) 
    13931389   peut donner ou révoquer les droits sur un objet. Néanmoins, il est possible 
    1394    de donner un droit <quote>avec une option de don de droits</quote>, qui donne 
    1395    à celui qui le reçoit de le donner à d'autres. Si cette option est ensuite 
     1390   de donner un droit <quote>avec possibilité de transmission</quote> 
     1391   (<foreignphrase><quote>with grant option</quote></foreignphrase>), qui donne 
     1392   à celui qui le reçoit la permission de le donner à d'autres. Si cette option est ensuite 
    13961393   révoquée, alors tous ceux qui ont reçu le droit de cet utilisateur 
    1397    (directement ou indirectement via la chaîne des dons) perdront leur 
    1398    droit. Pour des détails, voir les pages de références <xref 
    1399    linkend="sql-grant" endterm="sql-grant-title"/> et <xref linkend="sql-revoke" 
    1400    endterm="sql-revoke-title"/>. 
     1394   (directement ou indirectement via la chaîne des dons) perdent ce privilège. 
     1395   Pour les détails, voir les pages de références 
     1396   <xref linkend="sql-grant" endterm="sql-grant-title"/> et 
     1397   <xref linkend="sql-revoke" endterm="sql-revoke-title"/>. 
    14011398  </para> 
    14021399 </sect1> 
     
    14101407 
    14111408  <para> 
    1412    Un groupe de bases de données <productname>PostgreSQL</productname> 
    1413    contient une ou plusieurs bases nommées. Les utilisateurs et groupes 
    1414    d'utilisateurs sont partagés sur le groupe tout entier mais aucune 
    1415    autre donnée n'est partagée parmi les bases. Une connexion cliente 
    1416    donnée sur le serveur peut accéder aux données d'une seule base, celle 
    1417    spécifiée dans la connexion de requête
     1409   Un cluster de bases de données <productname>PostgreSQL</productname> 
     1410   contient une ou plusieurs bases nommées. Si les utilisateurs et groupes 
     1411   d'utilisateurs sont partagés sur l'ensemble du cluster, aucune 
     1412   autre donnée n'est partagée. Une connexion cliente 
     1413   donnée sur le serveur ne peut accéder qu'aux données d'une seule base, celle 
     1414   indiquée dans la requête de connexion
    14181415  </para> 
    14191416 
    14201417  <note> 
    14211418   <para> 
    1422     Les utilisateurs d'un groupe n'ont pas forcément le droit d'accéder à 
    1423     toutes les bases du groupe. Le partage des noms d'utilisateur veut dir
     1419    Les utilisateurs d'un cluster n'ont pas obligatoirement le droit d'accéder à 
     1420    toutes les bases du cluster. Le partage des noms d'utilisateur signifi
    14241421    qu'il ne peut pas y avoir plusieurs utilisateurs nommés <literal>joe</literal>, 
    1425     par exemple, dans deux bases du même groupe&nbsp;; mais le système peut être 
    1426     configuré pour autoriser <literal>joe</literal> à accéder qu'à certaines bases. 
     1422    par exemple, dans deux bases du même cluster&nbsp;; mais le système peut être 
     1423    configuré pour n'autoriser <literal>joe</literal> à accéder qu'à certaines bases. 
    14271424   </para> 
    14281425  </note> 
    14291426 
     1427<!-- ICI --> 
    14301428  <para> 
    14311429   Une base de données contient un ou plusieurs <firstterm>schémas</firstterm> 
     
    14361434   contenir une table nommée <literal>ma_table</literal>. Contrairement aux 
    14371435   bases de données, les schémas ne sont pas séparés de manière rigide&nbsp;: 
    1438    un utilisateur peut accéder aux objets de n'importe lequel des schémas de la 
    1439    base de données auxquels il se connecte s'il a les droits pour le faire. 
     1436   un utilisateur peut accéder aux objets de n'importe quel schéma de la 
     1437   base de données à laquelle il se connecte s'il a les droits pour le faire. 
    14401438  </para> 
    14411439 
     
    19961994   Toutes les contraintes de vérification et toutes les contraintes NOT NULL 
    19971995   sur une table parent sont automatiquement héritées par les tables enfants. 
    1998    Les autres types de contraintes (uniques, clés primaires, clés étrangères) 
     1996   Les autres types de contraintes (d'unicité, clés primaires, clés étrangères) 
    19991997   ne sont pas hérités. 
    20001998  </para> 
     
    20842082          Si nous déclarons <structname>villes</structname>.<structfield>nom</structfield> comme 
    20852083           <literal>UNIQUE</literal> ou comme une clé primaire (<literal>PRIMARY 
    2086            KEY</literal>), ceci 
    2087            n'empêchera pas la table <structname>capitales</structname> d'avoir des lignes 
     2084           KEY</literal>), cela 
     2085           n'empêche pas la table <structname>capitales</structname> d'avoir des lignes 
    20882086           avec des noms dupliqués dans <structname>villes</structname>. Et ces lignes 
    20892087           dupliquées pourraient par défaut s'afficher dans les requêtes sur 
    20902088           <structname>villes</structname>. En fait, par défaut, 
    20912089           <structname>capitales</structname> n'aurait pas du tout de contrainte 
    2092            unique et, du coup, pourrait contenir plusieurs lignes avec le 
     2090           d'unicité et, du coup, pourrait contenir plusieurs lignes avec le 
    20932091           même nom. Vous pouvez ajouter une contrainte d'unicité à 
    20942092           <structname>capitales</structname> mais ceci n'empêcherait pas la duplication