Me pidieron que hiciera algún tipo de servicio de informes (registro). El empleado tiene una aplicación web instalada localmente (solo un sitio web dinámico, escrito en PHP) en muchas compañías. Esta aplicación web es un tipo de encuesta. Todos los datos se guardan en la base de datos local, pero ahora el requisito es que estos datos (resultado de la encuesta) también se envíen al servidor central después de enviar cada formulario.Múltiples tablas de bases de datos dentro de un modelo AR en Rails 3
Existen cuatro tipos de encuestas. Lo han organizado de esta manera, que hay muchos proyectos, y cada proyecto puede tener solo una encuesta de cada tipo (¿STI aquí?) Y la encuesta pertenece a un proyecto. Cada encuesta recibirá un informe de la aplicación local, por lo que tendrá muchos informes. La aplicación Rails 3 que registra estos informes debe imitar de algún modo esta lógica. La primera pregunta es: ¿esta estructura de RA tiene sentido para usted?
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 segunda pregunta es acerca de tener varias tablas para un modelo de AR. Si todos los datos se almacenan en la tabla reports
, la tabla aumentará enormemente rápidamente, y la consulta eficiente de informes que pertenecen a una encuesta específica podría ser un problema después de un tiempo. ¿Tal vez sería mejor tener tablas separadas para cada encuesta? Me gusta reports_<survey_id>
. es posible?
Además, de alguna manera estoy obligado a usar MySQL, pero si hay otra solución mucho mejor para esto, podría intentar impulsarla.
Si usted todavía está aquí, gracias por leer esto :)
Gracias, parece fácil. Espero que esto no cause ningún problema. – Ernest
Los problemas serán;) Porque, debe controlar esto manualmente. Y cree una nueva tabla de informes cuando cree una encuesta – Anton
@Anton What? Esto suena como un desastre. Ver http://stackoverflow.com/questions/44145/database-sharding-and-rails – coreyward