| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- -- CREATE DATABASE serve;
- -- USE serve;
- -- 创建 schema(如果不存在)
- CREATE SCHEMA IF NOT EXISTS dev;
- -- 删除序列(如果存在)
- -- DROP SEQUENCE IF EXISTS dev.user_id_seq;
- -- 创建新序列
- -- CREATE SEQUENCE dev.user_id_seq
- -- START WITH 1
- -- INCREMENT BY 1
- -- NO MINVALUE
- -- NO MAXVALUE
- -- CACHE 1;
- -- 添加注释
- -- COMMENT ON SEQUENCE dev.user_seq IS '用户表ID序列';
- DROP TABLE IF EXISTS dev.user;
- -- 在 dev schema 下创建用户表
- CREATE TABLE dev.user (
- id SERIAL PRIMARY KEY,
- account VARCHAR(50) NOT NULL UNIQUE,
- password VARCHAR(255) NOT NULL,
- username VARCHAR(100) NOT NULL,
- role VARCHAR(20) NOT NULL DEFAULT 'user' CHECK ( role IN ('user','expert','admin') ),
- avatar TEXT,
- phone_number char(11),
- enable INT NOT NULL DEFAULT 1,
- delete_flag INT NOT NULL DEFAULT 0
- );
- -- 添加注释
- COMMENT ON TABLE dev.user IS '用户表';
- COMMENT ON COLUMN dev.user.id IS '用户ID,自增主键';
- COMMENT ON COLUMN dev.user.account IS '账号,唯一';
- COMMENT ON COLUMN dev.user.password IS '密码';
- COMMENT ON COLUMN dev.user.username IS '用户名';
- COMMENT ON COLUMN dev.user.role IS '角色';
- COMMENT ON COLUMN dev.user.avatar IS '头像URL';
- COMMENT ON COLUMN dev.user.phone_number IS '手机号码';
- COMMENT ON COLUMN dev.user.enable IS '是否启用';
- COMMENT ON COLUMN dev.user.delete_flag IS '删除标记';
- -- 创建索引
- CREATE INDEX idx_user_account ON dev.user(account);
- CREATE INDEX idx_user_role ON dev.user(role);
- CREATE INDEX idx_user_enable ON dev.user(enable);
- CREATE INDEX idx_user_delete_flag ON dev.user(delete_flag);
- -- 元数据
- CREATE TABLE dev.meta (
- id SERIAL PRIMARY KEY,
- key VARCHAR(32) NOT NULL,
- value JSONB
- );
- -- 2. 添加注释
- COMMENT ON TABLE dev.meta IS '元数据表,用于存储键值对形式的配置或扩展属性';
- COMMENT ON COLUMN dev.meta.id IS '自增主键,唯一标识一条元数据记录';
- COMMENT ON COLUMN dev.meta.key IS '元数据的键,长度不超过32个字符,不可为空';
- COMMENT ON COLUMN dev.meta.value IS '元数据的值,使用 JSONB 类型存储,支持结构化数据';
- -- 3. 索引建议
- -- 业务上 key 通常需要唯一约束,且频繁用于等值查询
- CREATE UNIQUE INDEX idx_meta_key ON dev.meta (key);
- -- 若经常对 value 内部字段进行查询或过滤,可添加 GIN 索引以加速 JSONB 操作
- CREATE INDEX idx_meta_value_gin ON dev.meta USING GIN (value);
- INSERT INTO dev.meta(key, value) VALUES
- ('website_config','{
- "title": "示例网站",
- "logo": "",
- "announcement": "欢迎访问我们的网站!",
- "statement": "版权所有 © 2025 示例网站"
- }');
|