Database structure for multiple users sharing one dataset, but also many users with their own dataset
One option to do it is having a many-to-many table, which will hold a calendar id and a user id who can see it. A calendar belonging to two spouses will have two rows in that table.