Schema.md 2.9 KB

项目管理系统数据范式文档

提示词

项目管理系统数据库表设计
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

图表说明(符合 Parse Server 特性)

  1. 主键规范:所有表均包含 objectId 字段,作为 Parse Server 自动生成的主键(PK)。
  2. 外键类型ProjectTeam 表中的 projectprofile 字段,均使用 Parse 特有的 Pointer<目标类> 类型,分别指向 ProjectProfile 表的 objectId
  3. 关系逻辑
    • Project ↔ ProjectTeam:1对多(1个项目对应多个成员关联记录)。
    • Profile ↔ ProjectTeam:1对多(1个成员对应多个项目关联记录)。
    • Project ↔ Profile:通过 ProjectTeam 中间表实现 多对多 关系(核心业务逻辑:1个项目可有多个成员,1个成员可加入多个项目)。