Forum Programmation.SQL Création de clés étrangères

Posté par . Licence CC by-sa
1
14
juil.
2014

Bonjour,

Je suis en train de créer une base de données, pour ne pas m'embêter j'utilise Workbench.

Toutes mes tables ont été créées, maintenant je cherche à créer les clés étrangères entre les tables mais je ne trouve pas comment faire dans Workbench.

Sur internet on trouve un tutoriel, mais c'est en passant par un diagramme EE. Chose que je n'ai pas fait lors de la création de ma base. Peut être peut-on afficher le diagramme EER d'une base déjà créée ? Si oui, comment ?

Merci d'avance pour votre aide précieuse,

Cordialement,
Bobmoutarde

  • # pour partir d'un base existante

    Posté par . Évalué à 2.

    tu peux aller dans le menu database / reverse engineer pour generer un diagramme d'une base existante

    • [^] # Re: pour partir d'un base existante

      Posté par . Évalué à 1.

      Merci beaucoup, je ne connaissais absolument pas :)

      J'ai une question, je vais avoir une petite base de données. Est-ce qu'il nécessaire d'ajuster la taille des VARCHAR ? Ou je peux tout mettre à 255, il n'y aura pas de baisse de performances ou autre ?

      Si j'avais une plus grosse table, est-ce nécessaire d'optimiser les nombres de caractères des entrées ?

      • [^] # Re: pour partir d'un base existante

        Posté par . Évalué à 2.

        ca depend,

        si c'est pour stocker une date, c'est ballot de mettre 255chars
        si c'est pour stocker un post de forum, un article d'un blog, ca peut etre trop court

        donc la dessus il n'y a que toi pour connaitre ton besoin.

        • [^] # Re: pour partir d'un base existante

          Posté par . Évalué à 5. Dernière modification le 17/07/14 à 08:15.

          si c'est pour stocker une date, c'est ballot de mettre 255chars

          Ce qui est ballot c'est de stocker une date dans un VARCHAR…

          http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-types.html

          Pour stocker un post de forum il y a le type TEXT

          http://dev.mysql.com/doc/refman/5.0/fr/blob.html

          • [^] # Re: pour partir d'un base existante

            Posté par . Évalué à 1.

            Oui bien entendu pour une date ou un commentaire j'utilise pas les VACHAR.

            Je pensais plus dans le cas de "Adresse, Nom, Prenom, Ville, Departement, Nom du service, Nom de l'équipement" en gros tout ce qui utilise un VARCHAR.

            Faut-il être hyper précis sur la valeur ou on peut mettre du max sans avoir de souci de performance ? Si problèmes de perf il y a, je suppose que ça dépend aussi de la machine sur laquelle la BDD tourne. Mais est-ce que cette optimisation est nécessaire pour de "petite table" = 1 000 entrées

            • [^] # Re: pour partir d'un base existante

              Posté par (page perso) . Évalué à 2.

              En résumé, il y a une différence (je pense à MySQL), et essayer ne serait-ce que de limiter un peu la taille du varchar est une bonne idée.

              Par exemple. l'optimiseur va regarder la définition de ta table, ne va voir que la taille max possible et va potentiellement créer une table temporaire sur le disque parce qu'il a estimé une taille trop grande.
              Utiliser 255 au lieu de 25 ne devrait pas faire une grosse différence, mais utiliser 64k au lieu de 25 peut avoir un impact très négatif.

              Une petite note sur les VARCHAR: si tu essayes de stocker une chaîne trop grande, MySQL va juste couper les caractères en trop, sans te prévenir. Pour éviter ça (et c'est une bonne pratique en général), utilise toujours le mode strict de mysql.

              • [^] # Re: pour partir d'un base existante

                Posté par . Évalué à 1.

                Hello,

                Merci de ta réponse, je vois un peu plus de le problème. Le seul champ qui sera conséquent dans ma BDD sera "commentaire" en TEXT.
                Pour le reste c'est ni plus ni moins qu'un nom, prénom, marque, service, mail, adresse… Je pense que des VARCHAR seront suffisant.

                Je prends en note ton tips sur le mode strict, ça pourra être utile surtout quand on voudra remplir la BDD via le portail WEB.

                Une petite question (un peu plus corsée, je suppose) :

                Je souhaite récupérer les informations d'un produit en scannant un QRCode, mais je n'ai aucune idée de la façon d'implémenter un QRCode dans la BDD… On stocke simplement une image ? Je ne vois pas bien comment faire… Si vous avez une piste

                Merci encore et d'avance.

    • [^] # Re: pour partir d'un base existante

      Posté par . Évalué à 1.

      Hello,

      Je me permet de te relancer, peut-on faire l'inverse (je suppose que oui). A partir d'un diagramme EER complet créer une "base de données" ?
      Est-ce que ça serait forward engineer ?

      Merci !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.