chengzhnag数据库下users表结构

7/30/2025

# Users 用户表结构文档

# 表基本信息

  • 表名: users
  • 用途: 存储系统用户信息
  • 数据库: SQLite

# 字段说明

字段名 数据类型 允许空值 主键 唯一约束 默认值 说明
id INTEGER NO YES NO AUTOINCREMENT 用户唯一标识符,主键
account TEXT NO NO YES 用户账号,用于登录,唯一
password TEXT NO NO NO 用户密码(加密存储)
name TEXT NO NO NO 用户显示名称
role TEXT NO NO NO 'normal' 用户角色:'admin'-管理员,'normal'-普通用户
created_at TEXT YES NO NO datetime('now', 'localtime') 创建时间
updated_at TEXT YES NO NO datetime('now', 'localtime') 更新时间
extra_data TEXT YES NO NO NULL 扩展数据(JSON格式字符串)

# SQL创建语句

CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    account TEXT NOT NULL UNIQUE,
    password TEXT NOT NULL,
    name TEXT NOT NULL,
    role TEXT NOT NULL DEFAULT 'normal',
    created_at TEXT DEFAULT (datetime('now', 'localtime')),
    updated_at TEXT DEFAULT (datetime('now', 'localtime')),
    extra_data TEXT
);

1
2
3
4
5
6
7
8
9
10
11

# 字段详细说明

# 1. id

  • 类型: INTEGER
  • 约束: PRIMARY KEY, AUTOINCREMENT
  • 说明: 用户唯一标识符,系统自动生成

# 2. account

  • 类型: TEXT
  • 约束: NOT NULL, UNIQUE
  • 说明: 用户登录账号,必须唯一,建议使用字母数字组合

# 3. password

  • 类型: TEXT
  • 约束: NOT NULL
  • 说明: 用户密码,必须经过加密存储(建议使用bcrypt等加密算法)

# 4. name

  • 类型: TEXT
  • 约束: NOT NULL
  • 说明: 用户显示名称,用于界面展示

# 5. role

  • 类型: TEXT
  • 约束: NOT NULL
  • 默认值: 'normal'
  • 说明: 用户角色标识
    • 'admin': 系统管理员
    • 'normal': 普通用户
    • 可扩展其他角色类型

# 6. created_at

  • 类型: TEXT
  • 约束: 可为空
  • 默认值: 当前时间戳
  • 说明: 记录用户创建时间

# 7. updated_at

  • 类型: TEXT
  • 约束: 可为空
  • 默认值: 当前时间戳
  • 说明: 记录用户信息最后更新时间

# 8. extra_data

  • 类型: TEXT
  • 约束: 可为空
  • 说明: 用户扩展信息,存储JSON格式字符串,可包含如部门、职位、联系方式等信息

# 使用示例

# 插入数据

INSERT INTO users (account, password, name, role, extra_data) 
VALUES ('admin', '$2y$10$encrypted_password_hash', '系统管理员', 'admin', '{"department": "技术部", "phone": "13800138000"}');
1
2

# 查询数据

-- 根据账号查询
SELECT * FROM users WHERE account = 'admin';

-- 查询管理员用户
SELECT * FROM users WHERE role = 'admin';

-- 查询用户基本信息
SELECT id, account, name, role FROM users WHERE account = 'admin';
1
2
3
4
5
6
7
8

# 更新数据

-- 更新用户信息和更新时间
UPDATE users SET name = '新名称', updated_at = datetime('now', 'localtime') WHERE account = 'admin';
1
2

# 注意事项

  1. 密码安全: 密码必须加密存储,不可明文保存
  2. 账号唯一: account字段具有唯一约束,不可重复
  3. 时间字段: created_at和updated_at字段由系统自动维护
  4. 扩展字段: extra_data字段存储JSON字符串,应用层需进行序列化/反序列化处理
  5. 角色扩展: role字段为字符串类型,便于后续添加新的角色类型
Last Updated: 7/30/2025, 3:00:39 AM