IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

conception de classes (POO) pour gérer une bdd (MySQL)


Sujet :

PHP & Base de données

  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut conception de classes (POO) pour gérer une bdd (MySQL)
    Bonjour,

    je conçois une application qui va gérer une bdd. J'ai d'abord conçu l'architecture de la bdd. Maintenant, je souhaite concevoir l'architecture en POO qui me permettra de la gérer.
    La question que je me pose : dans la bdd, j'ai utilisé la notion d'héritage.

    La table mère :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE PL_platform(
       PL_ident INT UNSIGNED  AUTO_INCREMENT,
       platform VARCHAR(30) NOT NULL,
       platformowner VARCHAR(30) NOT NULL,
       PRIMARY KEY(PL_ident)
    );

    La table fille :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE AP_application(
       PL_ident INT UNSIGNED,
       AP_ident INT UNSIGNED AUTO_INCREMENT,
       appli_name VARCHAR(30) NOT NULL,
       publisher VARCHAR(30) NOT NULL,
       PRIMARY KEY(PL_ident, AP_ident),
       UNIQUE(AP_ident),
       UNIQUE(appli_name),
       FOREIGN KEY(PL_ident) REFERENCES PL_platform(PL_ident)
    );

    Maintenant, je veux concevoir le code PHP qui gérera cette bdd (SGBD = MySQL). Comme j'utilise la POO, je pense créer une classe PHP pour chaque table SQL. C'est là que je coince. Vais-je utiliser aussi le mécanisme d'héritage POO avec une classe mère du style class Platform avec pour propriétés
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public $platform;
    public $platformowner;
    puis comme classe fille class Application extends Platform avec pour propriétés
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public $appli_name ;
    public $publisher ;
    Autrement dit, reproduire uniquement les données informatives mais ne pas s'occuper des données techniques comme la clé étrangère ?

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    La notion d'héritage n'existe pas en SQL. Ce sont des relations. Pour parler d'héritage il faudrait qu'une table A récupère les champs d'une table B ce qui n'est pas possible, donc rien à voir.
    Ici une table A va dépendre d'une table B ce qui n'est pas du tout la même chose.
    En terme de conception (de code) on appel ca une composition => l'une des classe ne peut pas vivre sans l'autre.

    Concernant ta conception , tu as 2 grandes écoles :

    - Soit tu fais une modélisation complète , donc une classe par table + des classes de requétage/manipulation des données. Le tout ne retourne que des objets. C'est conceptuellement plus juste , mais plus long et plus lourd. (c'est la que les ORM entrent en jeu)
    - Soit tu ne fais que des classes de requêtage qui vont retourner les données généralement sous forme de tableaux. Plus rapide et facile à utiliser mais moins "porpre".

    Donc dans ton exemple tu aurais probablement quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Platform
    {
        private int $id;
        private string $plateform;
        private string $platformowner;
    }
     
    class Application
    {
        private Platform $platform;
        private int $id;
        private string name;
        // etc
    }
    Quand on veux travailler comme ca , en général on ne réinvente pas la roue et on passe par un ORM (doctrine par exemple) qui va s'occuper de toute la complexité
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    En effet, quand je parlais d'héritage dans les bdd, il s'agit en fait d'une relation avec une clé étrangère...

    Bon, je ne connais pas du tout Doctrine. Peux-tu m'indiquer un tuto (abordable) ?

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Je ne pourrais pas te conseiller de tuto , je n'utilise pas d'ORM. Je trouve ca trop peu performant pour le gain que ca apporte.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Ah bon, alors plutôt qu'apprendre (je ne sais trop comment) un nouvel outil, je pense coder tout par moi-même, et probablement, revenir ici...

Discussions similaires

  1. [MySQL] meilleure solution pour alimenter une bdd mysql
    Par Zikas-r dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 27/02/2009, 14h55
  2. [Conception]structure de BDD pour gérer une arborescence
    Par petitours dans le forum Modélisation
    Réponses: 11
    Dernier message: 13/04/2007, 16h58
  3. Réponses: 3
    Dernier message: 05/10/2006, 17h15
  4. Utilisation de classes pour gérer une table
    Par mathias dans le forum Access
    Réponses: 11
    Dernier message: 30/08/2006, 16h57
  5. Réponses: 3
    Dernier message: 09/10/2005, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo