Skip to content

ERD Documentation

Introduction

The Entity Relationship Diagram (ERD) provides a visual representation of the database schema and the relationships between the entities. The ERD helps to understand the structure of the database and the connections between the tables.

Project Management Entity Relationship Diagram

The following diagram illustrates the relationships between the entities in the application:

USERWORKSPACEPROJECTLISTTASKCOMMENTSOwnscontainscontainscontainscontains

Database Relationships Diagram

The following diagram illustrates the relationships between the entities in the database model:

userGUIDIdPKPrimary KeystringUsernameRequired, MaxLength: 30stringNameRequired, MaxLength: 30stringEmailRequired, MaxLength: 100, UniquestringPasswordHashRequiredGUIDAccessLevelFKEnum e.g., Admin, Member, Owner, GuestdatetimeCreatedDateDefault: Current DateworkspaceGUIDIdPKPrimary KeystringNameRequired, MaxLength: 100GUIDOwnerIdFKForeign Key referencing UserdatetimeCreatedDateDefault: Current DateprojectGUIDIdPKPrimary KeyGUIDWorkspaceIdFKForeign Key referencing WorkspacestringNameRequired, MaxLength: 100stringDescriptionOptional, MaxLength: 500datetimeStartDateOptionaldatetimeEndDateOptionalstringStatusEnum: NotStarted, InProgress, CompleteddatetimeCreatedDateDefault: Current DatelistGUIDIdPKPrimary KeyGUIDProjectIdFKForeign Key referencing ProjectstringNameRequired, MaxLength: 100intPositionPosition of the list on the boarddatetimeCreatedDateDefault: Current DatetaskGUIDIdPKPrimary KeystringNameRequired, MaxLength: 100stringDescriptionOptional, MaxLength: 500stringStatusEnum: NotStarted, InProgress, CompletedstringPriorityEnum: Low, Medium, High, UrgentdatetimeDeadlineOptionaldatetimeCreatedDateDefault: Current DateGUIDProjectIdFKForeign Key referencing ProjectGUIDListIdFKForeign Key referencing ListcommentGUIDIdPKPrimary KeyGUIDTaskIdFKOptional Foreign Key referencing TaskGUIDUserIdFKForeign Key referencing UserstringContentRequired, MaxLength: 500datetimeCreatedDateDefault: Current Dateworkspace_memberGUIDIdPKPrimary KeyGUIDWorkspaceIdFKForeign Key referencing WorkspaceGUIDUserIdFKForeign Key referencing UserGUIDAccessLevelFKEnum e.g., Admin, Member, Owner, GuestdatetimeCreatedDateDefault: Current Dateproject_memberGUIDIdPKPrimary KeyGUIDProjectIdFKForeign Key referencing ProjectGUIDWorkspaceMemberIdFKForeign Key referencing workspace_memberGUIDAccessLevelFKEnum e.g., Admin, Member, Owner, GuestdatetimeCreatedDateDefault: Current Datetask_assigneeGUIDIdPKPrimary KeyGUIDTaskIdFKForeign Key referencing TaskGUIDUserIdFKForeign Key referencing UserdatetimeAssignedDateDefault: Current Datebelongs towritesis assignedownshas memberscontainshas membersbelongs tocontainscontainshas assigneeshas comments

Database Entities Definition

EntityDescription
userRepresents an individual user in the application.
workspaceRepresents a workspace that organizes projects and members. A workspace is owned by a single user.
projectRepresents a project within a workspace, containing tasks and other project-related data.
listRepresents a list within a project, where tasks can be organized. List in Zello is also a kanban column that contains tasks.
taskRepresents an individual task within a project and list.
commentRepresents a comment made by a user on a task.
workspace_memberRepresents a user’s membership in a workspace with a specific role.
project_memberRepresents a user’s membership in a project with a specific role.
task_assigneeRepresents the assignment of a task to a user.
roleRepresents a role that defines a user’s permissions in a workspace or project. A role can be Admin, Member, Owner or Guest

Database Relationship Summary

EntitiesRelationship TypeDescription
userworkspace_memberOne-to-ManyA user can be a member of multiple workspaces, but each workspace member corresponds to only one user.
userworkspaceOne-to-ManyA user can own multiple workspaces, but each workspace is owned by a single user.
usercommentOne-to-ManyA user can write multiple comments, but each comment is written by one user.
usertask_assigneeOne-to-ManyA user can be assigned to multiple tasks, but each task assignment references one user.
workspaceworkspace_memberOne-to-ManyA workspace can have multiple members, but each membership references one workspace.
workspaceprojectOne-to-ManyA workspace can contain multiple projects, but each project belongs to one workspace.
projectproject_memberOne-to-ManyA project can have multiple members, but each project membership references one project.
workspace_memberproject_memberOne-to-ManyA workspace member can belong to multiple projects, but each project member references one workspace member.
projectlistOne-to-ManyA project can contain multiple lists, but each list belongs to one project.
listtaskOne-to-ManyA list can contain multiple tasks, but each task belongs to one list.
tasktask_assigneeOne-to-ManyA task can have multiple assignees, but each task assignment references one task.
taskcommentOne-to-ManyA task can have multiple comments, but each comment references one task.