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

Schéma Discussion :

[MCD]Tableau dans une base de données


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut [MCD]Tableau dans une base de données
    Bonjour,

    Je travaille actuellement sur la conception d'un système qui intègre une base de données. En gros, il s'agit d'un logiciel permettant d'assister les utilisateurs lors d'étalonnages.

    J'ai un soucis car chaque étalonnage doit aboutir à un ensemble de données (calculs, formulaire, etc.) qui doivent être stockées; mais certaines données sont, elles même, un ensemble de valeurs (en fait il me faudrait un tableau quoi). Ma question est simple: Existe-t-il un type "tableau" ? Sinon quel type de champ dois-je utiliser pour ce genre de donnée ? Peut-être dois-je utiliser une nouvelle entité où une chaine de caractère ?

    Merci d'avance pour vos réponses. Cordiallement,

    Julien

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    La première forme normale impose qu'un attribut soit atomique. Il faudrait donc normalement décomposer le tableau en ses éléments dans le MCD.
    Ceci n'est toutefois pas facile dans le cas que vous citez. J'ai été confronté à un cas similaire et, comme l'efficacité de l'application n'était pas en cause, j'ai stoppé la normalisation.

    Mon cas :
    Des indicateurs ont des paramètres en nombre variable mais ces paramètres peuvent eux-mêmes être des listes ayant un nombre variable d'éléments selon les indicateurs.

    Ma modélisation (non normalisée j'en conviens) :
    Indicateur -0,n----Avoir----0,n- Paramètres

    Mes tables :
    Indicateurs(IndIndex, ...)
    Parametres(ParIndex, ParNom, ParValeurDéfaut)
    ParInd(ParIndIndicateur, ParIndParametre, ParIndValeur)

    Exemples fictifs de tuples dans ParInd :
    (1, 1, 10)
    (1, 2, toto@tata@titi@tutu)
    (1, 3, 1-m@2-d@3-f)

    La ParIndValeur du deuxième tuple est en fait une liste.
    Celle du troisième tuple est carrément un tableau (qui donne l'ordre des couches de la carte géographique sur laquelle on représente le résultat de l'indicateur)

    Nota : ce modèle est issu d'un existant encore pire puisque tous les paramètres étaient stockés dans une colonne TEXT de la table des indicateurs. Merci à la fonction explode en PHP pour séparer tout ça !
    Ce n'était d'ailleurs pas le seul cas dans la base existante mais j'ai réussi à normaliser tout le reste.
    Normaliser totalement cette partie aurait compliqué les programmes existants pour un gain de performances négligeable.

    Pour mon mémoire, je suis quand même intéressé par une modélisation correcte de ce genre de problème.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Tout d'abord, merci de ta réponse.

    Il me semble que mon problème est plus simple que ça. Dans mon cas le nombre de valeurs est fixe ( par exemple 14 valeurs ayant le même libellé). En fait ce que je voudrais éviter c'est d'avoir dans ma table: valeur1, valeur2, valeur3, etc... alors que dans un programme ceci peut se simplifier par un tableau.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Si je comprends bien, les 14 valeurs en question sont les 14 relevés effectués lors d'un étalonnage ?

    Et tous les étalonnages se font sur 14 valeurs ?

    Deux solutions :
    1) 14 colonnes - val1, val2... val14
    2) 1 colonne et 14 lignes par étalonnage NumEtalonnage Valeur
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Il s'agit bien de 14 valeurs relevées lors de l'étalonnage mais je précise car je m'explique mal:

    J'ai une table "PROCEDURE" (qui correspond en fait à un étalonnage), cette table contient une quinzaine de champs (de type int, date, etc.), pour le moment rien d'extraordinaire.

    A cet ensemble de champ s'ajoute plusieurs ensemble de données dont je n'arrive pas à définir le type (ou je ne connais pas la méthode "propre" à utiliser pour la notation).

    La machine étalonnée dispose de 14 cellules rétro-réfléchissantes auxquels sont attribuées plusieurs informations. Pour chaque cellule on a donc plusieurs informations et pour compliquer la chose, il y a des données pour la nuit d'autres pour le jour.

    Si j'utilise la premiére méthode je risque d'avoir une 50aine de champs dans PROCEDURE. Pour la 2eme méthode si je comprend bien il s'agit de créer une nouvelle table avec un enregistrement pour chaque cellule et un champ en plus permettant d'identifier l'étalonnage en relation ? Ca me parait pas mal.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Dans ce cas faut-il utiliser la clé étrangère de "procedure" pour identier la procédure ou un nouveau champ ?

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Oui la table de mesures contiendra en clé étrangère l'identifiant de la procédure.

    Par contre, ceci va encore compliquer la chose :
    La machine étalonnée dispose de 14 cellules rétro-réfléchissantes auxquels sont attribuées plusieurs informations. Pour chaque cellule on a donc plusieurs informations et pour compliquer la chose, il y a des données pour la nuit d'autres pour le jour.
    Si je comprends bien, pour une procédure d'étalonnage, il y a 14 cellules qui délivrent chacune plusieurs informations ?
    Et une procédure d'étalonnage comprend des mesures le jour et la nuit ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Oui c'est çà mais les valeurs de jour et de nuit sont propres aux cellules pas à l'étalonnage en lui même. Il est tout a fait possible de mettre les differentes informations dans la table Cellule. Pour chaque enregistrement on aura l'ensemble des informations pour une cellule identifiée par un champ num_cellule (de 1 à 14). Et tout les 14 enregistrements, la clé étrangère sera incrémenté pour identifier la procédure suivante.

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Alors je ferais la structure suivante :
    T_Procedures_P(P_Id, P_Libelle, ...)
    T_Mesures_M(M_Id, M_IdProcedure, M_DateHeure, M_NumCellule, M_Mesure, ...)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    C'est ça. Seulement je ne l'appellerai pas "mesure" car l'étalonnage abouti à d'autres mesures qui n'ont pas de rapport avec les cellules.

    Merci du coup de main, c'était vraiment cool de ta part. Cordialement,

    Julien

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

Discussions similaires

  1. [Conception] Insertion de champs d'un tableau dynamique dans une base de données
    Par loreleï85 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 12/05/2011, 14h39
  2. Sauvegarde de tableau dans une base de données
    Par lilp1 dans le forum MySQL
    Réponses: 3
    Dernier message: 30/11/2010, 10h18
  3. Réponses: 0
    Dernier message: 23/07/2009, 09h37
  4. Stocker un tableau dans une base de données
    Par rambc dans le forum Général Python
    Réponses: 7
    Dernier message: 23/12/2008, 21h16
  5. Réponses: 1
    Dernier message: 23/06/2006, 11h19

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