A good relational approach would be to set up your tables so that you have a people table. Each person has a primary key that uniquely identifies them. Then another tables links the peoplekeys together as friends. There are a few ways to go about this but as a rough example:
People
---------------------------------------
PeopleKey | Name | <other profile data>
Then you have a table that relates people to each other as friends.
Friendships
----------------------------------------------------------------------
PeopleKey | FriendKey (fk to peoplekey) | <details about friendship>
Then you have your notifications table that says a person has done something.
Notification
-----------------------------------------------------------
NotificationKey | PeopleKey | Date | <notification details>
With a query and your friendship relations you can obtain all the notifications for all the friends of a person:
select notification.* from notification inner join
friendships on friendships.peoplekey = notification.peoplekey
where date = @importantdate
The relationship can reveal a lot without having to store repetitive data. There are 1000 other ways to join, query, or link the tables to friendships and events. So for example, you could say show all events where peoplekey is one of my friends. Show all events where peoplekey is only one of my friends etc. etc. etc.