Partage
  • Partager sur Facebook
  • Partager sur Twitter

contrainte UNIQUE

dans phpmyadmin

    8 janvier 2011 à 22:12:24

    Bonjour,

    Je ne vois pas dans l'interface graphique phpmyadmin :
    - comment on spécifie la contrainte UNIQUE pour la creation d'un champ donné
    - ou une fois créé on voit qu'il est en UNIQUE

    Ca se trouve c'est pas possible ?

    et 2e serie de question, une contrainte UNIQUE se traduit en fait par un index ???

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      8 janvier 2011 à 22:54:27

      Tu peux créer des index depuis la page de la structure de la table. Il suffit alors de choisir le type UNIQUE.

      Une contrainte UNIQUE est comme un index oui.
      • Partager sur Facebook
      • Partager sur Twitter
        9 janvier 2011 à 0:00:11

        Citation : 6(sic)6

        Tu peux créer des index depuis la page de la structure de la table. Il suffit alors de choisir le type UNIQUE.

        Une contrainte UNIQUE est comme un index oui.


        Il ne faut pas confondre niveau logique et physique. Pour un index, tout se passe au niveau physique. Il n'y a d'index en SQL à proprement parler (les éditeurs ajoutent eux-mêmes ce qui est nécessaire).

        Les contraintes, au contraire, sont au niveau logique.

        Mais on ne peut pas dire qu'un index se traduit irrémédiablement par une contrainte d'unicité.
        • Partager sur Facebook
        • Partager sur Twitter
          9 janvier 2011 à 0:42:23

          Je croyais que MySQL ne faisait pas la différence entre contrainte et index ? Au temps pour moi.
          • Partager sur Facebook
          • Partager sur Twitter
            9 janvier 2011 à 0:58:04

            Oui, il l'a fait (encore heureux !). Il y a seulement deux contraintes qui réagissent n'importe comment avec MySQL : contraintes check (interprétées, mais qui n'ont aucun effet) et foreign key sous MyISAM, qui sont effectivement transformés en index.
            • Partager sur Facebook
            • Partager sur Twitter
              9 janvier 2011 à 22:39:15

              bonjour,
              je simplifie.
              un index est un accélérateur.
              une contrainte est une limitation sur un ensemble de valeurs.
              @6(sic)6,
              dans ta première réponse à kanini tu réponds correctement. Dans l'interface PHPMyAdmin il y a un item Index dans la spécification d'un champ (au passage PHPMyAdmin "dit" champ et pas colonne) avec une liste déroulante qui propose, entre autres UNIQUE.
              Donc si kanini veut une colonne unique autre que la clé primaire, il va devoir sélectionner comme tu le dis. Stop.
              @Fayden
              "Logique/Physique" ... c'est un leitmotiv chez toi. Heureusement qu'il y a des algo de transformation entre les 2 niveaux.
              "Il n'y a d'index en SQL" ... et CREATE INDEX ça fait quoi? Ce sont des objets magiques, invisibles? Certains éditeurs donne la formule pour calculer la taille des index organisés en B-TREE ou autres.
              "Les contraintes, au contraire, sont au niveau logique."!!! Une PK c'est à quel niveau? Ben les 2! Etc.
              Et PHPMyAdmin génère quoi? Du physique?
              • Partager sur Facebook
              • Partager sur Twitter
                9 janvier 2011 à 23:20:40

                Citation : sicilien007

                @Fayden
                "Logique/Physique" ... c'est un leitmotiv chez toi. Heureusement qu'il y a des algo de transformation entre les 2 niveaux.


                ok

                Citation : sicilien007

                "Il n'y a d'index en SQL" ... et CREATE INDEX ça fait quoi? Ce sont des objets magiques, invisibles? Certains éditeurs donne la formule pour calculer la taille des index organisés en B-TREE ou autres.


                Attention : il faut bien lire les messages avant d'y répondre. J'ai dit qu'il n'y a aucune mention d'index en SQL normalisé, et que ce sont les éditeurs qui ajoutent les commandes nécessaires (source). Donc contrairement à ce que tu affirmes, non, je ne dis pas que les index n'existent pas.

                Citation : sicilien007

                "Les contraintes, au contraire, sont au niveau logique."!!! Une PK c'est à quel niveau? Ben les 2! Etc.


                Une clé primaire au niveau physique ? Es-tu certain de comprendre ces deux notions ?

                Citation : sicilien007

                Et PHPMyAdmin génère quoi? Du physique?


                Est-ce que tu me trolles ?
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  10 janvier 2011 à 0:16:44

                  sicilien007 ont dirait que tu ne saisis pas bien la distinction (et son importance) entre les niveaux logique et physique d'une BDD.

                  Le langage SQL est un langage de très haut niveau.
                  Lorsqu'on fait unSELECT maCol FROM maTable; ont se contre-fou de l'OS qui fait tourner le SGBDR, où sont stocké les données ? sur quel disque ? est-ce que je doit utiliser un index ? est-ce que les données sont compressées ?est-ce qu'elles sont déjà en RAM, etc...

                  C'est toute la beauté de la chose.
                  Ont est à un niveau logique ont se contre-fou de l'implémentation.


                  Certes AUJOURD'HUI nos SGBDR traduisent une contrainte d'unicité (qui n'est autre qu'une règle d'intégrité) sous forme d'index.
                  Mais il ne faut pas confondre les deux notions.

                  Peut-être que demain, une nouvelle approche à la gestion des données sera à la mode, et on n'utilisera plus d'index pour implémenter la contrainte d'unicité. Mais cela c'est du physique, ça n'aura aucun impact sur le logique... le code SQL.

                  A lire:
                  Qu'est-ce qu'un Modèle de données ?


                  Il est important de comprendre la différence, ça permet d'éviter de grosses erreurs.


                  Citation : sicilien007

                  Dans l'interface PHPMyAdmin il y a un item Index dans la spécification d'un champ (au passage PHPMyAdmin "dit" champ et pas colonne)


                  J'ai fait la remarque il y a plusieurs mois déjà aux gens de chez PHPMyAdmin, les nouvelles versions de PMA en français et anglais utilisent maintenant (à vérifier) le vocabulaire approprié : colonnes et lignes (ou columns et rows).
                  Les champs (de patate?) ça n'existe pas en SQL. Une table est composée de lignes et de colonnes.

                  Bonne année, et bonne nuit ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 janvier 2011 à 0:47:39

                    re,

                    Citation : Cintre Sournois


                    Les champs (de patate?) ça n'existe pas en SQL. Une table est composée de lignes et de colonnes.


                    oui et une relation est un ensemble de n-uplets!
                    Nous sommes sur le site du zéro. Pas en première année de doctorat avec Gardarin ou autre.
                    PMA, comme tu écris, dans son interface écrit Champ, alors, pour aller dans le sens du questionneur, pour l'orienter, et non pas le désorienter, j'écris champ, et en :), j'écris colonne.
                    Je ne suis pas ici pour donner des leçons, simplement la question de kanini était comment créer une contrainte d'unicité sur une colonne non PK. Et la première réponse de 6(sic)6 était correcte.
                    PS : pour la précision :
                    ont dirait -> on dirait
                    où sont stocké les données -> où sont stockées les données
                    je doit utiliser -> je dois utiliser
                    La PRECISION dans les langages c'est important :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 janvier 2011 à 0:54:21

                      Citation : sicilien007

                      Nous sommes sur le site du zéro. Pas en première année de doctorat avec Gardarin ou autre.


                      Tu n'accordes donc aucune importance au vocabulaire ? C'est dommage. D'ailleurs, concernant PMA, Cintre Sournois t'a déjà dit qu'il avait demandé une correction et qui avait été acceptée par les développeurs (je peux en témoigner, j'ai lu le message initial et la réponse). Parce que certains font une erreur de vocabulaire ne doit pas dire qu'on doit la répéter.

                      Et la réponse de 6(sic)6 n'était pas fausse en soit, mais pas entièrement correcte.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 janvier 2011 à 1:20:55

                        re,
                        @Fayden et Cintre Sournois,
                        vous confondez souvent ce qu'il faut connaître pour être un développeur chez un éditeur de SGBDR et un développeur SQL débutant.
                        Le site du zéro est un lieu d'aides pour des développeurs débutants, le plus souvent, en SQL. Encore une fois pas en doctorant en SGBDR.
                        @Fayden,
                        bien sûr que je fais la différence entre individu/entité ou de relation/association de Merise et de Merise/2, relation dans l'AR de CODD et table en SQL mais la confiture ici ... cela ressemble à du Ketchup parfois ...
                        Mais si tu as assimilé que tuple/n-uplet/enregistrement/row c'est presque kifkif et que column/colonne/champ c'est aussi presque kifkif ... tu commences a mieux comprendre les algo de transfo entre niveaux dans les AGL!



                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 janvier 2011 à 1:30:00

                          Citation : sicilien007

                          re,
                          @Fayden et Cintre Sournois,
                          vous confondez souvent ce qu'il faut connaître pour être un développeur chez un éditeur de SGBDR et un développeur SQL.
                          Le site du zéro est un lieu d'aides pour des développeurs débutants, le plus souvent, en SQL. Encore une fois pas en doctorant en SGBDR.
                          @Fayden,
                          bien sûr que je fais la différence entre individu/entité ou de relation/association de Merise et de Merise/2, relation l'AR de CODD et table de SQL mais la confiture ici ... cela ressemble à du Ketchup parfois ...


                          Je crois que la programmation est avant tout basée sur la rigueur du développeur. Pas seulement au niveau du code, mais aussi des concepts entourant tout ce que touche la programmation. Ça inclut, entre autres, le vocabulaire.
                          Et c'est le genre de choses qu'on doit apprendre dès le commencement. Je vois pas pourquoi j'éviterais d'utiliser le vocabulaire correct sous prétexte qu'un certain produit tiers se trompe.

                          D'ailleurs, ce serait bien si tu amenais plus d'arguments au débat, parce que depuis le début, à part dire "vous avez torts, j'ai raison", il ne se passe pas grand-chose.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 janvier 2011 à 1:37:49

                            re,
                            "vous avez tort, j'ai raison"
                            Ai-je écrit cela?
                            je suis plus nuancé!
                            Certains jours j'ai en face de moi des infographistes qui veulent devenir webmasters alors je parle de champ, et d'autres jours j'ai des bac+5 scientifiques qui veulent devenir concepteur, alors j'adapte mon langage!
                            20 ans de pratique!
                            La France a un gap négatif de développeurs. Il y a eu un plan indien ... insuffisant.
                            Je suis, peut-être, plus dans le réel, avec ses compromis, que vous.
                            Comme en politique tu choisis une ONG ou un parti politique!
                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 janvier 2011 à 1:46:08

                              À peine. Tu riais pratiquement de moi après mon post, et dès que j'ai répondu, tu t'es dépêché de changer de sujet pour quelque chose de bien plus futile.

                              Puis, sous prétexte qu'on soit plus rigoureux que toi, on ne devrait pas enseigner correctement aux débutants les bons mots "parce que PMA dit champ". Et dès qu'on a répondu à ça, tu as encore changé de sujet.

                              Ça devient plutôt lassant.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                10 janvier 2011 à 2:04:40

                                re,
                                @Fayden
                                tu te méprends, sur les bases je serais plutôt rigide, et d'accord avec toi (pas sur tout :) ).
                                Mais sur ce site je me "modère", "module".
                                Je comprends tes précepts.
                                Mais je pense qu'ils sont plus adéquats sur un site comme developpez.com qui est d'un niveau supérieur (ultérieur)

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 janvier 2011 à 2:09:05

                                  Je ne vais pas me répéter encore pour la rigueur et tout, mais ce qui est bon sur developpez est aussi bon ici. Certes, les communautés sont différentes et ne visent pas nécessairement la même clientèle, mais les méthodes d'apprentissage devrait être semblables.

                                  Enfin, j'imagine qu'on a fait assez de hors-sujet pour aujourd'hui ;-).
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    10 janvier 2011 à 2:16:49

                                    re,
                                    kanini décidera!

                                    PS : il va falloir aussi écrire à Monsieur MYSQL pour qu'il renomme :
                                    mysql_fetch_field, mysql_field_flags, mysql_field_len, mysql_field_name, ... parce que ce devrait être mysql_fetch_column, ...
                                    et que field est traduit par champ en français ...
                                    L'utilisation de synonymes et d'analogies dans l'apprentissage ne disqualifie pas le contenu.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      17 janvier 2011 à 22:14:02

                                      Citation : sicilien007


                                      Certains jours j'ai en face de moi des infographistes qui veulent devenir webmasters alors je parle de champ, et d'autres jours j'ai des bac+5 scientifiques qui veulent devenir concepteur, alors j'adapte mon langage!


                                      Ça n'a aucun sens.....

                                      La semaine dernière je donnais cours à des étudiants de niveau Bac+2, j'ai fait une mise au point sur le vocabulaire, ça prend 30 secondes... s'ils veulent manipuler des champs, il faut changer de filière....

                                      Citation : sicilien007


                                      PS : il va falloir aussi écrire à Monsieur MYSQL pour qu'il renomme :
                                      mysql_fetch_field, mysql_field_flags, mysql_field_len, mysql_field_name, ... parce que ce devrait être mysql_fetch_column, ...
                                      et que field est traduit par champ en français ...
                                      L'utilisation de synonymes et d'analogies dans l'apprentissage ne disqualifie pas le contenu.


                                      Mais ça démontre au mieux une absense de rigueur et au pire une méconnaissance du sujet.... ce qui est très souvent le cas en bases de données.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        17 janvier 2011 à 22:40:45

                                        re,
                                        @Cintre Sournois
                                        Tu vas devoir en écrire des missives!
                                        Par exemple dans la dernière API PDO (php_pdo_sqlsrv_53_ts_vc6.dll) pour MSS, qui permet de "scroller" des curseurs en avant/arrière il y a des fonctions du genre sqlsrv_get_field().
                                        A Mr Microsoft confond FIELD et COLUMN!
                                        Et .NET avec DataRedaer.fieldCount!
                                        Et MySQLQueryBrowser et son Field Editor!
                                        Et MySQL avec ...
                                        SHOW FIELDS FROM table;
                                        SHOW COLUMNS FROM table;
                                        Qui donnent les mêmes résultats!

                                        Plus royaliste que le roi le drôle Don Quichotte!


                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        contrainte UNIQUE

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown