Bonjour,
Je développe un back-end pour une application de visualisation automate, et j'ai des difficultés pour la conception de ma base de donnée (sous MySQL).
Situation
J'importe depuis le réseau les valeurs des variables automates que je souhaite archiver dans ma base de donnée. Le but étant de dater les enregistrements, pour proposer des courbes d'évolution des températures/pressions/entrées logiques en fonction du temps.
Depuis le back-end, l'utilisateur sélectionne les variables automates qu'il souhaite récupérer, il peut alors en ajouter certaines comme étant des variables dont il souhaite conserver l'évolution en fonction du temps (on va les appeler les variables archivées).
Solution ?
Table <Variable_PLC> :
- <<PK>>Id : int
- AdressePLC : text (NN - IU)
- Nom : text
- Type : text
Table <Archive>
- <<PK>>TspEnregistrement : timestamp
- Id1 : Type1
- Id2 : Type2
- ....
//Id1 et Id2 étant les Identifiants des variables que j'enregistre et Type1, Type2 leur type : int, float, text....
En gros je souhaiterais créer une table dont les noms des colonnes et leurs types soient des "clefs étrangère", ou plus exactement des résultats de requêtes, avec bien entendus des vues et des requêtes dynamiques qui vont bien pour que je puisse accéder grâce à des commandes simples à ces données.
D'après vous, est-ce la bonne solution ? Apparemment du SQL dynamique me permettrait d'arriver au fonctionnement voulu mais je n'ai aucune idée de comment je pourrais le mettre en place.
Si je souhaite aussi sauvegarder la dernière valeur de toutes les variables qui ne sont pas archivées, quelle serait la méthode appropriée puisqu'elles sont toutes de type différents.
J'avais pensé créer une table par type de variable (une table float, une table int, une table text) pour ranger les valeurs de mes variables, mais j'ai abandonner cette idée car pour aller chercher mes valeurs ils aurait fallu que j'explore toutes les tables pour trouver la bonne, et cela aurait créé un nombre de requête exponentiel en fonction du nombre de table.
Merci d'avance pour toute remarque ou proposition que vous pourriez me transmettre.
Partager