I’ve been working on something similar, but with vehicles and owners.
A user can add new vehicles to their account and the vehicle is written to the sheet with the owner’s row id in an owners column. Using the row id in the user sheet, I can create a relation to the vehicle sheet easily. When a user is viewing their list of vehicles, I added the vehicle row id on the screen as well as a qr code of the vehicle row id (for when we get barcode scanning).
Whenever a user wants to share one of their vehicles with another user, they can share that row id with them. Then the second user can enter the vehicle row id into a temporary field on the screen and it will instantly validate the row id. If valid, they can press a button and then a set column action takes over.
Ultimately, my vehicle sheet has a column that holds the owner id, but this column can hold multiple values in a pipe delimited format. A split text column splits those owner id’s on the pipe delimiter to give me an array of owner id’s that I can use for the relation from owners to vehicles.
To build that list of owners, when a user enters the shared vehicle id, I then have a relation to link the entered id to the matching vehicle id in the vehicle sheet. Then I have a lookup column to pull back the owners list for that vehicle. Then I create a template column that joins the existing owners list and the new owner id from the currently signed in user. When the user clicks on the button, the template column overwrites the owners column via a set column action through the relation. Now the vehicle has two owners and both owners can view and work with that vehicle.
I just did all of this yesterday, so I haven’t worked through the process of removing an owner yet, but hopefully this gives you some ideas.