Modélisation d’un système de gestion de musiques et de films Projet « MaDVDteK » Sophie BELART Master 2 Gestion de l’Information et de la Connaissance Présentation du projet “MaDVDthek” Ma DVDthek permettra à tout utilisateur détenteur d’un PC et d’un serveur (local ou distant) de gérer gratuitement et simplement sa collection de musique et de film. Ce projet proposera d’organiser thématiquement de la musique et des films grâce à une base de données. Cette DVDthèque apparentera au final, plutôt à une « interface » web qu’à un simple logiciel de gestion de données Cette application sera donc utilisable en monoposte comme en serveur du moment que l’utilisateur a fait l’acquisition d’un environnement de travail approprié. Choix du logiciel Nombreux sont les logiciels de modélisation des systèmes d’information, des libres aux propriétaires. Pour réaliser ce projet, nous avons opté pour un logiciel libre sous licence GNU permettant la modélisation MERISE. Plutôt que de prendre le parti de présenter notre travail avec un logiciel propriétaire nous avons préférer nous tourné vers les logiciels libres pour en découvrir leur fonctionnalités. ANALYSE SI en plus d’être un gratuiciel, est simple d’utilisation et ne comporte que les fonctionnalités essentielles à la normalisation MERISE Il faut noter que son principal avantage permet de modéliser notre système d’information selon les deux méthodes vues en cours : MCD et MLD, proposant, en plus, un lexique des attributs. Modélisation MERISE Modèle conceptuel de données MCD Le modèle Les choix des entités On a pris le parti d’aborder de manière simple la modélisation en restreignant au minimum le nombre de table. A ce titre, la gestion de la DVDtheque s’organisera autour de deux onglets celui de la musique (audio) et celui de la vidéo (film). On considère alors qu’un DVD musical appartiendra à la catégorie « film » puisqu’il y a à la fois « image » et « son ». Notre MCD s’organise autour de huit entités (4 pour les chansons et 4 pour les films) : Chanson (film) Nous avons choisi que la collection musicale se ferait par chanson plutôt que par album, car en effet au fil des observations on s’est rendu compte que les utilisateurs gérer les chansons une à une (probablement du fait du téléchargement des chansons). Cette table chanson comportera l’identifiant de la chanson (la clé primaire autoincrémentale) le titre de la chanson, son année de création, le nom de l’interprète mais aussi le genre auquel elle appartient. Chanteur(acteur) Le nom du chanteur sera géré dans une autre table, de manière à pouvoir faire des recherches sur la personne. Nous avons pris le parti de ne pas rassembler dans une même table les chanteurs et acteurs car tous deux ont une fonction bien différentes. Les attributs de cette entité sont : l’identifiant (comme dans toutes les autres tables autoincrémentales), le nom, le prénom de l’interprète mais aussi sa nationalité et date de naissance de manière a pouvoir rechercher des interprètes en fonction de leur origines. Genre musical (cinématographique) Nous avons choisi de créer une table pour les genres de manières à pouvoir également les mettre en autorités et de ce fait pour facilité » les recherches thématiques. Cette entité comporte l’identifiant et bien entendu le nom du genre qui pourra être pop, rock… L’explication des entités pour les films va dans le même sens que pour les chansons. Nous avons choisi de différencier ces deux types de données de manière à pouvoir hiérarchiser les données, et de les gérer par la suite sous deux interfaces différentes. De plus, les entités « producteur », « compositeur », « éditeur » ne sont pas présentes, bien qu’importantes, de manière à rester général d’autant plus que les utilisateurs font des recherches, le plus souvent, par titre, par acteur ou par genre mais ils n’utilisent que peu les autorités secondaires. Les cardinalités On considère que pour être chanteur il faut avoir interpréter au moins une chanson, ce qui paraît logique. Les chansons, quant à elles, doivent avoir au moins un interprète et peut avoir aussi été interprétées plusieurs fois par des personnes différentes. On considère dans notre schéma qu’une chanson n’appartient qu’à un seul genre musical. Alors que bien entendu, ce dernier rassemble une quantité inexorable de titres. Les cardinalités pour la base des films suivent bien entendu la même logique. Modèle Logique de Données MLD Le modèle Les choix Le modèle logique de données permet, grâce aux cardinalités du modèle précédent, de créer des tables intermédiaires rassemblant des clefs primaires et de faire migrer des cles primaires dans d’autres tables. Création tables JOUER et INTERPRETER Ces deux tables permettent d’associer les clefs primaires des tables ACTEUR/CHANTEUR à celle de FILM/CHANSON de manière à pouvoir les lier grâce au nom de leur relation JOUER/INTERPRETER. Ces tables intermédiaires permettent de faire des recherches directes et d’éviter les requêtes « croisées » dans deux tables. L’acteur A joue dans le film 1. Migration de clef dans CHANSON/FILM La clef du genre a migré dans sa table d’association de manière à pouvoir attribuer directement un genre à une chanson. Fonctionnalités de ma “DVDthek” La DVDthèque donne à ses utilisateurs deux fonctions principales, comme la plupart des bases de données, elle permet de saisir du contenu, de l’actualiser et d’effectuer des requêtes dans la base de données (par champs ou tables) Pour créer un système de gestion de base de données en local, il faut nécessairement d’avoir un environnement de travail (tel easy php ou wanp) de manière a pouvoir utiliser un serveur et gérer les tables dans phpmyadmin. Les fonctions de cette DVDthèque reposent sur des algorithmes bien précis qui permettront par la suite une transcription dans un langage de programmation spécifique (dans notre cas SQL et PHP) qui permettra la relation client-serveur. Création des tables Il faut avant toute chose créer sa base de données (en local ou à distance) de manière à pouvoir y introduire les différentes tables. Pour ce faire, il va falloir utiliser le langage SQL, notre table est intitulée DVDthek_db et se trouve sur un serveur distant. Création de tables Pour créer une table il faut utiliser le langage SQL. Avant de commencer tout algorithme il faut ouvrir la balise de commencement « Dbt sql » C’est après que l’on va créer la table. On utilise “CREATE TABLE”, puis on indique le nom de la table. Ensuite il faut lui donner ses différents en précisant leur nature (chaines de caractère, entier…) Pour attribuer une clef primaire il faut ajouter UNIQUE NOT NULL à la suite du nom de l’attribut. On a choisi que le nombre total de caractères pour les chaînes alphanumériques s’élèverait à son maximum c'est-à-dire à 256 caractères. Debutsql CREATE TABLE film (id_film UNIQUE NOT NULL, titre_film varchar(256), annee_film varchar(256), duree_film int, id_genrecine UNIQUE NOT NULL); CREATE TABLE chanson (id_chanson UNIQUE NOT NULL, titre_chanson varchar(256), duree_chanson int, annee_chanson int, id_genremusic uniqueidentifier); CREATE TABLE genre_cinematographique (id_genrecine UNIQUE NOT NULL, nom_genrecine varchar(256)); CREATE TABLE genre_musical (id_genremusic UNIQUE NOT NULL, nom_genremusic varchar(256)); CREATE TABLE chanteur (id_chanteur UNIQUE NOT NULL, nom_chanteur varchar(256), prenom_chanteur varchar(256), nationalite_chanteur varchar(256), naiss_chanteur date); CREATE TABLE acteur (id_acteur UNIQUE NOT NULL, nom_acteur varchar(256), prenom_acteur varchar(256), nationalite_acteur varchar(256), naiss_acteur varchar(256)); CREATE TABLE interpreter (id_chanson UNIQUE NOT NULL, id_chanteur UNIQUE NOT NULL); CREATE TABLE jouer (id_acteur UNIQUE NOT NULL, id_film UNIQUE NOT NULL); Finsql Fonctionnalités de l’application La saisie ou actualisation de données Une fois, les tables crées il va falloir insérer des données. Même si les tables relatives aux chansons et aux films se trouvent dans la même base, leur gestion est assurée par deux interfaces différentes : Films, pour les vidéos et Musique pour les chansons. La saisie des données s’opère de la même manière pour ces deux types de données. Nous prendrons pour exemple dans notre algorithme, les films. Nous n’utiliserons pas dans cet exemple la syntaxe proche du SQL. Insertion de films Lexique Nom_genrecine :varchar (256) Titre_film : varchar (256) Annee_film: int Id_genrecine: int Nom_acteur : varchar (256) Prenom_acteur : varchar (256) Nationalite_acteu :r varchar (256) Datenaiss_acteur<- « 01/01/1964 » Id_film: int Id_acteur : int Debut Db_dvdthek <-Connecter() Genre_cinematographique<- Lire() Ecrire (Genre du film) Thriller<- Lire() Genre_cinematographique <- Ecrire() Nom_genrecine<- « Thriller » film<- Lire() Ecrire (Titre du film) From Hell<- Lire() Ecrire (Année de sortie) 2002<- Lire() Ecrire (Sélectionnez un genre) 1<- Lire() film <- Ecrire() Titre_film<- « From Hell » Annee_film<- « 2002 » Id_genrecine<- « 1 » Acteur <- Lire() Ecrire (Nom de l’acteur) Depp <- Lire() Ecrire (Prénom de l’acteur) Johnny<- Lire() Ecrire (Nationalité) Americain<- Lire() Ecrire (Date de naissance) 01/01/1964<- Lire() Film<-Ecrire() Nom_acteur<-« Depp » Prenom_acteur <- « Johnny » Nationalite_acteur<-« americain » Datenaiss_acteur<- « 01/01/1964 » Interpreter<-Lire() Ecrire (Référence film) 1<- Lire() Ecrire (Référence acteur) 1<- Lire() Interpreter<- Ecrire() Id_film<-« 1 » Id_acteur<-« 1 » Db_DVDthek<- Fermer Fin Explication Avant de créer tout algorithme, il est important de bien définir les variables et leur nature de manière à ne pas faire d’erreur dans la saisie. L’algorithme doit commencer par « début » et se terminer par « fin » Une fois cela fait, il faut se connecter à la base de données et lire chacune des tables afin de pouvoir y insérer des données. Il faut tout d’abord demander à l’utilisateur de saisir ses informations dans le formulaire par le biais de Ecrire et Lire. On ne mentionnera pas la saisie de l’identifiant de la table car elle se fait automatiquement. Une fois cela fait il faut affecter chacune des variables dans les différents tuples de la table. La variable doit être placée ici dans des guillemets pour son insertion Il faut renouveler cette opération pour chacune des tables relatives à la saisie des films. Les informations saisies dans la base de données. Il faut penser à fermer la connexion. En SQL, on utiliserait la syntaxe suivante : INSERT INTO acteur (id_acteur,nom_acteur,prenom_acteur,nationalite_acteur,datenaiss_acteur) VALUES ($id_acteur,$nom_acteur,$prenom_acteur,$nationalite_acteur,$datenaiss_acteur) Requête Par titre Db_DVDthek<- Connecter Chanson<-Lire() $requetetitre<-SELECT $titre_chanson FROM chanson WHERE titre_chanson=’harder,better,faster,stronger’ si titre_chanson= $titre_chanson Alors écrire « Cette chanson appartient à notre collection » Sinon écrire « Nous n’avons pas trouvé ce que vous recherchez » Db_DVDthek <-Fermer() Par auteur Db_DVDthek<- Connecter Chanteur<-Lire() $requete chanteur <-SELECT $nom_chanteur, $prenom_chanteur FROM chanteur WHERE nom_chanteur=’Lalane’, prenom_chanteur=’Francis’ Db_DVDthek <-Fermer() Par genre Db_DVDthek<- Connecter Genre<-Lire() $requetegenre <-SELECT $nom_genrecine FROM genre_cinematographique WHERE nom_genrecine=’Thriller’ Db_DVDthek <-Fermer() Explication Pour toutes ses précédentes requêtes, il faut se connecter à la base de données et sélectionner la table ou les recherches vont être effectuées. L’algorithme ici est très proche des requêtes SQL traditionnelles. On pose ensuite notre requête par $requete… et on demande à afficher, par exemple, la variable $ du champs « genre_cine » dans la table « genre_cinematographique » où le nom du genre correspond à ‘Thriller’.