Treat tables as owned by modules: only the owner writes them and exposes access via its API/facade. Avoid cross-module joins in random places; instead, request data through the owning module or publish domain events. If needed, enforce it with separate schemas, repository boundaries, and code reviews/architecture rules.