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

 MySQL Discussion :

Base de donnees MySql


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut Base de donnees MySql
    Bonjour,

    Je voudrais créer un base de donner résultat. Cette base contiendra des comparaisons entres plusieurs personnes. Les résultats sont toujours sur 100%.
    La comparaison peut s'effectuer entre 2 personnes minimum et 10 personnes maximum.

    Je vais prendre comme exemple une actrice A qui peut être comparé à 2,3,4,8,10 autres actrices, toutes les comparaisons sont possibles. L'ordre de comparaison n'a aucune importance. Ce qui représente pour une seule actrice une centaine de comparaisons donc une centaine de résultats.

    Exemple concret:

    Comparaison entre l'actrice 2 et 6

    actrice 2 = 60 %
    actrice 6 = 40 %

    Comparaison entre l'actrice 2, 6 et 8

    actrice 2 = 32 %
    actrice 6 = 28 %
    actrice 8 = 40 %


    On peut constater sur l'exemple que le résultat à changé puisque nous avons ajouté une nouvelle personne et que le résultat est sur 100%.

    Important : Pour extraire les données il ne doit pas y avoir de calcul juste un système de champs pour stocker toutes ces informations. Je ne veux pas de programme pour faire un sondage je veux juste de l'aide pour créer ma base. Dans l'extrême les données pourraient même être collectées de façon manuelle et ensuite saisies pour être incorporé dans les tables.

    Voila ce que j'ai commencé à écrire mais c'est loin d'être terminé. Je n'ai pas mis les contraintes. La base doit être logique car ensuite je devrait l'exporter en XML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    -- Création de la base
     
    CREATE DATABASE `RESULTAT` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE RESULTAT;
     
     
    -- Création de la table Categorie
     
    CREATE TABLE `categorie` (
    `ID_Categorie` int(11) NOT NULL auto_increment,
    `Nom_Categorie` varchar(255) NOT NULL default '',
    PRIMARY KEY (`ID_Categorie`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
     
    -- Création de la table Disipline
     
    CREATE TABLE `disipline` (
    `ID_disipline` int(11) NOT NULL auto_increment,
    `Nom_discipline` varchar(255) NOT NULL default '',
    PRIMARY KEY (`ID_disipline`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
     
    -- Création de la table Individus
     
    -- Position_ID sert à positionner les individus de 1 à 10 pour les récupérer dans la table comparaison et connaitre le nom des sélections par exemple le noms des actrices comparées
     
     
    CREATE TABLE `individus` (
    `ID_ individus` int(11) NOT NULL auto_increment,
    `Nom_ individus` varchar(255) NOT NULL default '',
    `Position_ID` int(2) NOT NULL,
    PRIMARY KEY (`ID_ individus`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
     
    -- Création de la table Comparaison
     
    CREATE TABLE `comparaison` (
    `ID_comparaison` int(11) NOT NULL auto_increment,
    `selection1` enum('O','N') default 'N',
    `Nom_ selection1` varchar(255) NOT NULL,
    `selection2` enum('O','N') default 'N',
    `Nom_ selection2` varchar(255) NOT NULL,
    `selection3` enum('O','N') default 'N',
    `Nom_ selection3` varchar(255) NOT NULL,
    `selection4` enum('O','N') default 'N',
    `Nom_ selection4` varchar(255) NOT NULL,
    `selection5` enum('O','N') default 'N',
    `Nom_ selection5` varchar(255) NOT NULL,
    `selection6` enum('O','N') default 'N',
    `Nom_ selection6` varchar(255) NOT NULL,
    `selection7` enum('O','N') default 'N',
    `Nom_ selection7` varchar(255) NOT NULL,
    `selection8` enum('O','N') default 'N',
    `Nom_ selection8` varchar(255) NOT NULL,
    `selection9` enum('O','N') default 'N',
    `Nom_ selection9` varchar(255) NOT NULL,
    `selection10` enum('O','N') default 'N',
    `Nom_ selection10` varchar(255) NOT NULL,
    PRIMARY KEY (`ID_comparaison`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
     
    -- Création de la table Resultat
     
    CREATE TABLE `resultats` (
    `ID_Resultat` int(11) NOT NULL auto_increment,
    `ID_comparaison` int(11) NOT NULL default '0',
    `Resultat1` decimal(10,0) NOT NULL default '0',
    `Resultat2` decimal(10,0) NOT NULL default '0',
    `Resultat3` decimal(10,0) NOT NULL default '0',
    `Resultat4` decimal(10,0) NOT NULL default '0',
    `Resultat5` decimal(10,0) NOT NULL default '0',
    `Resultat6` decimal(10,0) NOT NULL default '0',
    `Resultat7` decimal(10,0) NOT NULL default '0',
    `Resultat8` decimal(10,0) NOT NULL default '0',
    `Resultat9` decimal(10,0) NOT NULL default '0',
    `Resultat10` int(11) decimal(10,0) NOT NULL default '0',
    `Date_resultat` datetime NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY (`ID_Resultat`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    Je me demandais si dans la table comparaison je pouvais ajouter un champs du type association. Ce champs serait composer de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    `nbr_association` int(11) NOT NULL.
    le calcul ce ferait comme en binaire 0 pour non et 1 pour oui et cette suite consulterais le résultat dans la table résultat

    exemple 1 :

    actrice 1, actrice 6, actrice 9

    nbr_association = 1000010010
    Table résultat

    actrice 1 = 40
    actrice 2 = null
    actrice 3 = null
    actrice 4 = null
    actrice 5 = null
    actrice 6 = 35
    actrice 7 = null
    actrice 8 = null
    actrice 9 = 25
    actrice 10 = null

    exemple 2 :

    actrice 4, actrice 6, actrice 8

    nbr_association = 0001010100
    Table résultat

    actrice 1 = null
    actrice 2 = null
    actrice 3 = null
    actrice 4 = 28
    actrice 5 = null
    actrice 6 = 35
    actrice 7 = null
    actrice 8 = 37
    actrice 9 = null
    actrice 10 = null

    Merci de votre aide et de vos lanternes

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    C'est une très mauvaise idée, et une très mauvais pratique, de mettre des données tabulaires (non scalaires) dans une table de base de données.
    Il te faut donc, tout d'abord, repenser la table comparaison en tenant compte de cet impératif.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Bonjour Maljuna Kris,

    je viens de chercher sur internet comment intégrer des données scalaires, cela n'est pas très simple. Pour l'instant je ne vois pas comment faire. Ma base de données sera Mysql, une fois créée, je devrais l'extraire en un fichier XML pour quelle soit consulté par un site Internet Indépendant.

    je ne sais pas si cela est possible avec du scalaire ?

    Merci de tes conseils
    Je reposte ton message privé ici, car le but d'un forum c'est que chacun puisse participer, bénéficier, corriger, amender les propos des uns et des autres.
    Pour ton problème la table comparaison devrait ressembler à quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE `comparaison` (
    `ID_comparaison` int(11) NOT NULL,
    `artiste_id` int(11) NOT NULL,
    PRIMARY KEY (`ID_comparaison`,`artiste_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
    Chaque artiste qui participe à des comparaisons aura une ligne dans cette table pour chaque comparaison.
    L'export en XML se construit à partir du résultat d'une requête, il ne doit pas contraindre le schéma de la base.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut Toujours bloqué
    Je comprend pas comment faire la comparaison entre plusieurs personnes. Si j'effectue une comparaison entre une personne A et une personne B, j'obtiens un résultat pour A et B, si 5 minutes plus tard j'effectue une comparaison sur les personnes A, B, C j'obtiens des résultats différents pour A, B même si les personnes sont toujours identiques puisque le résultat est toujours sur 100%. Je ne dois surtout pas faire de calcul, je dois posséder un système qui me permettent de stocker tous les résultats.

    Le principe de fonctionnement est un peu celui-ci :

    dix personnes les une près des autres avec des cases à cocher et en fonction de ces cases j'affiche le résultat, ce qui représente des centaine de résultats différents.

    Merci de votre aide je bloque vraiment sur cette table

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut
    Bonjour,

    Voici comment j'ai décomposé la table résultat par rapport à l'exemple 1 et 2 d'un précédent message. Le résultat s'affiche grâce à Id_comparaison

    id_resultats : 1
    id_comparaison : 1
    id_personne : 1
    resultat : 40
    -----------------
    id_rsultats : 2
    id_comparaison : 1
    id_personne : 6
    resultat : 35
    -----------------
    id_resultats: 3
    id_comparaison : 1
    id_personne : 9
    resultat : 25

    Et pour l'exemple 2 :
    id_resultats : 4
    id_comparaison : 2
    id_personne : 4
    resultat : 28
    -----------------
    id_resultats : 5
    id_comparaison : 2
    id_personne : 6
    resultat : 35
    -----------------
    id_resultats : 6
    id_comparaison : 2
    id_personne : 8
    resultat : 37


    Pour la table comparaison, je suis toujours perdu, j'ai essayé de créer un positionnement de l'individu (table individus) pour permettre de savoir quels sont les individus comparés. Je partais du principe que la comparaison pouvait s'effectuer que sur 10 individus d'où la présence de booleen dans la table comparaison. J'ai l'impression de ne pas avancé cette table comparaison me pose beaucoup de soucis.


    Voici mon code :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    DROP DATABASE IF EXISTS RESULTAT;
     
    CREATE DATABASE IF NOT EXISTS RESULTAT;
    USE RESULTAT;
    # -----------------------------------------------------------------------------
    #       TABLE : RESULTATS
    # -----------------------------------------------------------------------------
     
    CREATE TABLE IF NOT EXISTS RESULTATS
     (
       ID_RESULTATS BIGINT(11) NOT NULL AUTO_INCREMENT ,
       ID_COMPARAISON_APPARTIENT BIGINT(11) NOT NULL  ,
       ID_INDIVIDUS_POSSEDE BIGINT(11) NOT NULL  ,
       ID_COMPARAISON BIGINT(11) NULL  ,
       ID_INDIVIDUS BIGINT(11) NULL  ,
       RESULTAT BIGINT(11) NOT NULL  
       , PRIMARY KEY (ID_RESULTATS) 
     ) 
     comment = "";
     
    # -----------------------------------------------------------------------------
    #       TABLE : COMPARAISON
    # -----------------------------------------------------------------------------
     
    CREATE TABLE IF NOT EXISTS COMPARAISON
     (
       ID_COMPARAISON BIGINT(11) NOT NULL AUTO_INCREMENT ,
       ID_COMPARAISON1 BOOL NOT NULL default '0', 
       ID_COMPARAISON2 BOOL NOT NULL default '0',
       ID_COMPARAISON3 BOOL NOT NULL default '0',
       ID_COMPARAISON4 BOOL NOT NULL default '0',
       ID_COMPARAISON5 BOOL NOT NULL default '0',
       ID_COMPARAISON6 BOOL NOT NULL default '0',
       ID_COMPARAISON7 BOOL NOT NULL default '0',
       ID_COMPARAISON8 BOOL NOT NULL default '0',
       ID_COMPARAISON9 BOOL NOT NULL default '0',
       ID_COMPARAISON10 BOOL NOT NULL default '0'
       , PRIMARY KEY (ID_COMPARAISON) 
     ) 
     comment = "";
     
    # -----------------------------------------------------------------------------
    #       TABLE : DISCIPLINE
    # -----------------------------------------------------------------------------
     
    CREATE TABLE IF NOT EXISTS DISCIPLINE
     (
       ID_DISCIPLINE BIGINT(11) NOT NULL AUTO_INCREMENT ,
       ID_CATEGORIE BIGINT(11) NOT NULL  ,
       NOM_DISCIPLINE CHAR(32) NOT NULL  
       , PRIMARY KEY (ID_DISCIPLINE) 
     ) 
     comment = "";
     
    # -----------------------------------------------------------------------------
    #       TABLE : CATEGORIE
    # -----------------------------------------------------------------------------
     
    CREATE TABLE IF NOT EXISTS CATEGORIE
     (
       ID_CATEGORIE BIGINT(11) NOT NULL AUTO_INCREMENT ,
       NOM_CATÉGORIE CHAR(32) NOT NULL  
       , PRIMARY KEY (ID_CATEGORIE) 
     ) 
     comment = "";
     
    # -----------------------------------------------------------------------------
    #       TABLE : INDIVIDUS
    # -----------------------------------------------------------------------------
     
    CREATE TABLE IF NOT EXISTS INDIVIDUS
     (
       ID_INDIVIDUS BIGINT(11) NOT NULL AUTO_INCREMENT ,
       ID_DISCIPLINE BIGINT(11) NOT NULL  ,
       NOM_INDIVIDUS CHAR(32) NOT NULL  ,
       POSITIONNEMENT_INDIVIDUS INTEGER(2) NOT NULL AUTO_INCREMENT 
       , PRIMARY KEY (ID_INDIVIDUS) 
     ) 
     comment = "";
     
     
    # -----------------------------------------------------------------------------
    #       CREATION DES REFERENCES DE TABLE
    # -----------------------------------------------------------------------------
     
     
    ALTER TABLE RESULTATS 
      ADD FOREIGN KEY FK_RESULTATS_COMPARAISON (ID_COMPARAISON_APPARTIENT)
          REFERENCES COMPARAISON (ID_COMPARAISON) ;
     
     
    ALTER TABLE RESULTATS 
      ADD FOREIGN KEY FK_RESULTATS_INDIVIDUS (ID_INDIVIDUS_POSSEDE)
          REFERENCES INDIVIDUS (ID_INDIVIDUS) ;
     
     
    ALTER TABLE DISCIPLINE 
      ADD FOREIGN KEY FK_DISCIPLINE_CATEGORIE (ID_CATEGORIE)
          REFERENCES CATEGORIE (ID_CATEGORIE) ;
     
     
    ALTER TABLE INDIVIDUS 
      ADD FOREIGN KEY FK_INDIVIDUS_DISCIPLINE (ID_DISCIPLINE)
          REFERENCES DISCIPLINE (ID_DISCIPLINE) ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/04/2006, 16h49
  2. Réponses: 1
    Dernier message: 28/04/2006, 16h17
  3. Enregister une base de donnee Mysql comme dataSource.
    Par rider4ever dans le forum Outils
    Réponses: 3
    Dernier message: 10/02/2006, 16h51
  4. [SGBD] Renvoyer les enregistrements d'une base de données mysql
    Par pod1978 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 30/01/2006, 21h01
  5. [SGBD] problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/10/2005, 23h06

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