# 项目管理系统数据范式文档 ## 提示词 ``` 项目管理系统数据库表设计 Project 项目表 title 项目标题 desc 项目描述 avatar 项目图片地址 duration Number 项目天数 Profile 用户档案 记录的项目组所有成员档案 name 姓名 gender 男/女 desc 擅长技能 ProjectTeam 项目成员名单表 .profile => Profile .project => Project 请注意我用的是parse server 因此每个对象id是objectId字段,同时外键字段名称可以直接是project profile通过Pointer类型表示即可 请用plantuml类图,帮我表示上面的三张表关系 ``` 错误示例:没有表达出项目成员和项目多对多的关系,因此需要一个关系表ProjectTeam ``` Profile.project 1 => n Project 一个成员 只能对应一个项目 一个项目 可以有 多个成员 ``` ## 数据文档 ```plantuml @startuml 项目管理系统数据库表关系图(Parse Server) ' 注:Parse Server 中所有对象默认包含主键 **objectId**,以下所有类均显式声明以符合规范 ' 外键关系通过 Parse 的 Pointer<目标类> 类型实现,类图中通过关联线标注 ' 1. Project 项目表 class Project { + objectId: String (PK, Parse 默认) + title: String (项目标题) + desc: String (项目描述) + avatar: String (项目图片地址) + duration: Number (项目天数) } ' 2. Profile 用户档案表(项目组成员) class Profile { + objectId: String (PK, Parse 默认) + name: String (姓名) + gender: String (男/女) + desc: String (擅长技能) } ' 3. ProjectTeam 项目成员名单表(关联表) class ProjectTeam { + objectId: String (PK, Parse 默认) + project: Pointer (外键,关联项目) + profile: Pointer (外键,关联成员档案) } ' 关系定义:遵循 Parse Server 关联逻辑 ' - 1个 Project 可对应多个 ProjectTeam 记录(1个项目有多个成员) ' - 1个 Profile 可对应多个 ProjectTeam 记录(1个成员可加入多个项目) ' - ProjectTeam 作为中间表,实现 Project 与 Profile 的多对多关系 Project "1" -- "*" ProjectTeam : 包含 > Profile "1" -- "*" ProjectTeam : 加入 > @enduml ``` ### 图表说明(符合 Parse Server 特性) 1. **主键规范**:所有表均包含 `objectId` 字段,作为 Parse Server 自动生成的主键(PK)。 2. **外键类型**:`ProjectTeam` 表中的 `project` 和 `profile` 字段,均使用 Parse 特有的 `Pointer<目标类>` 类型,分别指向 `Project` 和 `Profile` 表的 `objectId`。 3. **关系逻辑**: - **Project ↔ ProjectTeam**:1对多(1个项目对应多个成员关联记录)。 - **Profile ↔ ProjectTeam**:1对多(1个成员对应多个项目关联记录)。 - **Project ↔ Profile**:通过 `ProjectTeam` 中间表实现 **多对多** 关系(核心业务逻辑:1个项目可有多个成员,1个成员可加入多个项目)。