PostgreSQL · 4 tables · 4 declared foreign keys · no application data
project_members.project_id → projects.id — 1 : 0..N. Each membership belongs to exactly one project (NOT NULL). A project has zero or many memberships; project_id is not unique on its own (it is only half of the composite key).project_members.user_id → users.id — 1 : 0..N. Each membership belongs to exactly one user (NOT NULL). A user has zero or many memberships; user_id is not unique on its own.tasks.project_id → projects.id — 1 : 0..N. Each task belongs to exactly one project (NOT NULL). A project has zero or many tasks.tasks.assignee_id → users.id — 0..1 : 0..N. A task has zero or one assignee (the column is nullable). A user is assigned zero or many tasks.