I thought about this problem, and I express it by saying that relations between classes are defined contextually. And any model involving global static associations (an inherent connection) between classes is problematic.
Another example that I like to use is products.
A product can play a bunch of different roles. It is associated with OrderItem, which is associated with the Order, which is associated with the customer.
It is provided by the seller.
This is in the directory, maybe in the section and page.
It is the buyer's responsibility, if available from several suppliers.
Being able to easily handle this complexity is a fundamental advantage of the relational data model; and I have not seen that this is well regarded from the point of view of OOP.
, ORM (Object Role Modeling, . VisioModeler, InfoModeler ..), (IMHO).
( CRUD, ActiveRecords ..), . ( , LINQ , , .)
, , , , , .