智慧水务管理系统 - 精河县供水工程综合管理平台

V2__doc.sql 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. -- =============================================
  2. -- 文档管理模块 DDL
  3. -- =============================================
  4. -- 文档分类表
  5. CREATE TABLE IF NOT EXISTS doc_category (
  6. id BIGSERIAL PRIMARY KEY,
  7. name VARCHAR(100) NOT NULL,
  8. parent_id BIGINT DEFAULT 0,
  9. sort INT DEFAULT 0,
  10. deleted SMALLINT DEFAULT 0,
  11. create_time TIMESTAMP DEFAULT NOW()
  12. );
  13. COMMENT ON TABLE doc_category IS '文档分类表';
  14. -- 文档主表
  15. CREATE TABLE IF NOT EXISTS doc (
  16. id BIGSERIAL PRIMARY KEY,
  17. name VARCHAR(255) NOT NULL,
  18. description TEXT,
  19. file_type VARCHAR(20),
  20. file_size BIGINT DEFAULT 0,
  21. storage_path VARCHAR(500) NOT NULL,
  22. category_id BIGINT REFERENCES doc_category(id),
  23. tags VARCHAR(500),
  24. current_version INT DEFAULT 1,
  25. uploader_id BIGINT,
  26. uploader_name VARCHAR(50),
  27. access_level SMALLINT DEFAULT 0,
  28. dept_id BIGINT,
  29. download_count INT DEFAULT 0,
  30. search_text TEXT,
  31. deleted SMALLINT DEFAULT 0,
  32. create_time TIMESTAMP DEFAULT NOW(),
  33. update_time TIMESTAMP DEFAULT NOW()
  34. );
  35. COMMENT ON TABLE doc IS '文档主表';
  36. COMMENT ON COLUMN doc.access_level IS '权限级别: 0-公开 1-部门可见 2-仅自己';
  37. -- 文档版本表
  38. CREATE TABLE IF NOT EXISTS doc_version (
  39. id BIGSERIAL PRIMARY KEY,
  40. doc_id BIGINT NOT NULL REFERENCES doc(id),
  41. version INT NOT NULL,
  42. storage_path VARCHAR(500) NOT NULL,
  43. file_size BIGINT DEFAULT 0,
  44. change_log VARCHAR(500),
  45. uploader_id BIGINT,
  46. uploader_name VARCHAR(50),
  47. create_time TIMESTAMP DEFAULT NOW()
  48. );
  49. COMMENT ON TABLE doc_version IS '文档版本表';
  50. -- 索引
  51. CREATE INDEX IF NOT EXISTS idx_doc_category ON doc(category_id);
  52. CREATE INDEX IF NOT EXISTS idx_doc_uploader ON doc(uploader_id);
  53. CREATE INDEX IF NOT EXISTS idx_doc_dept ON doc(dept_id);
  54. CREATE INDEX IF NOT EXISTS idx_doc_file_type ON doc(file_type);
  55. CREATE INDEX IF NOT EXISTS idx_doc_search_text ON doc USING gin(to_tsvector('simple', COALESCE(search_text, '')));
  56. CREATE INDEX IF NOT EXISTS idx_doc_version_doc_id ON doc_version(doc_id);
  57. -- 默认分类
  58. INSERT INTO doc_category (name, parent_id, sort) VALUES
  59. ('技术规范', 0, 1),
  60. ('操作手册', 0, 2),
  61. ('设计图纸', 0, 3),
  62. ('合同文件', 0, 4),
  63. ('会议纪要', 0, 5)
  64. ON CONFLICT DO NOTHING;