truc2geek

2012/06/05

Carnet d’Adresses, part 1 : début projet

Filed under: Carnet d'adresses (Python), Projets, Python, SQLite — Étiquettes : , , , — truc2geek @ 22:02

présentation du projet

Maintenant qu’on a vu un peu comment utiliser SQLite et Python, on va créer une application en mode console qui utilise les deux.
On va prendre un exemple simple et concret : un carnet d’adresses.
Le but sera de créer une application aussi intuitive que possible.
Le fait de se limiter au mode console va compliquer la tâche.
On va faire simple : étape par étape.

expression du besoin

l’application devra permettre de gérer ses contacts, donc une liste de personnes, avec pour chacune ses coordonnées.
Il sera possible de créer plusieurs numéros de téléphone par personne : le fixe du domicile, le portable, le fixe professionnel etc.
on doit aussi pouvoir rattacher plusieurs emails aux personnes.
on pourra créer des groupes de contacts : famille, amis, collègues, ex-collègues, voisins…
chaque contact pourra faire partie de plusieurs groupes : un collègue peut être aussi un ami ou un membre de la famille, etc.
on pourra effectuer des recherches : par nom, prénom, groupe, numéro de téléphone, email, code postal, ville.

besoin technique

au niveau de la Base de Données, on aura une table pour stocker les personnes, une autre pour stocker les groupes de personnes, et enfin une autre qui servira à faire le lien : rattacher chaque personne à un ou plusieurs groupe(s). Ca nous fait déjà 3 tables.

pour les adresses : on pourrait simplement créer les champs nécessaires dans la table des personnes, sauf que plusieurs personnes de notre carnet d’adresse peuvent avoir la même adresse, et accessoirement une personne peut avoir plusieurs adresses : on va donc les stocker dans une autre table.

concernant les numéros de téléphone : certaines personnes en ont un voire aucun, d’autres en ont 3 ou 4 : on va donc les stocker dans une autre table, et idem pour les emails.

Les types de numéros de téléphone (fixe domicile, fixe professionnel etc) seront stockés dans une table.

on a donc 7 tables, qu’on peut nommer ainsi :
T_d_Personne
T_d_Adresse
T_d_Groupe
T_p_Groupe
T_lst_Type_Numero
T_d_Numero
T_d_Email

« T_d_ » signifie : table « données » : ici les adresses, les personnes sont le coeur des données de l’application
« T_p_ » signifie : table « périmètre » : pour une table qui ne fait que lier entre elles les données de deux tables : ici lier les personnes aux groupes
« T_lst_ » signifie : table « liste » : pour une table contenant un nombre limité d’enregistrements qui changeront peu ou jamais : c’est adapté pour la liste des types de numéros de téléphone (d’ailleurs après réflexion, la table contenant les groupes pourrait aussi être vue comme une table « liste » plutôt qu’une table « données »)

composition des tables

on va maintenant définir la structure de chaque table :

T_d_Adresse
id_adresse
adresse1
adresse2
adresse3
cp
ville
crea
maj

T_d_Personne
id_personne
prenom
nom
id_adresse
crea
maj

T_d_Groupe
id_groupe
nom
nb_personne
crea
maj

T_p_Groupe
id_p_groupe
id_groupe
id_personne
crea
maj

T_lst_Type_Numero
id_type_numero
nom
crea
maj

T_d_Numero
id_numero
id_personne
id_type_numero
numero
info
crea
maj

T_d_Email
id_email
id_personne
email
info
crea
maj

les champs [crea] et [maj] sont accessoires, ils stockeront la date de création et de dernière mise à jour de chaque enregistrement.

1er fichier d’instructions SQL : créer la base

vous pouvez le télécharger ici
Pour commencer, on va créer uniquement les tables, et pas encore de vues.
On peut écrire des commentaires dans un fichier d’instructions SQL, en écrivant deux tirets (« le tiret du 6 »)

— ——————————————————————————————————————————–
— isql1.txt
— créer les tables
— ——————————————————————————————————————————–

— créer la table des adresses

CREATE TABLE T_d_Adresse (
id_adresse INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
adresse1 VARCHAR (80) NOT NULL,
adresse2 VARCHAR (80),
adresse3 VARCHAR (80),
cp VARCHAR (5),
ville VARCHAR (80),
crea DATETIME NOT NULL,
maj DATETIME NOT NULL
);

— créer la table des personnes

CREATE TABLE T_d_Personne (
id_personne INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
prenom VARCHAR (25) NOT NULL,
nom VARCHAR (40),
id_adresse INTEGER NOT NULL,
crea DATETIME NOT NULL,
maj DATETIME NOT NULL,
FOREIGN KEY (id_adresse) REFERENCES T_d_Adresse(id_adresse)
);

— créer la table des groupes

CREATE TABLE T_d_Groupe (
id_groupe INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
nom VARCHAR (30) NOT NULL,
nb_personne INTEGER NOT NULL,
crea DATETIME NOT NULL,
maj DATETIME NOT NULL
);

— créer la table qui rattache les personnes aux groupes

CREATE TABLE T_p_Groupe (
id_p_groupe INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
id_groupe INTEGER NOT NULL,
id_personne INTEGER NOT NULL,
crea DATETIME NOT NULL,
maj DATETIME NOT NULL,
FOREIGN KEY (id_groupe) REFERENCES T_d_Groupe(id_groupe),
FOREIGN KEY (id_personne) REFERENCES T_d_Personne(id_personne)
);

— créer la table des types de numéros de tél/fax (fixe domicile, fixe bureau, portable bureau…)

CREATE TABLE T_lst_Type_Numero (
id_type_numero INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
nom VARCHAR (30) NOT NULL,
crea DATETIME NOT NULL,
maj DATETIME NOT NULL
);

— créer la table des numéros de téléphone/fax

CREATE TABLE T_d_Numero (
id_numero INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
id_personne INTEGER NOT NULL,
id_type_numero INTEGER NOT NULL,
numero VARCHAR (25) NOT NULL,
info VARCHAR (50),
crea DATETIME NOT NULL,
maj DATETIME NOT NULL,
FOREIGN KEY (id_personne) REFERENCES T_d_Personne(id_personne),
FOREIGN KEY (id_type_numero) REFERENCES T_lst_Type_Numero(id_type_numero)
);

— créer la table des emails

CREATE TABLE T_d_Email (
id_email INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
id_personne INTEGER NOT NULL,
email VARCHAR (70) NOT NULL,
info VARCHAR (50),
crea DATETIME NOT NULL,
maj DATETIME NOT NULL,
FOREIGN KEY (id_personne) REFERENCES T_d_Personne(id_personne)
);

2e fichier d’instructions SQL : alimenter la BD

ce fichier est disponible ici.

exécuter les fichiers sql et vérifier

On a posé les bases du projet, on a une première version de la BD : la prochaine étape sera le code d’un squelette de l’application.

Publicités

Laisser un commentaire »

Aucun commentaire pour l’instant.

RSS feed for comments on this post. TrackBack URI

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Propulsé par WordPress.com.

%d blogueurs aiment cette page :