PostgreSQL. Four tables, four declared foreign keys. Cardinality is derived from the foreign keys, column nullability and uniqueness.
project_members.project_id → projects.idNOT NULL). Each projects row has zero or many membership rows.project_members.user_id → users.idNOT NULL). Each users row has zero or many membership rows.tasks.project_id → projects.idNOT NULL). Each projects row has zero or many tasks.tasks.assignee_id → users.idNo foreign key is unique or uniquely indexed, so no relationship here is one-to-one. The two foreign keys in project_members together form its primary key, which makes that table a many-to-many join between projects and users, carrying a role of its own.