data-models.md 6.1 KB

数据模型文档

概述

本文档描述了 188-179 招聘系统的数据模型设计。系统采用 TypeORM 作为 ORM,PostgreSQL 作为数据库。

核心实体

用户与认证

User (用户表)

{
  id: number              // 主键
  username: string        // 用户名(唯一)
  email: string | null    // 邮箱
  password: string        // 加密密码
  roles: Role[]           // 用户角色(多对多)
  createTime: Date        // 创建时间
  updateTime: Date        // 更新时间
}

Role (角色表)

{
  id: number              // 主键
  name: string            // 角色名称(唯一)
  permissions: string[]   // 权限列表
  users: User[]           // 用户列表(多对多)
  createTime: Date        // 创建时间
  updateTime: Date        // 更新时间
}

文件管理

File (文件表)

{
  id: number              // 主键
  name: string            // 文件名
  path: string            // MinIO存储路径
  size: number            // 文件大小(字节)
  type: string            // 文件类型
  uploadUserId: number    // 上传用户ID
  uploadUser: User        // 上传用户(多对一)
  uploadTime: Date        // 上传时间
  lastUpdated: Date       // 最后更新时间
}

业务模块实体

订单管理

Order (订单表)

{
  id: number              // 主键
  orderNo: string         // 订单号(唯一)
  orderType: string       // 订单类型
  status: number          // 状态:1-正常,0-禁用
  amount: number          // 订单金额
  createTime: Date        // 创建时间
  updateTime: Date        // 更新时间
}

企业管理

Company (公司表)

{
  id: number              // 主键
  companyName: string     // 公司名称
  companyId: string       // 企业ID(唯一)
  status: number          // 状态:1-正常,0-禁用
  createTime: Date        // 创建时间
  updateTime: Date        // 更新时间
}

Platform (平台表)

{
  id: number              // 主键
  platformName: string    // 平台名称
  companyId: number       // 所属公司
  company: Company        // 公司关联(多对一)
  status: number          // 状态:1-正常,0-禁用
  createTime: Date        // 创建时间
  updateTime: Date        // 更新时间
}

渠道管理

Channel (渠道表)

{
  id: number              // 主键
  channelName: string     // 渠道名称(唯一)
  channelType: string     // 渠道类型
  contactPerson: string   // 联系人
  contactPhone: string    // 联系电话
  status: number          // 状态:1-正常,0-禁用
  createTime: Date        // 创建时间
  updateTime: Date        // 更新时间
}

残疾人员管理

DisabledPerson (残疾人员表)

{
  id: number              // 主键
  name: string            // 姓名
  idCard: string          // 身份证号
  disabilityType: string  // 残疾类型
  disabilityLevel: string // 残疾等级
  disabilityCardNo: string // 残疾证号
  phone: string           // 联系电话
  address: string         // 地址
  avatarFileId: number    // 头像文件ID
  avatarFile: File        // 头像文件(多对一)
  status: number          // 状态:1-正常,0-禁用
  createTime: Date        // 创建时间
  updateTime: Date        // 更新时间
}

数据库设计规范

命名规范

类型 规范 示例
表名 小写下划线 user_info, order_detail
字段名 小写下划线 user_name, create_time
主键 id{table}_id id, user_id
外键 {referenced_table}_id user_id, order_id
索引 idx_{column}_{purpose} idx_user_name, idx_order_status
唯一索引 unique_{column} unique_username

字段类型规范

数据类型 PostgreSQL类型 TypeORM类型 用途
主键 int unsigned int 自增主键
字符串(短) varchar(n) varchar 用户名、名称等
字符串(长) text text 描述、内容等
金额 decimal(10,2) decimal 订单金额等
时间戳 timestamp timestamp 创建时间、更新时间
状态 int int 状态枚举
布尔 boolean boolean 开关状态

时间戳字段

所有表都应包含时间戳字段:

@Column({
  name: 'create_time',
  type: 'timestamp',
  default: () => 'CURRENT_TIMESTAMP',
  comment: '创建时间'
})
createTime!: Date;

@Column({
  name: 'update_time',
  type: 'timestamp',
  default: () => 'CURRENT_TIMESTAMP',
  onUpdate: 'CURRENT_TIMESTAMP',
  comment: '更新时间'
})
updateTime!: Date;

软删除字段

使用 status 字段实现软删除:

@Column({
  name: 'status',
  type: 'int',
  default: 1,
  comment: '状态:1-正常,0-禁用'
})
status!: number;

关联关系

一对多 (OneToMany)

// Company 拥有多个 Platform
@OneToMany(() => Platform, platform => platform.company)
platforms!: Platform[];

多对一 (ManyToOne)

// Platform 属于一个 Company
@ManyToOne(() => Company, { eager: false })
@JoinColumn({ name: 'company_id', referencedColumnName: 'id' })
company!: Company;

多对多 (ManyToMany)

// User 拥有多个 Role
@ManyToMany(() => Role, role => role.users)
@JoinTable({
  name: 'user_roles',
  joinColumn: { name: 'user_id', referencedColumnName: 'id' },
  inverseJoinColumn: { name: 'role_id', referencedColumnName: 'id' }
})
roles!: Role[];

迁移策略

创建迁移

cd packages/core-module
pnpm typeorm migration:generate -d src/data-source.ts src/migrations/MigrationName

运行迁移

pnpm db:migrate

回滚迁移

pnpm db:migrate:revert

相关文档


文档版本: 1.0 最后更新: 2026-01-07