Why are you talking about tables? Are you creating an object model or a database model?
For an object model, there’s no reason a Dog can’t have a List<Owner>
and an owner have a List<Dog>
. Only if you have attributes on the relationship do you need an intermediate class (what UML calls an Association Class). That’s when you’d have a DogOwnership class with extra properties, and each Owner would have a List<DogOwnership>
, and so would each Dog. The DogOwner would have a Dog, an Owner, and the extra properties.