se ve bastante bien.
Muestras aprobado_por en 2 tablas. Si mantiene la tabla MembershipStatus, ahí es donde debería pertenecer. además, el nombre 'aprobado_por' implica el estado de 'aprobado' que puede existir o no. podrías pensar en otro nombre...
probablemente también debería tener una tabla que identificara qué usuarios son administradores para qué grupos. de esa manera, puede codificar la seguridad del lado de la base de datos para quién puede aprobar, así como almacenar quién realmente aprobó.
Además, no soy un gran fanático de almacenar el historial de auditoría en la tabla como está mostrando. Utilice la base de datos incorporada en la auditoría o llévela a otra tabla para registrar el historial de auditoría.
finalmente, id y userid parecen redundantes. ir con ID de usuario. (similar en otras mesas)