Cita:
Iniciado por metalfox6383 ¿Debería hacer un modelo por tabla o un modelo por controlador?
Ni una ni la otra. Eventualmente puede ser alguna de esas dos, pero no es una regla.
El modelo es lo que maneja la parte fisica y te ofrece las funciones para manejarlo de forma abstracta, esta ligado con la base de datos pero no con su estructura interna. Por ejemplo:
En la base de datos tienes la tabla "facturas" y "facturas_articulos".
El modelo no son 2 clases diferentes, es una sola, "Factura" que debe tener ademas de sus getters/setters los metodos para agregar y quitar artículos, y debe saber también como guardarlos, actualizarlos y borrarlos y leerlos.
Cada tabla en la base de datos, puede no tener ninguno, tener 1 o tener varios modelos asociados, cuando las tablas son grandes y complejas, es comun que aparezcan mas de un modelo que hacen un uso directo de una misma tabla para objetivos diferentes, esto se debe evitar pero hay veces que es necesario, hacerlo no viola para nada el concepto de MVC.
El controlador esta ligado con la funcionalidad, tu puedes querer ver una factura en detalle, ver un listado de todas o bien, ver una factura por cliente determinado, por dar ejemplos.
Para resolver estas funcionalidades, el controlador puede usar 1 o varios modelos, basicamente lo que hace es basarse en funciones del modelo para obtener los datos que el requerimiento funcional le pida.
La vista, esta ligada con la representacion o devolucion de esos datos devueltos por el controlador al usuario final, este usuario puede ser una persona real, otra computadora, otro sistema, etc.
Para cada funcion del controlador, puedes tener 1 o varias vistas, puedes mostrar los datos en json para que los vea javascript, en XML para que lo vea otro programa, o en html para que lo vea una persona, 3 vistas (o mas, o menos) para un mismo controlador.
Modelo -> Datos fisicos
Controlador -> Requerimientos funcionales
Vista -> Representacion de los datos para el usuario final
Cada capa es independiente, porque resuelve problemas totalmente diferentes.
Por cierto, la web no tiene una estructura MVC.
La web tiene una estructura Request-Response, por lo que elegir MVC para hacer sistemas web no es una elección muy acertada.