El modelo debe ser la entidad que utiliza activamente la conexión de la base de datos, para los modelos simples que utilizan una puerta de enlace de tabla/implementación de registro activo puede funcionar. Para modelos más complejos, un mapeador de datos aísla aún más la base de datos del resto de su aplicación (lo que hace que sea menos invasivo cambiar un back-end de almacenamiento).
Su controlador debe procesar la solicitud y pasar los datos relevantes que sean necesarios para el modelo.
Dicho esto, simplemente configurar una conexión de base de datos generalmente se realiza mediante algún tipo de script de arranque. El modelo (o el mapeador de datos) luego usa la conexión. No estoy seguro si eso técnicamente cae bajo 'controlador'. En la práctica, la mayoría de los marcos tienen bootstraps, enrutadores y controladores frontales, cualquiera que sea su denominación, su base de datos debe ser utilizada por el modelo pero configurada por su bootstrap.