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