Hide an entire view or menu link if no records exist

I sometimes have a scenario where I have quite a broad 'user role' ie. some views are relevant to some people who have that user role, but not others. They are similar enough though that I don't want to create different user roles.

Hence, it would be great if certain views could be hidden entirely (including view titles / descriptions) if there is 'no data' for that particular logged in user. Same would apply to pages linked by menus - if there was no data in the views that the menu linked to, if that particular menu link could be hidden that would be great.

Thanks for considering!