Extraction de données sur un site internet
II Modélisation des informations Le tutorial va traiter trois façons d'exploiter les informations collectées. Elles seront implémentées dans l'application finale. Ces méthodes sont :
1) texte C'est un format non structuré. Le format texte n'existe que pour vérifier que la collecte s'est passée correctement. Exemple de sortie texte :
2) le flux XML L'intérêt du flux XML réside dans sa portabilité. Les informations sont structurées et l'ajout ultérieur de champs est aisé. L'importation du flux dans n'importe quel SGBD est facile.
3) la base de données 3-1) Présentation de la nomenclature La nomenclature choisie pour le nommage des tables et champs est celle que j'ai mise au point et utilise depuis des années. En voici brièvement les règles principales :
3-2) MySQL Dans le présent tutorial, le choix de la base s'est porté sur MySQL ; en effet, la notoriété du couple MySQL / Php n'est plus à faire. La structure la plus simple est la suivante : Il est à noter que la base a été normalisée. Il n'existe pas de référence d'acteurs ou de genres dans la table FILM. Les relations sont faites au moyen des tables associatives ACTEUR_FILM et GENRE_FILM. Les films : CREATE TABLE FILM ( ID_FILM int(11) NOT NULL auto_increment, TITRE varchar(255) NOT NULL default '', PAYS_ID int(11) NOT NULL default '0', ANNEE date default NULL, DUREE int(11) NOT NULL default '0', DATE_SORTIE date default NULL, REALISATEUR_ID int(11) NOT NULL default '0', SYNOPSIS text NOT NULL, PRIMARY KEY (ID_FILM), KEY TITRE (TITRE), KEY PAYS_ID (PAYS_ID), KEY DUREE (DUREE), KEY DATE_SORTIE (DATE_SORTIE), KEY REALISATEUR_ID (REALISATEUR_ID), KEY ANNEE (ANNEE) ) TYPE=MyISAM; Les acteurs : CREATE TABLE ACTEUR ( ID_ACTEUR int(11) NOT NULL auto_increment, NOM_ACTEUR varchar(255) NOT NULL default '', PRIMARY KEY (ID_ACTEUR) ) TYPE=MyISAM; Les genres : CREATE TABLE GENRE ( ID_GENRE int(11) NOT NULL auto_increment, NOM_GENRE varchar(255) NOT NULL default '', PRIMARY KEY (ID_GENRE) ) TYPE=MyISAM; Une table associative entre les acteurs et les films : CREATE TABLE ACTEUR_FILM ( ACTEUR_ID int(11) NOT NULL default '0', FILM_ID int(11) NOT NULL default '0', KEY ACTEUR (ACTEUR_ID,FILM_ID) ) TYPE=MyISAM; Une table associative entre les genres et les films : CREATE TABLE GENRE_FILM ( GENRE_ID int(11) NOT NULL default '0', FILM_ID int(11) NOT NULL default '0', KEY GENRE (GENRE_ID,FILM_ID) ) TYPE=MyISAM; Le pays d'origine du film : CREATE TABLE PAYS ( ID_PAYS int(11) NOT NULL auto_increment, NOM_PAYS varchar(255) NOT NULL default '', PRIMARY KEY (ID_PAYS) ) TYPE=MyISAM; Le réalisateur du film : CREATE TABLE REALISATEUR ( ID_REALISATEUR int(11) NOT NULL auto_increment, NOM_REALISATEUR varchar(255) NOT NULL default '', PRIMARY KEY (ID_REALISATEUR) ) TYPE=MyISAM; 3-3) variante avec MySQL InnoDB Cette variante ne sera pas traitée dans ce tutorial, elle est juste donnée à titre d'exemple. Les tables innoDB permettent de travailler avec des clefs étrangères. Ainsi, l'intégration de clefs étrangères dans les tables associatives ACTEUR_FILM et GENRE_FILM permettent d'éviter les suppressions en cascade "à la main" lors des opérations de suppression de films par exemple. Dans mon environnement, la base de données s'appelle DVD. Les tables FILM, ACTEUR et GENRE changent de type : remplacer dans le CREATE TABLE : TYPE=InnoDB La table ACTEUR_FILM devient : CREATE TABLE ACTEUR_FILM ( ACTEUR_ID int(11) NOT NULL default '0', FILM_ID int(11) NOT NULL default '0', KEY ACTEUR_ID (ACTEUR_ID), KEY FILM_ID (FILM_ID), FOREIGN KEY (`ACTEUR_ID`) REFERENCES `DVD.ACTEUR` (`ID_ACTEUR`) ON DELETE CASCADE, FOREIGN KEY (`FILM_ID`) REFERENCES `DVD.FILM` (`ID_FILM`) ON DELETE CASCADE ) TYPE=InnoDB; La table GENRE_FILM devient : CREATE TABLE GENRE_FILM ( GENRE_ID int(11) NOT NULL default '0', FILM_ID int(11) NOT NULL default '0', KEY GENRE_ID (GENRE_ID), KEY FILM_ID (FILM_ID), FOREIGN KEY (`GENRE_ID`) REFERENCES `DVD.GENRE` (`ID_GENRE`) ON DELETE CASCADE, FOREIGN KEY (`FILM_ID`) REFERENCES `DVD.FILM` (`ID_FILM`) ON DELETE CASCADE ) TYPE=InnoDB;
|