Aller au menu - Aller au contenu

Icône PostgreSQL

Mise à jour : 17/06/2009
Difficulté : Facile Facile Creative Commons BY-NC-SA
3 526 visites depuis 7 jours, dont 238 sur ce chapitre classé 45/786
Alors, maintenant, nous allons aborder la prise en main de cet outil qu'est PostgreSQL !
Dans ce chapitre, nous verrons comment créer une base de données, des tables, ajouter des contraintes de clés et d'intégrités... Enfin bref, tout ce dont vous allez avoir besoin pour suivre au mieux ce tutoriel. Ceci, bien sûr, sans rentrer dans les détails : c'est un tuto sur JDBC, pas sur PostgreSQL ou sur SQL !

Bon, il y a déjà du taf, mine de rien...
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Préparer sa BDD

Bon, vous êtes connectés à votre BDD préférée et ce n'est pas parce que j'ai choisi PostgreSQL que vous avez dû en faire autant...
Cependant, celles et ceux qui n'ont pas fait le même choix que moi peuvent aller directement vers le sous-chapitre sur SQL (sauf s'ils ont déjà les bases, qu'ils aillent dans ce cas directement au chapitre suivant...).

Déjà, les bases de données servent à stocker des informations, ça, vous le savez ! :D
Mais ce que vous ignorez peut-être, c'est que, pour ranger correctement nos informations, nous allons devoir analyser celles-ci...
Ce tuto n'est pas non plus un tuto sur l'analyse combinée avec des diagrammes entités-associations... Dans le jargon, c'est ce dont on se sert pour créer des BDD, enfin, pour organiser les informations (tables et contenu de tables) !
Nous allons juste poser un thème et nous ferons comme si vous saviez faire tout ça ! :-°
Pour ceux que la réalisation de modèles entités-associations intéressent, vous pouvez faire un tour ici.

Voilà : pour notre base de données, nous allons gérer une école, dont voici les caractéristiques :
  • cette école est composée de classes ;
  • chaque classe est composée d'élèves ;
  • chaque classe à un professeur de chaque matière dispensée par cette école ;
  • un professeur peut enseigner plusieurs matières et exercer ses fonctions sur plusieurs classes.


Voilà le point ZÉRO de toute base de données !

Vous vous rendez compte qu'il y a beaucoup d'informations à gérer. Bon, en théorie, nous devrions faire un dictionnaire des données, voir à qui appartient quelle donnée, poursuivre avec une modélisation façon MCD (Modèle Conceptuel de Données) et simplifier le tout suivant certaines règles pour terminer avec un MPD (Modèle Physique de Données). Nous allons raccourcir le processus et je vais fournir un modèle tout fait, que je vais tout de même vous expliquer... :-°

Image utilisateur

Tous ces beaux éléments seront nos futures tables. De plus, les attributs dans celles-ci se nomment des "champs".

Vous pouvez voir que tous les acteurs mentionnés se trouvent symbolisés dans ce schéma (classe, professeur, élève...). Vous constaterez que ces acteurs ont un attribut nommé 'id', ceci correspond à son identifiant : c'est un champ de type entier qui s'incrémentera pour chaque nouvelle entrée, c'est aussi grâce à ce champ que nous créons des liens entre nos acteurs.

Oui... Vous avez remarqué que j'avais colorié des tables en bleu. ^^
Ces tables ont toutes un champ qui a une spécificité : un champ dont le nom se termine par '_k'.
D'abord, vous devez savoir que la flèche signifie 'a un', de ce fait, un élève 'a une' classe !

Bon, on te suit, mais pourquoi les autres tables ont deux champs comme ça ?

C'est simple, c'est parce que je vous ai dit qu'un professeur pouvait exercer plusieurs matières : dans ce cas, nous avons besoin de ce qu'on appelle une table de jointure.
Ainsi, nous pouvons dire que tel professeur exerce telle ou telle matière et qu'une association prof-matière est assignée à une classe ! ;)
La donnée que nous utiliserons pour lier des tables n'est autre que l'identifiant : id.

De plus - difficile de ne pas avoir vu ça - chaque champ à un type (entier, double, date, boolean...).
Nous avons tout ce dont nous avons besoin pour construire notre BDD !

Créer la BDD

Pour cette opération, rien de plus simple ! :D
pgAdmin met à votre disposition un outil qui facilite la création de BDD et de tables (créer ses BDD et ses tables à la mano, avec SQL, c'est un peu fastidieux...).

Pour créer une nouvelle base de données, il vous suffit de faire un clic droit sur "Base de données" :

Image utilisateur


Vous devriez arriver sur cette pop-up :

Image utilisateur


Renseignez le nom de la base de données et choisissez l'encodage UTF-8. Cet encodage correspond à un jeu de caractères étendu qui autorise les caractères spéciaux !
Une fois ceci fait, vous devriez avoir quelque chose comme ça :

Image utilisateur


Vous pouvez voir votre nouvelle base de données ainsi que le script SQL permettant de créer cette base.

Il ne nous reste plus qu'à créer les tables avec le bon type de données...
Même procédure que pour la séquence, un clic droit sur le noeud "table" cette fois, comme ceci :

Image utilisateur


Créer ses tables

Nous allons maintenant nous attaquer à la création de nos tables afin de pouvoir travailler...
Je vais vous montrer comment faire une table simple, histoire de... Et, pour les plus fainéants, je vous fournirai le script SQL qui finira la création des tables. ;)

Nous commencerons par la table "classe", vu que c'est l'une des tables qui n'a besoin d'aucun lien vers une autre table... ;)
Comme dit plus haut, il vous suffit de faire un clic droit sur "Table"

Ensuite, PostgreSQL vous demande des informations sur votre future table :
  • son nom ;
  • le nom de ses champs ;
  • le type de ses champs ;
  • ...


Ici, vous voyez le moment où vous devez renseigner le nom de votre table.

Image utilisateur


Ensuite, vous ajouterez des champs (j'ai ajouté des préfixes à mes champs pour ne pas avoir trop d'ambiguïté dans mes requêtes SQL) :

Image utilisateur

Image utilisateur


Le champ "cls_id" est de type "serial" afin que celui-ci utilise une séquence. Nous lui ajouterons en plus une contrainte de clé primaire.


Ce champ est un "character varying" de taille 64 : ce champ pourra donc contenir 64 caractères.

Nous mettons maintenant la contrainte de clé primaire sur notre identifieur :

Image utilisateur


Vous avez vu comment on crée une table avec PostgreSQL, mais je ne vais pas vous demander de faire ça pour chacune d'entre elles. :-°
Je ne suis pas vache à ce point... Nous devons voir comment on utilise les BDD avec Java, pas avec le SGBD...



Cliquez sur "Ajouter".

Image utilisateur


Choisissez la colonne "cls_id" et cliquez sur "Ajouter".
Validez le tout.

Maintenant le deuxième champ :

Image utilisateur


Voici le code SQL de cette création de table :

Image utilisateur


Je ne vais pas vous faire créer toutes les tables de cette manière... Le tuto est censé vous apprendre à utiliser les BDD avec Java...

Voici donc un fichier contenant le script SQL de création des tables restantes ainsi que leurs contenus.
Sympa, le gars. ^^

Le dit fichier est dans une archive, pensez à la décompresser avant... :-°


Il ne vous reste plus qu'à ouvrir le fichier avec PostgreSQL en allant dans l'éditeur de requêtes SQL :

Image utilisateur


Vous pouvez à présent ouvrir le fichier que je vous ai fourni en faisant "Fichier / Ouvrir" et choisir le fichier .sql

Image utilisateur


Maintenant, exécutez la requête en cliquant sur ce bouton (vous pouvez aussi appuyer sur F5) :

Image utilisateur


Fermez l'éditeur de requête. Vous avez toute la base créée et, en plus, il y a des données. :magicien:

Image utilisateur


Je vous retrouve donc au prochain chapitre afin de commencer notre aventure.
Voilà, les bases sont posées !
Nous allons pouvoir attaquer sévère dans JDBC... Let's go les ZérOs ! :pirate:
Chapitre précédent Sommaire Chapitre suivant

Partager

9 commentaires pour "PostgreSQL"
Note moyenne : 3.34 / 4 (178 votes)
Pseudo Commentaire
Hors ligne eTouche # Posté le 20/07/2009 à 14:14:22
OpenSource est la source.
Avatar

Mec mec mec je te jure, merci pour ton travail, on voit que tu as du talent en programmation.

Mais Mais Mais....Pourquoi ne pas utiliser des trucs comme Mateo... Wamp ou encore Mamp.

Puis y a des incohérences comme "Oui... Vous avez remarqué que j'avais colorié des tables en bleu."
Et, plus bas on remarque que les tables sont au nombre de 6 contre 4 colorié en bleu.*


*Ok peut être et sûrement, tu parles de la relation entre les classes et les tableaux, mais là si j'avais pas vu ton screenshot g t foutu et incapable de refaire la base de données... c pas du tout clair quand tu finis de lire la page.



En plus, c'est super gentil de mettre à dispo la base de donnée, mais elle marche pas avec les autres programme SQL (ici pour moi PHPMyAdmin via MAMP)...


Voici mon erreur...

Code : SQL
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Error

SQL query:

--
-- PostgreSQL database dump
--
-- Started on 2009-05-19 07:01:25
SET client_encoding = 'UTF8';

MySQL said: Documentation
#1193 - Unknown system variable 'client_encoding'


J'ai pas le temps de chercher sur Google pour ça, vue que ça m'a pris moins d'en refaire une moi même.

Enfin voila, la base de donnée ne marche pas chez moi et pourtant je viens de tester une autre importation d'une base de donnée provenant d'une autre source et qui est utiliser pour un grand forum (TERROR-CLAN.be - merci Skizo.) et l'importation ce passe nikel...

Bref, comme toujours, on peut pas t'en vouloir et je t'assure que je me remets à mort en question et que je relis tes tutos 2 voir 3 fois, encore en ce moment je me dis : "c'est pas possible c'est moi qui suis trop trop con...ou bien ?" :euh:

Merci pour ton temps.

- OPEN SOURCE EST LA SOURCE DE NOTRE SAVOIR -
le partage du savoir nous amene jusqu'ici


Je tape sur un clavier QWERTY donc pas d'accent sur le clavier => idem dans mes phrases :-°
 
Hors ligne sidouo # Posté le 24/12/2009 à 02:03:03

j'ai un probleme c'est que je trouve pas (Table), je trouve pas table pour cliquer au dessus et creer une nouvelle table, j'esay ave nouveaucschema?
Hors ligne mor02 # Posté le 29/12/2009 à 15:35:45
mor02
Avatar

Études : Faculté des sciences et techniques Marrakech

Pour moi la requête s'exécute mais je trouve pas les tables . merci c'est excellent travail
Hors ligne cowboy. # Posté le 23/02/2010 à 23:51:08
qui risque rien gagne rien
Avatar

bonjour cysboy
merci pour tout, je signal que ca marche,j'ai pu reconstituer ma base ECOLE avec le script que vous avez eu la gentillesse d'envoyer. mais j'ai une remarque:<question></question>admetton que je souhaites creer ma propre base?
donc il est tres precieux de connaitre comment faire les jointure 1-->1 et 1--->infini

plus simplement il serait souhaitable que l'on ait une idée sur comment faire .sinon le code SQL de la requete qui execute ces relation de table. et merci infiniment pour tous vos effort

je sais que votre but est le tuto qui suit : cad comment faire joue joue avec tout ca! mais ma remarque est à sa place a mon humble avis a+
tout est beau dans l'info comme vous dites cysboy

Grand Zero que je suis ! :waw: en grandissant ,je serai un petit zeroo! .... puis je recommecerai a zero :p
 
Hors ligne molinadiaz # Posté le 11/11/2010 à 17:51:50

Tutoriel bien construit mais qui s'adresse par défaut aux utilisateurs Windows (cfr. interface pgAdmin3). A l'occasion, ça pourrait être sympa de le mettre à jour pour ceux qui tournent sous Linux, surtout que PostgreSQL est un projet libre et open source :) Même s'il est précisé que ce n'est pas un tuto sur PostgreSQL :p

Aussi, petite correction : il faudrait avertir aux lecteurs de supprimer la table "classe" avant d'exécuter la requête du fichier .sql, sinon erreur en pleine figure (table "classe" existante !)

@ bientôt :)
 

Voir tous les commentaires