项目管理系统数据库表设计
Project 项目表
title 项目标题
desc 项目描述
avatar 项目图片地址
duration Number 项目天数
Profile 用户档案 记录的项目组所有成员档案
name 姓名
gender 男/女
desc 擅长技能
ProjectTeam 项目成员名单表
.profile => Profile
.project => Project
请注意我用的是parse server 因此每个对象id是objectId字段,同时外键字段名称可以直接是project profile通过Pointer<Project>类型表示即可
请用plantuml类图,帮我表示上面的三张表关系
错误示例
Profile.project 1 => n Project
一个成员 只能对应一个项目
一个项目 可以有 多个成员
@startuml 项目管理系统(Parse Server)数据库表关系图
' 定义Parse Server风格的类(对应数据表),核心字段遵循Parse规范:
' 1. 主键统一为 objectId(Parse默认唯一标识)
' 2. 外键使用 Pointer<目标类> 类型,字段名直接为关联类名(如 project: Pointer<Project>)
class Project {
+ objectId: String (PK) // Parse默认主键,唯一标识项目
+ projectName: String // 项目名称
+ startDate: Date // 项目开始日期
+ endDate: Date // 项目结束日期
+ status: String // 项目状态(如:进行中、已完成、暂停)
// 其他扩展字段(如描述、负责人等可按需添加)
}
class Profile {
+ objectId: String (PK) // Parse默认主键,唯一标识成员档案
+ userName: String // 成员姓名
+ position: String // 成员职位(如:产品经理、开发工程师)
+ email: String // 成员邮箱
+ project: Pointer<Project> (FK) // 关联项目,Parse指针类型(1个成员仅属1个项目)
// 其他扩展字段(如联系方式、入职时间等可按需添加)
}
class ProjectTeam {
+ objectId: String (PK) // Parse默认主键,唯一标识项目成员名单记录
+ project: Pointer<Project> (FK) // 关联项目,Parse指针类型(对应所属项目)
+ profile: Pointer<Profile> (FK) // 关联成员档案,Parse指针类型(对应项目成员)
+ joinDate: Date // 成员加入项目的时间
// 其他扩展字段(如成员角色、负责模块等可按需添加)
}
' 定义Parse Server风格的表间关联关系(基于Pointer类型外键,标注 cardinality)
' 1. Project 与 Profile:1对多(1个项目包含多个成员,1个成员仅属1个项目)
Project "1" -- "n" Profile : 包含 >
' 关联依据:Profile.project (Pointer<Project>) 指向 Project.objectId
' 2. Project 与 ProjectTeam:1对多(1个项目对应多条成员名单记录)
Project "1" -- "n" ProjectTeam : 对应 >
' 关联依据:ProjectTeam.project (Pointer<Project>) 指向 Project.objectId
' 3. Profile 与 ProjectTeam:1对1(1个成员仅对应1条名单记录,因成员仅属1个项目)
Profile "1" -- "1" ProjectTeam : 关联 >
' 关联依据:ProjectTeam.profile (Pointer<Profile>) 指向 Profile.objectId
@enduml