Mysql
 sql >> Base de données >  >> RDS >> Mysql

Création de base de données visuelle avec MySQL Workbench

Dans le didacticiel d'aujourd'hui, vous apprendrez à utiliser un utilitaire de modélisation visuelle de base de données pour dessiner un diagramme de base de données et générer automatiquement du SQL. Plus précisément, nous verrons comment utiliser MySQL Workbench, un outil de conception de base de données visuelle multiplateforme.

Qu'est-ce que MySQL Workbench ?

MySQL Workbench est un outil puissant développé par MySQL avec trois principaux domaines de fonctionnalité :

  • Développement SQL :Remplace le navigateur de requête MySQL. Permet à l'utilisateur de se connecter à une base de données existante et de modifier et d'exécuter des requêtes SQL.
  • Modélisation des données  :conception et modélisation complètes de la base de données visuelle.
  • Administration de la base de données :Remplace l'administrateur MySQL. Interface graphique pour démarrer/arrêter les serveurs, créer des comptes utilisateurs, modifier les fichiers de configuration, etc.

Dans ce didacticiel, nous nous concentrerons sur la modélisation des données aspect pour créer une base de données à partir de zéro, puis jetez un coup d'œil à l'éditeur SQL pour exécuter notre script SQL généré et créer la base de données dans MySQL.

MySQL Workbench est disponible pour Windows, Linux et Mac OSX. Il existe deux éditions différentes :l'Édition OSS communautaire et l'édition standard commerciale . L'édition communautaire est sous licence Open Source et GPL, comme vous vous en doutez. Il est entièrement fonctionnel et c'est celui que nous utiliserons dans cet article. L'édition commerciale ajoute des fonctionnalités supplémentaires, telles que la validation de schémas et de modèles ou la génération de documentation.

Remarque :ce didacticiel est basé sur la version 5.2 (5.2.16) de Community OSS Edition, actuellement en version bêta au moment de la rédaction (avril 2010).

Planification de notre base de données

Pour apprendre à utiliser MySQL Workbench, nous utiliserons comme exemple une base de données très simple pour les cours en ligne. Supposons qu'un groupe d'enseignants souhaite proposer des cours en ligne sur plusieurs matières, en utilisant Skype ou tout autre logiciel de visioconférence. Pour notre petit projet, nous avons décidé que nous devions stocker les informations suivantes :

Lors de l'élaboration de notre diagramme, nous aurons également besoin de connaître les relations entre ces groupes de données ; alors nous ferions mieux d'y penser maintenant !

  • Un enseignant peut enseigner plusieurs matières
  • Une matière peut être enseignée par plusieurs enseignants
  • Chaque classe n'a qu'un seul enseignant
  • Un enseignant peut donner plusieurs cours
  • Un étudiant peut assister à plusieurs cours
  • Une classe compte de nombreux élèves
  • Un cours peut avoir plusieurs heures (par semaine)
  • À un jour et à une heure donnés, il peut y avoir plusieurs cours
  • Un cours concerne une matière
  • Une matière peut être enseignée dans plusieurs classes

À ce stade, nous avons toutes les informations nécessaires pour rencontrer la star de cette émission...

Envoyer dans MySQL Workbench

Il est temps de lancer Workbench. Dans la partie modélisation des données de l'écran d'accueil, nous cliquons sur 'Créer un nouveau modèle EER' , et l'écran suivant apparaît :

Lorsque nous créons un nouveau modèle de base de données, il contient le schéma mydb par défaut. Nous pouvons le renommer et l'utiliser comme schéma de base de données. Un modèle de base de données peut avoir plusieurs schémas différents.

Le catalogue sur la droite affichera tous les éléments de notre schéma et nous permettra de faire glisser et déposer des éléments dans les diagrammes si nécessaire.

Avoir des sections séparées pour les schémas physiques et les diagrammes EER, et la possibilité d'inclure plusieurs schémas dans un modèle de base de données peut prêter à confusion. La section suivante explique ces concepts et comment ils sont liés.

Clarification des concepts

Le schéma physique contient tous les éléments nécessaires pour définir la base de données :tables, colonnes, types, index, contraintes, etc. C'est ce que nous définissons réellement. Chaque objet ajouté dans le modèle graphique apparaît également dans le schéma physique. Il s'agit en fait d'un moyen visuel de définir notre schéma.

Nous pouvons avoir plusieurs schémas pour le même modèle de base de données de la même manière que nous pouvons avoir plusieurs bases de données dans un serveur MySQL. Chaque schéma sera une base de données MySQL. Par exemple, dans l'écran suivant, nous avons deux onglets de schéma :

Si nous générons le script SQL, nous aurons deux instructions CREATE DATABASE distinctes - en fait, nous aurons CREATE SCHEMA qui n'est qu'un synonyme.

CREATE SCHEMA IF NOT EXISTS `schema1`;
CREATE SCHEMA IF NOT EXISTS `schema2`;

"EER signifie Extended (or Enhanced) Entity-Relationship . Les diagrammes EER ne sont qu'un moyen de modéliser les données et les relations entre les données à l'aide de symboles standard"

Ils seront répertoriés en tant que bases de données dans l'hôte du serveur MySQL lors de l'utilisation de SHOW DATABASES.

Maintenant, qu'est-ce qu'un diagramme EER ?. EER signifie Extended (or Enhanced) Entity-Relationship>. Les diagrammes EER ne sont qu'un moyen de modéliser les données et les relations entre les données à l'aide de symboles standard. Les modèles EER peuvent être complexes, mais MySQL Workbench n'utilise qu'un sous-ensemble de tous les éléments graphiques possibles, car le but de ce diagramme (dans cet outil) est de faire correspondre chaque élément au schéma physique.

Nous pouvons utiliser un diagramme EER pour définir l'ensemble de la base de données, ou seulement de petites parties. Par exemple, nous pouvons avoir un schéma avec cinq tables définies, puis créer un nouveau diagramme pour définir deux autres tables à l'aide de l'éditeur visuel. Le diagramme ne contiendra que deux tables, mais ces deux tables seront également incluses dans le schéma, avec les cinq précédentes.

Créer nos tableaux

Revenons à notre exemple initial ; nous devons renommer le schéma par défaut en double-cliquant sur le nom. À ce stade, nous avons deux possibilités :nous pouvons commencer à ajouter des tables à notre schéma physique à l'aide de l'icône d'ajout de table, ou nous pouvons démarrer un diagramme EER et y ajouter toutes les tables.

Je préfère ajouter un nouveau schéma depuis le début et créer mon schéma visuellement; cependant, afin de montrer comment le faire avec les deux méthodes, nous allons créer les deux premières tables dans l'onglet schéma, puis continuer avec le diagramme EER.

Lorsque vous cliquez sur Ajouter un tableau l'icône , l'éditeur de tableau s'ouvre sous la forme d'un onglet ci-dessous :

À l'aide de l'éditeur de table, nous changeons le nom de la table et passons à l'onglet colonnes (dans les onglets sous l'éditeur) pour entrer nos colonnes. Nous pouvons choisir le type de données (il existe une liste déroulante avec tous les types de données MySQL), attribuer une valeur par défaut, si nécessaire, et nous avons sept cases à cocher pour marquer l'une des propriétés suivantes :

  • PK - Clé primaire
  • NN - Non nul
  • UQ - Unique
  • BIN - Binaire
  • ONU - Non signé
  • ZF - Remplissage zéro
  • IA - Auto-incrémentation

Passez au visuel

C'est une façon d'ajouter nos tableaux, bien que nous puissions également les créer à l'aide des diagrammes. Si nous cliquons sur Ajouter un diagramme icône maintenant, nous allons commencer un nouveau diagramme vide, et ce n'est pas ce que nous voulons. Nous voulons que les deux tables que nous venons de créer soient dans le diagramme.

Si nous allons dans le menu, sélectionnez Modèle/Créer un diagramme à partir des objets du catalogue , nous avons maintenant notre diagramme et sommes prêts à continuer.

Sélectionnez l'icône du tableau à gauche ; le pointeur se transforme en une main avec une petite table. Ensuite, cliquez n'importe où dans le canevas pour créer un nouveau tableau.

Il ne vous reste plus qu'à double-cliquer sur le tableau et l'onglet de l'éditeur apparaît pour modifier le nom, les colonnes, les types, etc., de la même manière qu'auparavant.

Après avoir entré les détails des colonnes pour les nouvelles tables, nous serons prêts à commencer à dessiner les relations.

Dessiner des relations

Dans la barre d'outils verticale à gauche, nous avons six outils disponibles pour créer des relations.

Ne vous inquiétez pas pour le dernier, nous l'expliquerons plus tard. Pour les relations 1:1 et 1:n, nous avons deux types de symboles différents :identifiant et non identifiant. Qu'est-ce que cela signifie ?

Une relation est considérée comme identifiant lorsqu'une table dépend entièrement de l'autre pour exister.

Une relation est considérée comme identifiant lorsqu'une table dépend entièrement de l'autre pour exister. Une ligne de cette table dépend d'une ligne de l'autre table. Un exemple courant est d'avoir une table séparée pour stocker les téléphones des utilisateurs. Il peut être nécessaire de l'avoir dans une autre table, car il peut y avoir plusieurs téléphones pour un utilisateur, mais chaque ligne de cette table dépend entièrement de l'utilisateur - elle appartient à l'utilisateur.

Vous devez être conscient que les relations ont des implications. Si nous voulons créer les tables physiques dans MySQL, les relations doivent être mappées d'une manière ou d'une autre. Il existe quelques règles pour mapper des relations dans des tables :

  • Relations 1:1 . La clé primaire de l'une des tables est incluse en tant que clé étrangère dans l'autre table.
  • Relations 1:n . La clé primaire de la table du côté '1' est ajoutée en tant que clé étrangère dans la table du côté 'n'.
  • Relations n:m . Une nouvelle table (table de jointure) est créée. La clé primaire est composée des clés primaires des deux tables d'origine.

Les relations d'identification sont généralement utilisées pour les tables de jointure créées à partir d'une relation plusieurs-à-plusieurs. Ces nouvelles tables dépendent entièrement des deux tables d'origine.

De plus, dans le cas de relations d'identification 1:1 et 1:n, la clé étrangère introduite fera partie de la clé primaire de cette table, formant une clé primaire composite.

La bonne nouvelle est que MySQL Workbench connaît ces règles mieux que la plupart d'entre nous. Nous dessinons simplement nos lignes, et les clés étrangères ou les tables de jointure seront automatiquement créées. Nous pouvons également choisir de le faire manuellement, comme nous le verrons bientôt.

Pour dessiner une relation, cliquez sur l'icône , puis cliquez sur les deux tables à lier. Pour les relations un-à-plusieurs, cliquez d'abord sur la table latérale "plusieurs", puis sur la table latérale "un". Voyons comment faire pour la relation n:m enseignants-sujets, et pour la relation 1:n enseignants-classes.

Le nom par défaut attribué aux clés étrangères et aux tables de jointure peut être modifié globalement dans Edit/Preferences/Model Tab , ou uniquement pour le projet en cours dans Modèle/Options du modèle .

Si nous ne voulons pas que les tables et les clés étrangères soient générées de cette manière, nous pouvons utiliser le mystérieux "sixième symbole".

Le "sixième symbole" crée une relation à l'aide de colonnes existantes, ce qui signifie que vous avez déjà inclus les clés étrangères nécessaires dans vos tables et créé les tables de jointure nécessaires (tables de mappage n:m). Comme nous avons déjà créé ces tables de jointure, nous n'avons pas besoin de relations n:m ; seul 1:n est disponible.

Une fois toutes nos relations définies, notre diagramme devrait ressembler à ceci :

Sachez que nous avons utilisé la notation MySQL Workbench par défaut pour les diagrammes, mais vous pouvez la modifier dans Model/Object Notation et notation modèle/relation. Voici un exemple de notre modèle en notation classique :

À ce stade, notre modèle est prêt et nous pouvons générer le SQL pour créer la base de données MySQL.

Générer SQL

Sélectionnez Fichier/Exporter/Transférer le script SQL CREATE de l'ingénieur . Nous ne sommes plus qu'à trois écrans de l'assistant de générer notre fichier !


Nous avons même la possibilité de revoir et de modifier le SQL généré avant de l'enregistrer :

Et c'est tout. En cliquant sur Terminer, le script SQL sera généré et enregistré. Maintenant, nous pouvons l'utiliser comme nous le souhaitons. Nous pouvons le charger en utilisant le client mysql en ligne de commande :

mysql> SOURCE scriptName.sql

Ou, nous pouvons utiliser MySQL Workbench pour terminer le travail, en nous connectant à notre serveur MySQL et en exécutant le script.

Connexion à un serveur MySQL

Sélectionnez Base de données/Gérer les connexions dans le menu, puis cliquez sur NOUVEAU .

Si vous ne souhaitez pas définir le mot de passe ici, vous serez invité à le saisir si nécessaire. Cliquez sur "Tester la connexion" pour vérifier si vos paramètres sont corrects, puis cliquez sur Fermer.

Maintenant, pour charger le script, nous allons utiliser l'éditeur SQL. Dans le menu principal, sélectionnez Base de données/Base de données de requête; une fenêtre vous invite à sélectionner une connexion, puis l'onglet de l'éditeur SQL s'ouvre.

Cliquez maintenant sur l'icône de l'éclair pour exécuter le script SQL, et votre base de données sera générée !

Nous aurions également pu générer la base de données MySQL directement à partir du modèle, sans référencer le fichier réel, en utilisant Database/Forward Engineer depuis le menu ; cependant, je trouve utile de générer le script et de l'utiliser ensuite comme je le souhaite.