1) Users can belong to a specific group wherein when the group moderator publishes an event, its visible to all the members of group.
R1) What I can see, this is a list of users and a list of groups. Each user have a name, a email address and a membership of a group, Each group has a name and a moderator. Every row in the user table have then this columns: Id, name, email, group. The group column is probably linked to the group Id column and that makes this column a foreign key. Every row in the group table have then this columns: Id, Name, Moderator; The moderator will probably be linked to the Id of a user in the user table which makes this column a foreign key.
When searching for group members, u can use the 'where' statement to find all of them. Also when searching a moderator for a specific group, u can use the 'where' statement.
Hope this helps you to make the rest of the tables easy to make.