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