On m'a demandé de créer une sorte de service de rapport (journalisation). L'employé a installé localement une application web (juste un site web dynamique, écrit en PHP) dans de nombreuses entreprises. Cette application web est une sorte d'enquête. Toutes les données sont sauvegardées dans la base de données locale, mais maintenant l'exigence est que ces données (résultat de l'enquête) seront également envoyées au serveur central après chaque soumission du formulaire.
Il existe quatre types d'enquêtes. L'organisation est telle qu'il y a de nombreux projets et que chaque projet ne peut avoir qu'une seule enquête de chaque type (STI ici ?) et l'enquête appartient à un seul projet. Chaque enquête recevra un rapport de l'application locale, qui aura donc plusieurs rapports. L'application Rails 3 qui enregistre ces rapports doit imiter cette logique. La première question est la suivante : cette structure AR a-t-elle un sens pour vous ?
Project-1--------1-Survey-1-------*-Report
Project
has_one :survey
has_many :reports, :through => :survey
Survey
belongs_to :project
has_many :reports
Report
belongs_to :survey
La deuxième question concerne le fait d'avoir plusieurs tables pour un modèle AR. Si toutes les données sont stockées dans reports
La table deviendra très vite énorme, et l'interrogation efficace des rapports qui appartiennent à une enquête spécifique pourrait poser problème après un certain temps. Peut-être serait-il préférable d'avoir des tableaux séparés pour chaque enquête ? Comme reports_<survey_id>
. Est-ce possible ?
De plus, je suis en quelque sorte obligé d'utiliser MySQL, mais s'il existe une autre solution bien meilleure pour cela, je pourrais essayer de la faire passer.
Si vous êtes toujours là, merci de lire ceci :)