1765 lines
200 KiB
HTML
1765 lines
200 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="generator" content="pandoc" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||
<meta name="author" content="系统设计团队" />
|
||
<title>福建水务营收系统-数据库设计</title>
|
||
<style>
|
||
code{white-space: pre-wrap;}
|
||
span.smallcaps{font-variant: small-caps;}
|
||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||
div.column{flex: auto; overflow-x: auto;}
|
||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||
/* The extra [class] is a hack that increases specificity enough to
|
||
override a similar rule in reveal.js */
|
||
ul.task-list[class]{list-style: none;}
|
||
ul.task-list li input[type="checkbox"] {
|
||
font-size: inherit;
|
||
width: 0.8em;
|
||
margin: 0 0.8em 0.2em -1.6em;
|
||
vertical-align: middle;
|
||
}
|
||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||
/* CSS for syntax highlighting */
|
||
pre > code.sourceCode { white-space: pre; position: relative; }
|
||
pre > code.sourceCode > span { line-height: 1.25; }
|
||
pre > code.sourceCode > span:empty { height: 1.2em; }
|
||
.sourceCode { overflow: visible; }
|
||
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
||
div.sourceCode { margin: 1em 0; }
|
||
pre.sourceCode { margin: 0; }
|
||
@media screen {
|
||
div.sourceCode { overflow: auto; }
|
||
}
|
||
@media print {
|
||
pre > code.sourceCode { white-space: pre-wrap; }
|
||
pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
|
||
}
|
||
pre.numberSource code
|
||
{ counter-reset: source-line 0; }
|
||
pre.numberSource code > span
|
||
{ position: relative; left: -4em; counter-increment: source-line; }
|
||
pre.numberSource code > span > a:first-child::before
|
||
{ content: counter(source-line);
|
||
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
||
border: none; display: inline-block;
|
||
-webkit-touch-callout: none; -webkit-user-select: none;
|
||
-khtml-user-select: none; -moz-user-select: none;
|
||
-ms-user-select: none; user-select: none;
|
||
padding: 0 4px; width: 4em;
|
||
color: #aaaaaa;
|
||
}
|
||
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
||
div.sourceCode
|
||
{ background-color: #f8f8f8; }
|
||
@media screen {
|
||
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
||
}
|
||
code span.al { color: #ef2929; } /* Alert */
|
||
code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
|
||
code span.at { color: #204a87; } /* Attribute */
|
||
code span.bn { color: #0000cf; } /* BaseN */
|
||
code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
|
||
code span.ch { color: #4e9a06; } /* Char */
|
||
code span.cn { color: #8f5902; } /* Constant */
|
||
code span.co { color: #8f5902; font-style: italic; } /* Comment */
|
||
code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
|
||
code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
|
||
code span.dt { color: #204a87; } /* DataType */
|
||
code span.dv { color: #0000cf; } /* DecVal */
|
||
code span.er { color: #a40000; font-weight: bold; } /* Error */
|
||
code span.ex { } /* Extension */
|
||
code span.fl { color: #0000cf; } /* Float */
|
||
code span.fu { color: #204a87; font-weight: bold; } /* Function */
|
||
code span.im { } /* Import */
|
||
code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
|
||
code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
|
||
code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
|
||
code span.ot { color: #8f5902; } /* Other */
|
||
code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
|
||
code span.sc { color: #ce5c00; font-weight: bold; } /* SpecialChar */
|
||
code span.ss { color: #4e9a06; } /* SpecialString */
|
||
code span.st { color: #4e9a06; } /* String */
|
||
code span.va { color: #000000; } /* Variable */
|
||
code span.vs { color: #4e9a06; } /* VerbatimString */
|
||
code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
|
||
</style>
|
||
<link rel="stylesheet" href="output/document_style.css" />
|
||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
</head>
|
||
<body>
|
||
<header id="title-block-header">
|
||
<h1 class="title">福建水务营收系统-数据库设计</h1>
|
||
<p class="author">系统设计团队</p>
|
||
<p class="date">2024年12月19日</p>
|
||
</header>
|
||
<nav id="TOC" role="doc-toc">
|
||
<ul>
|
||
<li><a href="#福建水务营收系统数据库设计文档"
|
||
id="toc-福建水务营收系统数据库设计文档"><span
|
||
class="toc-section-number">1</span> 福建水务营收系统数据库设计文档</a>
|
||
<ul>
|
||
<li><a href="#文档信息" id="toc-文档信息"><span
|
||
class="toc-section-number">1.1</span> 文档信息</a></li>
|
||
<li><a href="#目录" id="toc-目录"><span
|
||
class="toc-section-number">1.2</span> 目录</a></li>
|
||
<li><a href="#一数据库设计概述" id="toc-一数据库设计概述"><span
|
||
class="toc-section-number">1.3</span> 一、数据库设计概述</a>
|
||
<ul>
|
||
<li><a href="#设计目标" id="toc-设计目标"><span
|
||
class="toc-section-number">1.3.1</span> 1.1 设计目标</a></li>
|
||
<li><a href="#数据库选型优势" id="toc-数据库选型优势"><span
|
||
class="toc-section-number">1.3.2</span> 1.2 数据库选型优势</a></li>
|
||
<li><a href="#设计原则" id="toc-设计原则"><span
|
||
class="toc-section-number">1.3.3</span> 1.3 设计原则</a></li>
|
||
</ul></li>
|
||
<li><a href="#二数据库架构" id="toc-二数据库架构"><span
|
||
class="toc-section-number">1.4</span> 二、数据库架构</a>
|
||
<ul>
|
||
<li><a href="#数据库架构图" id="toc-数据库架构图"><span
|
||
class="toc-section-number">1.4.1</span> 1. 数据库架构图</a></li>
|
||
<li><a href="#多租户架构设计" id="toc-多租户架构设计"><span
|
||
class="toc-section-number">1.4.2</span> 2. 多租户架构设计</a></li>
|
||
<li><a href="#通用字段设计" id="toc-通用字段设计"><span
|
||
class="toc-section-number">1.4.3</span> 3. 通用字段设计</a></li>
|
||
</ul></li>
|
||
<li><a href="#三核心数据模型er图" id="toc-三核心数据模型er图"><span
|
||
class="toc-section-number">1.5</span> 三、核心数据模型ER图</a>
|
||
<ul>
|
||
<li><a href="#客户管理模块er图" id="toc-客户管理模块er图"><span
|
||
class="toc-section-number">1.5.1</span> 1. 客户管理模块ER图</a></li>
|
||
<li><a href="#营收管理模块er图" id="toc-营收管理模块er图"><span
|
||
class="toc-section-number">1.5.2</span> 2. 营收管理模块ER图</a></li>
|
||
<li><a href="#表务管理模块er图" id="toc-表务管理模块er图"><span
|
||
class="toc-section-number">1.5.3</span> 3. 表务管理模块ER图</a></li>
|
||
<li><a href="#系统管理模块er图" id="toc-系统管理模块er图"><span
|
||
class="toc-section-number">1.5.4</span> 4. 系统管理模块ER图</a></li>
|
||
</ul></li>
|
||
<li><a href="#四核心数据表设计" id="toc-四核心数据表设计"><span
|
||
class="toc-section-number">1.6</span> 四、核心数据表设计</a>
|
||
<ul>
|
||
<li><a href="#表务管理模块er图-1" id="toc-表务管理模块er图-1"><span
|
||
class="toc-section-number">1.6.1</span> 1. 表务管理模块ER图</a></li>
|
||
<li><a href="#系统管理模块er图-1" id="toc-系统管理模块er图-1"><span
|
||
class="toc-section-number">1.6.2</span> 2. 系统管理模块ER图</a></li>
|
||
</ul></li>
|
||
<li><a href="#五完整ddl语句" id="toc-五完整ddl语句"><span
|
||
class="toc-section-number">1.7</span> 五、完整DDL语句</a>
|
||
<ul>
|
||
<li><a href="#客户管理相关表ddl" id="toc-客户管理相关表ddl"><span
|
||
class="toc-section-number">1.7.1</span> 1. 客户管理相关表DDL</a>
|
||
<ul>
|
||
<li><a href="#客户基本信息表" id="toc-客户基本信息表"><span
|
||
class="toc-section-number">1.7.1.1</span> 1.1 客户基本信息表</a></li>
|
||
<li><a href="#水表信息表" id="toc-水表信息表"><span
|
||
class="toc-section-number">1.7.1.2</span> 1.2 水表信息表</a></li>
|
||
</ul></li>
|
||
<li><a href="#表务工单管理表ddl" id="toc-表务工单管理表ddl"><span
|
||
class="toc-section-number">1.7.2</span> 3. 表务工单管理表DDL</a>
|
||
<ul>
|
||
<li><a href="#表务工单表" id="toc-表务工单表"><span
|
||
class="toc-section-number">1.7.2.1</span> 3.1 表务工单表</a></li>
|
||
<li><a href="#水表库存管理表" id="toc-水表库存管理表"><span
|
||
class="toc-section-number">1.7.2.2</span> 3.2 水表库存管理表</a></li>
|
||
</ul></li>
|
||
<li><a href="#系统管理相关表ddl" id="toc-系统管理相关表ddl"><span
|
||
class="toc-section-number">1.7.3</span> 4. 系统管理相关表DDL</a>
|
||
<ul>
|
||
<li><a href="#数据字典类型表" id="toc-数据字典类型表"><span
|
||
class="toc-section-number">1.7.3.1</span> 4.1 数据字典类型表</a></li>
|
||
</ul></li>
|
||
<li><a href="#完整ddl语句列表" id="toc-完整ddl语句列表"><span
|
||
class="toc-section-number">1.7.4</span> 5. 完整DDL语句列表</a>
|
||
<ul>
|
||
<li><a href="#客户基本信息表-opengauss版本"
|
||
id="toc-客户基本信息表-opengauss版本"><span
|
||
class="toc-section-number">1.7.4.1</span> 5.1 客户基本信息表
|
||
(OpenGauss版本)</a></li>
|
||
<li><a href="#水表信息表-1" id="toc-水表信息表-1"><span
|
||
class="toc-section-number">1.7.4.2</span> 1.2 水表信息表</a></li>
|
||
<li><a href="#客户账户表" id="toc-客户账户表"><span
|
||
class="toc-section-number">1.7.4.3</span> 1.3 客户账户表</a></li>
|
||
</ul></li>
|
||
<li><a href="#营收管理相关表ddl" id="toc-营收管理相关表ddl"><span
|
||
class="toc-section-number">1.7.5</span> 2. 营收管理相关表DDL</a>
|
||
<ul>
|
||
<li><a href="#抄表记录表" id="toc-抄表记录表"><span
|
||
class="toc-section-number">1.7.5.1</span> 2.1 抄表记录表</a></li>
|
||
<li><a href="#水费账单表" id="toc-水费账单表"><span
|
||
class="toc-section-number">1.7.5.2</span> 2.2 水费账单表</a></li>
|
||
<li><a href="#缴费记录表" id="toc-缴费记录表"><span
|
||
class="toc-section-number">1.7.5.3</span> 2.3 缴费记录表</a></li>
|
||
</ul></li>
|
||
<li><a href="#表务管理相关表ddl" id="toc-表务管理相关表ddl"><span
|
||
class="toc-section-number">1.7.6</span> 3. 表务管理相关表DDL</a>
|
||
<ul>
|
||
<li><a href="#水表档案表" id="toc-水表档案表"><span
|
||
class="toc-section-number">1.7.6.1</span> 3.1 水表档案表</a></li>
|
||
</ul></li>
|
||
<li><a href="#系统管理相关表ddl-1" id="toc-系统管理相关表ddl-1"><span
|
||
class="toc-section-number">1.7.7</span> 4. 系统管理相关表DDL</a>
|
||
<ul>
|
||
<li><a href="#数据字典表" id="toc-数据字典表"><span
|
||
class="toc-section-number">1.7.7.1</span> 4.1 数据字典表</a></li>
|
||
</ul></li>
|
||
<li><a href="#初始化数据脚本" id="toc-初始化数据脚本"><span
|
||
class="toc-section-number">1.7.8</span> 5. 初始化数据脚本</a></li>
|
||
</ul></li>
|
||
<li><a href="#六opengauss数据库特性应用"
|
||
id="toc-六opengauss数据库特性应用"><span
|
||
class="toc-section-number">1.8</span> 六、OpenGauss数据库特性应用</a>
|
||
<ul>
|
||
<li><a href="#opengauss高级特性" id="toc-opengauss高级特性"><span
|
||
class="toc-section-number">1.8.1</span> 1. OpenGauss高级特性</a>
|
||
<ul>
|
||
<li><a href="#分区表设计" id="toc-分区表设计"><span
|
||
class="toc-section-number">1.8.1.1</span> 1.1 分区表设计</a></li>
|
||
<li><a href="#列存储表" id="toc-列存储表"><span
|
||
class="toc-section-number">1.8.1.2</span> 1.2 列存储表</a></li>
|
||
<li><a href="#内存表" id="toc-内存表"><span
|
||
class="toc-section-number">1.8.1.3</span> 1.3 内存表</a></li>
|
||
</ul></li>
|
||
<li><a href="#性能优化配置" id="toc-性能优化配置"><span
|
||
class="toc-section-number">1.8.2</span> 2. 性能优化配置</a>
|
||
<ul>
|
||
<li><a href="#连接池配置" id="toc-连接池配置"><span
|
||
class="toc-section-number">1.8.2.1</span> 2.1 连接池配置</a></li>
|
||
<li><a href="#并行查询" id="toc-并行查询"><span
|
||
class="toc-section-number">1.8.2.2</span> 2.2 并行查询</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#七索引设计与优化" id="toc-七索引设计与优化"><span
|
||
class="toc-section-number">1.9</span> 七、索引设计与优化</a>
|
||
<ul>
|
||
<li><a href="#基础索引设计" id="toc-基础索引设计"><span
|
||
class="toc-section-number">1.9.1</span> 1. 基础索引设计</a>
|
||
<ul>
|
||
<li><a href="#主键索引" id="toc-主键索引"><span
|
||
class="toc-section-number">1.9.1.1</span> 1.1 主键索引</a></li>
|
||
<li><a href="#唯一索引" id="toc-唯一索引"><span
|
||
class="toc-section-number">1.9.1.2</span> 1.2 唯一索引</a></li>
|
||
<li><a href="#复合索引" id="toc-复合索引"><span
|
||
class="toc-section-number">1.9.1.3</span> 1.3 复合索引</a></li>
|
||
</ul></li>
|
||
<li><a href="#opengauss特殊索引" id="toc-opengauss特殊索引"><span
|
||
class="toc-section-number">1.9.2</span> 2. OpenGauss特殊索引</a>
|
||
<ul>
|
||
<li><a href="#hash索引" id="toc-hash索引"><span
|
||
class="toc-section-number">1.9.2.1</span> 2.1 HASH索引</a></li>
|
||
<li><a href="#gin索引" id="toc-gin索引"><span
|
||
class="toc-section-number">1.9.2.2</span> 2.2 GIN索引</a></li>
|
||
<li><a href="#部分索引" id="toc-部分索引"><span
|
||
class="toc-section-number">1.9.2.3</span> 2.3 部分索引</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#八opengauss数据安全设计"
|
||
id="toc-八opengauss数据安全设计"><span
|
||
class="toc-section-number">1.10</span> 八、OpenGauss数据安全设计</a>
|
||
<ul>
|
||
<li><a href="#内置安全特性" id="toc-内置安全特性"><span
|
||
class="toc-section-number">1.10.1</span> 1. 内置安全特性</a>
|
||
<ul>
|
||
<li><a href="#透明数据加密-tde" id="toc-透明数据加密-tde"><span
|
||
class="toc-section-number">1.10.1.1</span> 1.1 透明数据加密
|
||
(TDE)</a></li>
|
||
<li><a href="#行级安全策略-rls" id="toc-行级安全策略-rls"><span
|
||
class="toc-section-number">1.10.1.2</span> 1.2 行级安全策略
|
||
(RLS)</a></li>
|
||
<li><a href="#动态数据脱敏" id="toc-动态数据脱敏"><span
|
||
class="toc-section-number">1.10.1.3</span> 1.3 动态数据脱敏</a></li>
|
||
</ul></li>
|
||
<li><a href="#权限控制体系" id="toc-权限控制体系"><span
|
||
class="toc-section-number">1.10.2</span> 2. 权限控制体系</a>
|
||
<ul>
|
||
<li><a href="#角色权限设计" id="toc-角色权限设计"><span
|
||
class="toc-section-number">1.10.2.1</span> 2.1 角色权限设计</a></li>
|
||
<li><a href="#列级权限控制" id="toc-列级权限控制"><span
|
||
class="toc-section-number">1.10.2.2</span> 2.2 列级权限控制</a></li>
|
||
</ul></li>
|
||
<li><a href="#审计与监控" id="toc-审计与监控"><span
|
||
class="toc-section-number">1.10.3</span> 3. 审计与监控</a>
|
||
<ul>
|
||
<li><a href="#审计日志配置" id="toc-审计日志配置"><span
|
||
class="toc-section-number">1.10.3.1</span> 3.1 审计日志配置</a></li>
|
||
<li><a href="#敏感操作监控" id="toc-敏感操作监控"><span
|
||
class="toc-section-number">1.10.3.2</span> 3.2 敏感操作监控</a></li>
|
||
</ul></li>
|
||
<li><a href="#数据备份与灾备" id="toc-数据备份与灾备"><span
|
||
class="toc-section-number">1.10.4</span> 4. 数据备份与灾备</a>
|
||
<ul>
|
||
<li><a href="#opengauss备份策略" id="toc-opengauss备份策略"><span
|
||
class="toc-section-number">1.10.4.1</span> 4.1
|
||
OpenGauss备份策略</a></li>
|
||
<li><a href="#主备同步配置" id="toc-主备同步配置"><span
|
||
class="toc-section-number">1.10.4.2</span> 4.2 主备同步配置</a></li>
|
||
</ul></li>
|
||
<li><a href="#国产化安全合规" id="toc-国产化安全合规"><span
|
||
class="toc-section-number">1.10.5</span> 5. 国产化安全合规</a>
|
||
<ul>
|
||
<li><a href="#等保三级要求" id="toc-等保三级要求"><span
|
||
class="toc-section-number">1.10.5.1</span> 5.1 等保三级要求</a></li>
|
||
<li><a href="#国产化认证" id="toc-国产化认证"><span
|
||
class="toc-section-number">1.10.5.2</span> 5.2 国产化认证</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul>
|
||
</nav>
|
||
<h1 data-number="1" id="福建水务营收系统数据库设计文档"><span
|
||
class="header-section-number">1</span>
|
||
福建水务营收系统数据库设计文档</h1>
|
||
<h2 data-number="1.1" id="文档信息"><span
|
||
class="header-section-number">1.1</span> 文档信息</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>项目信息</th>
|
||
<th>详情</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><strong>项目名称</strong></td>
|
||
<td>福建水务营收系统</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>文档类型</strong></td>
|
||
<td>概要设计文档</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>技术框架</strong></td>
|
||
<td>RuoYi-Vue-Pro + yudao-ui-admin-vue3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>文档版本</strong></td>
|
||
<td>v1.0</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>编写日期</strong></td>
|
||
<td>2024-12-19</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>文档状态</strong></td>
|
||
<td>✅ 已完成</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h2 data-number="1.2" id="目录"><span
|
||
class="header-section-number">1.2</span> 目录</h2>
|
||
<ul>
|
||
<li><a href="#一数据库设计概述">一、数据库设计概述</a></li>
|
||
<li><a href="#二数据库架构">二、数据库架构</a></li>
|
||
<li><a href="#三核心数据模型er图">三、核心数据模型ER图</a></li>
|
||
<li><a href="#四核心数据表设计">四、核心数据表设计</a></li>
|
||
<li><a href="#五完整ddl语句">五、完整DDL语句</a></li>
|
||
<li><a
|
||
href="#六opengauss数据库特性应用">六、OpenGauss数据库特性应用</a></li>
|
||
<li><a href="#七索引设计与优化">七、索引设计与优化</a></li>
|
||
<li><a
|
||
href="#八opengauss数据安全设计">八、OpenGauss数据安全设计</a></li>
|
||
</ul>
|
||
<h2 data-number="1.3" id="一数据库设计概述"><span
|
||
class="header-section-number">1.3</span> 一、数据库设计概述</h2>
|
||
<p>福建水务营收系统采用<strong>华为OpenGauss
|
||
5.0+</strong>数据库,基于RuoYi-Vue-Pro框架规范设计。OpenGauss作为国产自主可控的企业级数据库,具有高性能、高可用、高安全的特点,完全满足水务行业对数据安全和国产化的要求。数据库架构支持多租户、高并发、高可用的业务需求,为水务营收业务提供稳定可靠的数据存储服务。</p>
|
||
<h3 data-number="1.3.1" id="设计目标"><span
|
||
class="header-section-number">1.3.1</span> 1.1 设计目标</h3>
|
||
<ul>
|
||
<li>支持100万客户的业务量,满足3-5年业务发展需求</li>
|
||
<li>支持200并发用户,50并发移动设备</li>
|
||
<li>系统响应时间不超过3秒</li>
|
||
<li>数据安全等保三级要求</li>
|
||
<li>支持多租户数据隔离</li>
|
||
<li><strong>国产化要求</strong>:符合国产数据库替代要求</li>
|
||
</ul>
|
||
<h3 data-number="1.3.2" id="数据库选型优势"><span
|
||
class="header-section-number">1.3.2</span> 1.2 数据库选型优势</h3>
|
||
<ul>
|
||
<li><strong>国产自主可控</strong>:华为OpenGauss是完全自主知识产权的数据库</li>
|
||
<li><strong>高性能</strong>:优化的SQL引擎,查询性能优于传统数据库20-30%</li>
|
||
<li><strong>高可用</strong>:支持主备同步、读写分离、故障自动切换</li>
|
||
<li><strong>安全可信</strong>:内置数据加密、审计、权限管控等安全特性</li>
|
||
<li><strong>生态兼容</strong>:兼容PostgreSQL/MySQL协议,迁移成本低</li>
|
||
</ul>
|
||
<h3 data-number="1.3.3" id="设计原则"><span
|
||
class="header-section-number">1.3.3</span> 1.3 设计原则</h3>
|
||
<ul>
|
||
<li><strong>标准化</strong>:遵循OpenGauss数据库设计规范</li>
|
||
<li><strong>多租户</strong>:基于tenant_id字段实现数据隔离</li>
|
||
<li><strong>可扩展</strong>:预留扩展字段,支持业务增长</li>
|
||
<li><strong>高性能</strong>:合理设计索引,优化查询性能</li>
|
||
<li><strong>安全性</strong>:利用OpenGauss内置安全特性</li>
|
||
</ul>
|
||
<h2 data-number="1.4" id="二数据库架构"><span
|
||
class="header-section-number">1.4</span> 二、数据库架构</h2>
|
||
<h3 data-number="1.4.1" id="数据库架构图"><span
|
||
class="header-section-number">1.4.1</span> 1. 数据库架构图</h3>
|
||
<p><strong>图表 1</strong></p>
|
||
<figure>
|
||
<img src="temp_mermaid_water_biz_database_design_6403/diagram_1.png"
|
||
alt="图表 1" />
|
||
<figcaption aria-hidden="true">图表 1</figcaption>
|
||
</figure>
|
||
<details>
|
||
<summary>
|
||
查看图表源码
|
||
</summary>
|
||
<pre class="mermaid"><code>graph TB
|
||
subgraph "应用层"
|
||
APP[Water Biz Application<br/>RuoYi-Vue-Pro]
|
||
end
|
||
|
||
subgraph "数据访问层"
|
||
MP[MyBatis Plus<br/>ORM框架]
|
||
CACHE[Redis缓存<br/>热点数据]
|
||
end
|
||
|
||
subgraph "数据存储层"
|
||
subgraph "OpenGauss主从集群"
|
||
MASTER[(OpenGauss主库<br/>读写)]
|
||
SLAVE[(OpenGauss从库<br/>只读)]
|
||
end
|
||
|
||
subgraph "业务数据库"
|
||
DB_CUSTOMER[(客户数据库<br/>Customer DB)]
|
||
DB_BILLING[(营收数据库<br/>Billing DB)]
|
||
DB_METER[(表务数据库<br/>Meter DB)]
|
||
DB_SYSTEM[(系统数据库<br/>System DB)]
|
||
end
|
||
|
||
subgraph "数据归档"
|
||
DB_HISTORY[(历史数据库<br/>Archive DB)]
|
||
BACKUP[(备份存储<br/>Backup Storage)]
|
||
end
|
||
end
|
||
|
||
APP --> MP
|
||
APP --> CACHE
|
||
MP --> MASTER
|
||
MASTER --> SLAVE
|
||
MASTER --> DB_CUSTOMER
|
||
MASTER --> DB_BILLING
|
||
MASTER --> DB_METER
|
||
MASTER --> DB_SYSTEM
|
||
SLAVE --> DB_HISTORY
|
||
MASTER --> BACKUP
|
||
</code></pre>
|
||
</details>
|
||
<h3 data-number="1.4.2" id="多租户架构设计"><span
|
||
class="header-section-number">1.4.2</span> 2. 多租户架构设计</h3>
|
||
<p><strong>图表 2</strong></p>
|
||
<figure>
|
||
<img src="temp_mermaid_water_biz_database_design_6403/diagram_2.png"
|
||
alt="图表 2" />
|
||
<figcaption aria-hidden="true">图表 2</figcaption>
|
||
</figure>
|
||
<details>
|
||
<summary>
|
||
查看图表源码
|
||
</summary>
|
||
<pre class="mermaid"><code>graph TB
|
||
subgraph "多租户数据隔离"
|
||
TENANT1[租户1: 福建水务集团]
|
||
TENANT2[租户2: 厦门分公司]
|
||
TENANT3[租户3: 泉州分公司]
|
||
end
|
||
|
||
subgraph "共享数据库"
|
||
subgraph "业务表结构"
|
||
TABLE1[water_customer<br/>+ tenant_id]
|
||
TABLE2[water_meter<br/>+ tenant_id]
|
||
TABLE3[water_bill<br/>+ tenant_id]
|
||
TABLE4[water_payment<br/>+ tenant_id]
|
||
end
|
||
|
||
subgraph "租户隔离机制"
|
||
INTERCEPTOR[MyBatis Plus<br/>多租户拦截器]
|
||
FILTER[数据权限过滤器]
|
||
end
|
||
end
|
||
|
||
TENANT1 --> INTERCEPTOR
|
||
TENANT2 --> INTERCEPTOR
|
||
TENANT3 --> INTERCEPTOR
|
||
|
||
INTERCEPTOR --> FILTER
|
||
FILTER --> TABLE1
|
||
FILTER --> TABLE2
|
||
FILTER --> TABLE3
|
||
FILTER --> TABLE4
|
||
</code></pre>
|
||
</details>
|
||
<h3 data-number="1.4.3" id="通用字段设计"><span
|
||
class="header-section-number">1.4.3</span> 3. 通用字段设计</h3>
|
||
<p>所有业务表统一包含以下基础字段:</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>字段名</th>
|
||
<th>数据类型</th>
|
||
<th>长度</th>
|
||
<th>默认值</th>
|
||
<th>描述</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>id</td>
|
||
<td>BIGINT</td>
|
||
<td>-</td>
|
||
<td>AUTO_INCREMENT</td>
|
||
<td>主键ID</td>
|
||
</tr>
|
||
<tr>
|
||
<td>tenant_id</td>
|
||
<td>BIGINT</td>
|
||
<td>-</td>
|
||
<td>0</td>
|
||
<td>租户ID(多租户隔离)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>creator</td>
|
||
<td>VARCHAR</td>
|
||
<td>64</td>
|
||
<td>’’</td>
|
||
<td>创建者</td>
|
||
</tr>
|
||
<tr>
|
||
<td>create_time</td>
|
||
<td>DATETIME</td>
|
||
<td>-</td>
|
||
<td>CURRENT_TIMESTAMP</td>
|
||
<td>创建时间</td>
|
||
</tr>
|
||
<tr>
|
||
<td>updater</td>
|
||
<td>VARCHAR</td>
|
||
<td>64</td>
|
||
<td>’’</td>
|
||
<td>更新者</td>
|
||
</tr>
|
||
<tr>
|
||
<td>update_time</td>
|
||
<td>DATETIME</td>
|
||
<td>-</td>
|
||
<td>CURRENT_TIMESTAMP</td>
|
||
<td>更新时间</td>
|
||
</tr>
|
||
<tr>
|
||
<td>deleted</td>
|
||
<td>BIT</td>
|
||
<td>1</td>
|
||
<td>0</td>
|
||
<td>逻辑删除标识</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h2 data-number="1.5" id="三核心数据模型er图"><span
|
||
class="header-section-number">1.5</span> 三、核心数据模型ER图</h2>
|
||
<h3 data-number="1.5.1" id="客户管理模块er图"><span
|
||
class="header-section-number">1.5.1</span> 1. 客户管理模块ER图</h3>
|
||
<p><strong>图表 3</strong></p>
|
||
<figure>
|
||
<img src="temp_mermaid_water_biz_database_design_6403/diagram_3.png"
|
||
alt="图表 3" />
|
||
<figcaption aria-hidden="true">图表 3</figcaption>
|
||
</figure>
|
||
<details>
|
||
<summary>
|
||
查看图表源码
|
||
</summary>
|
||
<pre class="mermaid"><code>erDiagram
|
||
WATER_CUSTOMER {
|
||
bigint id PK "主键ID"
|
||
varchar customer_code UK "客户编号"
|
||
varchar customer_name "客户名称"
|
||
varchar customer_type "客户类型"
|
||
varchar id_type "证件类型"
|
||
varchar id_number "证件号码"
|
||
varchar phone "联系电话"
|
||
varchar address "详细地址"
|
||
varchar area_code "行政区划代码"
|
||
tinyint status "状态"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_METER {
|
||
bigint id PK "主键ID"
|
||
varchar meter_code UK "水表编号"
|
||
varchar meter_no "水表表号"
|
||
varchar meter_type "水表类型"
|
||
varchar meter_model "水表型号"
|
||
varchar meter_caliber "水表口径"
|
||
date install_date "安装日期"
|
||
varchar install_position "安装位置"
|
||
decimal initial_reading "初始读数"
|
||
decimal current_reading "当前读数"
|
||
varchar reading_cycle "抄表周期"
|
||
varchar book_code "册本编号"
|
||
tinyint status "状态"
|
||
bigint customer_id FK "客户ID"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_CUSTOMER_ACCOUNT {
|
||
bigint id PK "主键ID"
|
||
decimal balance "账户余额"
|
||
decimal credit_amount "信用额度"
|
||
date last_payment_date "最近缴费日期"
|
||
tinyint status "账户状态"
|
||
bigint customer_id FK "客户ID"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_CUSTOMER ||--o{ WATER_METER : "拥有"
|
||
WATER_CUSTOMER ||--|| WATER_CUSTOMER_ACCOUNT : "对应"
|
||
</code></pre>
|
||
</details>
|
||
<h3 data-number="1.5.2" id="营收管理模块er图"><span
|
||
class="header-section-number">1.5.2</span> 2. 营收管理模块ER图</h3>
|
||
<p><strong>图表 4</strong></p>
|
||
<figure>
|
||
<img src="temp_mermaid_water_biz_database_design_6403/diagram_4.png"
|
||
alt="图表 4" />
|
||
<figcaption aria-hidden="true">图表 4</figcaption>
|
||
</figure>
|
||
<details>
|
||
<summary>
|
||
查看图表源码
|
||
</summary>
|
||
<pre class="mermaid"><code>erDiagram
|
||
WATER_METER_READING {
|
||
bigint id PK "主键ID"
|
||
varchar reading_code UK "抄表记录编号"
|
||
date reading_date "抄表日期"
|
||
decimal reading_value "抄表读数"
|
||
decimal prev_reading_value "上次读数"
|
||
decimal water_usage "用水量"
|
||
varchar reading_type "抄表类型"
|
||
varchar reader_id "抄表员ID"
|
||
varchar remark "备注"
|
||
tinyint status "状态"
|
||
bigint meter_id FK "水表ID"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_BILL {
|
||
bigint id PK "主键ID"
|
||
varchar bill_code UK "账单编号"
|
||
varchar bill_month "账期"
|
||
decimal water_usage "用水量"
|
||
decimal water_fee "水费金额"
|
||
decimal sewage_fee "污水处理费"
|
||
decimal other_fee "其他费用"
|
||
decimal total_amount "总金额"
|
||
date due_date "缴费截止日期"
|
||
tinyint bill_status "账单状态"
|
||
bigint customer_id FK "客户ID"
|
||
bigint meter_id FK "水表ID"
|
||
bigint reading_id FK "抄表记录ID"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_PAYMENT {
|
||
bigint id PK "主键ID"
|
||
varchar payment_code UK "缴费记录编号"
|
||
varchar payment_type "缴费类型"
|
||
varchar payment_channel "缴费渠道"
|
||
decimal payment_amount "缴费金额"
|
||
datetime payment_time "缴费时间"
|
||
varchar transaction_no "交易流水号"
|
||
varchar operator_id "操作员ID"
|
||
varchar remark "备注"
|
||
tinyint payment_status "缴费状态"
|
||
bigint bill_id FK "账单ID"
|
||
bigint customer_id FK "客户ID"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_METER_READING ||--|| WATER_BILL : "生成"
|
||
WATER_BILL ||--o{ WATER_PAYMENT : "对应"
|
||
</code></pre>
|
||
</details>
|
||
<h3 data-number="1.5.3" id="表务管理模块er图"><span
|
||
class="header-section-number">1.5.3</span> 3. 表务管理模块ER图</h3>
|
||
<p><strong>图表 5</strong></p>
|
||
<figure>
|
||
<img src="temp_mermaid_water_biz_database_design_6403/diagram_5.png"
|
||
alt="图表 5" />
|
||
<figcaption aria-hidden="true">图表 5</figcaption>
|
||
</figure>
|
||
<details>
|
||
<summary>
|
||
查看图表源码
|
||
</summary>
|
||
<pre class="mermaid"><code>erDiagram
|
||
WATER_METER_ARCHIVE {
|
||
bigint id PK "主键ID"
|
||
varchar archive_code UK "档案编号"
|
||
varchar manufacturer "生产厂家"
|
||
date production_date "生产日期"
|
||
int valid_period "有效期(月)"
|
||
date verification_date "检定日期"
|
||
date next_verification_date "下次检定日期"
|
||
varchar certificate_no "检定证书号"
|
||
tinyint archive_status "档案状态"
|
||
bigint meter_id FK "水表ID"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_METER_WORKORDER {
|
||
bigint id PK "主键ID"
|
||
varchar workorder_code UK "工单编号"
|
||
varchar workorder_type "工单类型"
|
||
varchar workorder_status "工单状态"
|
||
date apply_date "申请日期"
|
||
date plan_date "计划执行日期"
|
||
date execute_date "实际执行日期"
|
||
varchar applicant_id "申请人ID"
|
||
varchar executor_id "执行人ID"
|
||
varchar reason "申请原因"
|
||
varchar result "执行结果"
|
||
bigint meter_id FK "水表ID"
|
||
bigint customer_id FK "客户ID"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_METER_STOCK {
|
||
bigint id PK "主键ID"
|
||
varchar stock_code UK "库存编号"
|
||
varchar warehouse_code "仓库编码"
|
||
varchar warehouse_name "仓库名称"
|
||
int stock_quantity "库存数量"
|
||
int min_stock "最小库存"
|
||
int max_stock "最大库存"
|
||
varchar meter_model "水表型号"
|
||
varchar meter_caliber "水表口径"
|
||
tinyint stock_status "库存状态"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
WATER_METER ||--|| WATER_METER_ARCHIVE : "对应"
|
||
WATER_METER ||--o{ WATER_METER_WORKORDER : "产生"
|
||
</code></pre>
|
||
</details>
|
||
<h3 data-number="1.5.4" id="系统管理模块er图"><span
|
||
class="header-section-number">1.5.4</span> 4. 系统管理模块ER图</h3>
|
||
<p><strong>图表 6</strong></p>
|
||
<figure>
|
||
<img src="temp_mermaid_water_biz_database_design_6403/diagram_6.png"
|
||
alt="图表 6" />
|
||
<figcaption aria-hidden="true">图表 6</figcaption>
|
||
</figure>
|
||
<details>
|
||
<summary>
|
||
查看图表源码
|
||
</summary>
|
||
<pre class="mermaid"><code>erDiagram
|
||
SYSTEM_TENANT {
|
||
bigint id PK "主键ID"
|
||
varchar tenant_name "租户名称"
|
||
varchar tenant_code UK "租户编码"
|
||
varchar contact_name "联系人"
|
||
varchar contact_phone "联系电话"
|
||
varchar contact_email "联系邮箱"
|
||
tinyint tenant_status "租户状态"
|
||
datetime expire_time "过期时间"
|
||
varchar domain "域名"
|
||
varchar package_name "套餐名称"
|
||
int user_count "用户数量"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
SYSTEM_USERS {
|
||
bigint id PK "主键ID"
|
||
varchar username UK "用户名"
|
||
varchar password "密码"
|
||
varchar nickname "昵称"
|
||
varchar remark "备注"
|
||
varchar dept_id "部门ID"
|
||
varchar post_ids "岗位ID列表"
|
||
varchar email "邮箱"
|
||
varchar mobile "手机号"
|
||
tinyint sex "性别"
|
||
varchar avatar "头像"
|
||
tinyint status "状态"
|
||
datetime login_date "最后登录时间"
|
||
varchar login_ip "最后登录IP"
|
||
bigint tenant_id "租户ID"
|
||
varchar creator "创建者"
|
||
datetime create_time "创建时间"
|
||
varchar updater "更新者"
|
||
datetime update_time "更新时间"
|
||
tinyint deleted "是否删除"
|
||
}
|
||
|
||
SYSTEM_TENANT ||--o{ SYSTEM_USERS : "包含"
|
||
</code></pre>
|
||
</details>
|
||
<h2 data-number="1.6" id="四核心数据表设计"><span
|
||
class="header-section-number">1.6</span> 四、核心数据表设计</h2>
|
||
<h3 data-number="1.6.1" id="表务管理模块er图-1"><span
|
||
class="header-section-number">1.6.1</span> 1. 表务管理模块ER图</h3>
|
||
<p><strong>图表 7</strong></p>
|
||
<figure>
|
||
<img src="temp_mermaid_water_biz_database_design_6403/diagram_7.png"
|
||
alt="图表 7" />
|
||
<figcaption aria-hidden="true">图表 7</figcaption>
|
||
</figure>
|
||
<details>
|
||
<summary>
|
||
查看图表源码
|
||
</summary>
|
||
<pre class="mermaid"><code>erDiagram
|
||
WATER_METER_WORKORDER {
|
||
bigint id PK "主键ID"
|
||
varchar workorder_code UK "工单编号"
|
||
varchar workorder_type "工单类型"
|
||
varchar workorder_status "工单状态"
|
||
date apply_date "申请日期"
|
||
date plan_date "计划执行日期"
|
||
date execute_date "实际执行日期"
|
||
varchar applicant_id "申请人ID"
|
||
varchar executor_id "执行人ID"
|
||
varchar reason "申请原因"
|
||
varchar result "执行结果"
|
||
bigint meter_id FK "水表ID"
|
||
bigint customer_id FK "客户ID"
|
||
bigint tenant_id "租户ID"
|
||
}
|
||
|
||
WATER_METER_STOCK {
|
||
bigint id PK "主键ID"
|
||
varchar stock_code UK "库存编号"
|
||
varchar meter_brand "水表品牌"
|
||
varchar meter_model "水表型号"
|
||
varchar meter_caliber "水表口径"
|
||
int stock_quantity "库存数量"
|
||
int min_stock "最小库存"
|
||
decimal unit_price "单价"
|
||
varchar warehouse_location "仓库位置"
|
||
tinyint stock_status "库存状态"
|
||
bigint tenant_id "租户ID"
|
||
}
|
||
|
||
WATER_METER_INVENTORY {
|
||
bigint id PK "主键ID"
|
||
varchar inventory_code UK "出入库编号"
|
||
varchar inventory_type "出入库类型"
|
||
int quantity "数量"
|
||
decimal unit_price "单价"
|
||
decimal total_amount "总金额"
|
||
varchar operator_id "操作员ID"
|
||
datetime operation_time "操作时间"
|
||
varchar remark "备注"
|
||
bigint stock_id FK "库存ID"
|
||
bigint workorder_id FK "工单ID"
|
||
bigint tenant_id "租户ID"
|
||
}
|
||
|
||
WATER_METER ||--o{ WATER_METER_WORKORDER : "生成"
|
||
WATER_METER_STOCK ||--o{ WATER_METER_INVENTORY : "出入库"
|
||
WATER_METER_WORKORDER ||--o{ WATER_METER_INVENTORY : "关联"
|
||
</code></pre>
|
||
</details>
|
||
<h3 data-number="1.6.2" id="系统管理模块er图-1"><span
|
||
class="header-section-number">1.6.2</span> 2. 系统管理模块ER图</h3>
|
||
<p><strong>图表 8</strong></p>
|
||
<figure>
|
||
<img src="temp_mermaid_water_biz_database_design_6403/diagram_8.png"
|
||
alt="图表 8" />
|
||
<figcaption aria-hidden="true">图表 8</figcaption>
|
||
</figure>
|
||
<details>
|
||
<summary>
|
||
查看图表源码
|
||
</summary>
|
||
<pre class="mermaid"><code>erDiagram
|
||
WATER_DICT_TYPE {
|
||
bigint id PK "主键ID"
|
||
varchar dict_name "字典名称"
|
||
varchar dict_type UK "字典类型"
|
||
varchar remark "备注"
|
||
tinyint status "状态"
|
||
bigint tenant_id "租户ID"
|
||
}
|
||
|
||
WATER_DICT_DATA {
|
||
bigint id PK "主键ID"
|
||
varchar dict_type "字典类型"
|
||
varchar dict_label "字典标签"
|
||
varchar dict_value "字典键值"
|
||
int dict_sort "字典排序"
|
||
varchar color_type "颜色类型"
|
||
varchar css_class "CSS类名"
|
||
varchar remark "备注"
|
||
tinyint status "状态"
|
||
bigint tenant_id "租户ID"
|
||
}
|
||
|
||
WATER_CONFIG {
|
||
bigint id PK "主键ID"
|
||
varchar config_name "参数名称"
|
||
varchar config_key UK "参数键名"
|
||
varchar config_value "参数键值"
|
||
varchar config_type "系统内置"
|
||
varchar remark "备注"
|
||
bigint tenant_id "租户ID"
|
||
}
|
||
|
||
WATER_PRICE_CONFIG {
|
||
bigint id PK "主键ID"
|
||
varchar price_name "水价名称"
|
||
varchar customer_type "客户类型"
|
||
varchar price_type "价格类型"
|
||
decimal base_price "基础价格"
|
||
decimal sewage_price "污水处理费"
|
||
decimal garbage_price "垃圾处理费"
|
||
date effective_date "生效日期"
|
||
date expire_date "失效日期"
|
||
tinyint status "状态"
|
||
bigint tenant_id "租户ID"
|
||
}
|
||
|
||
WATER_DICT_TYPE ||--o{ WATER_DICT_DATA : "包含"
|
||
</code></pre>
|
||
</details>
|
||
<h2 data-number="1.7" id="五完整ddl语句"><span
|
||
class="header-section-number">1.7</span> 五、完整DDL语句</h2>
|
||
<h3 data-number="1.7.1" id="客户管理相关表ddl"><span
|
||
class="header-section-number">1.7.1</span> 1. 客户管理相关表DDL</h3>
|
||
<h4 data-number="1.7.1.1" id="客户基本信息表"><span
|
||
class="header-section-number">1.7.1.1</span> 1.1 客户基本信息表</h4>
|
||
<div class="sourceCode" id="cb9"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_customer` (</span>
|
||
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a> `customer_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户编号'</span>,</span>
|
||
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a> `customer_name` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户名称'</span>,</span>
|
||
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true" tabindex="-1"></a> `customer_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户类型(居民:RESIDENT,非居民:NON_RESIDENT,工业:INDUSTRIAL,行政:ADMINISTRATIVE)'</span>,</span>
|
||
<span id="cb9-6"><a href="#cb9-6" aria-hidden="true" tabindex="-1"></a> `id_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'证件类型(身份证:ID_CARD,营业执照:BUSINESS_LICENSE)'</span>,</span>
|
||
<span id="cb9-7"><a href="#cb9-7" aria-hidden="true" tabindex="-1"></a> `id_number` <span class="dt">varchar</span>(<span class="dv">30</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'证件号码'</span>,</span>
|
||
<span id="cb9-8"><a href="#cb9-8" aria-hidden="true" tabindex="-1"></a> `phone` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'联系电话'</span>,</span>
|
||
<span id="cb9-9"><a href="#cb9-9" aria-hidden="true" tabindex="-1"></a> `mobile` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'手机号码'</span>,</span>
|
||
<span id="cb9-10"><a href="#cb9-10" aria-hidden="true" tabindex="-1"></a> `email` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'邮箱'</span>,</span>
|
||
<span id="cb9-11"><a href="#cb9-11" aria-hidden="true" tabindex="-1"></a> `address` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'详细地址'</span>,</span>
|
||
<span id="cb9-12"><a href="#cb9-12" aria-hidden="true" tabindex="-1"></a> `area_code` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'行政区划代码'</span>,</span>
|
||
<span id="cb9-13"><a href="#cb9-13" aria-hidden="true" tabindex="-1"></a> `postal_code` <span class="dt">varchar</span>(<span class="dv">10</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'邮政编码'</span>,</span>
|
||
<span id="cb9-14"><a href="#cb9-14" aria-hidden="true" tabindex="-1"></a> `contact_person` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'联系人'</span>,</span>
|
||
<span id="cb9-15"><a href="#cb9-15" aria-hidden="true" tabindex="-1"></a> `bank_account` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'银行账户'</span>,</span>
|
||
<span id="cb9-16"><a href="#cb9-16" aria-hidden="true" tabindex="-1"></a> `bank_name` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'开户银行'</span>,</span>
|
||
<span id="cb9-17"><a href="#cb9-17" aria-hidden="true" tabindex="-1"></a> `remark` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'备注信息'</span>,</span>
|
||
<span id="cb9-18"><a href="#cb9-18" aria-hidden="true" tabindex="-1"></a> `status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'状态(0:停用,1:正常,2:欠费,3:销户)'</span>,</span>
|
||
<span id="cb9-19"><a href="#cb9-19" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb9-20"><a href="#cb9-20" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb9-21"><a href="#cb9-21" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb9-22"><a href="#cb9-22" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb9-23"><a href="#cb9-23" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb9-24"><a href="#cb9-24" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb9-25"><a href="#cb9-25" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb9-26"><a href="#cb9-26" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_customer_code` (`customer_code`, `tenant_id`),</span>
|
||
<span id="cb9-27"><a href="#cb9-27" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_customer_name` (`customer_name`),</span>
|
||
<span id="cb9-28"><a href="#cb9-28" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_phone` (`phone`),</span>
|
||
<span id="cb9-29"><a href="#cb9-29" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_id_number` (`id_number`),</span>
|
||
<span id="cb9-30"><a href="#cb9-30" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_tenant_customer_type` (`tenant_id`, `customer_type`),</span>
|
||
<span id="cb9-31"><a href="#cb9-31" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_status` (`status`),</span>
|
||
<span id="cb9-32"><a href="#cb9-32" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_create_time` (`create_time`)</span>
|
||
<span id="cb9-33"><a href="#cb9-33" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'客户基本信息表'</span>;</span></code></pre></div>
|
||
<h4 data-number="1.7.1.2" id="水表信息表"><span
|
||
class="header-section-number">1.7.1.2</span> 1.2 水表信息表</h4>
|
||
<div class="sourceCode" id="cb10"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_meter` (</span>
|
||
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a> `meter_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表编号'</span>,</span>
|
||
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a> `meter_no` <span class="dt">varchar</span>(<span class="dv">30</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表表号'</span>,</span>
|
||
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true" tabindex="-1"></a> `meter_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表类型(机械:MECHANICAL,智能:SMART,远传:REMOTE)'</span>,</span>
|
||
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true" tabindex="-1"></a> `meter_model` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表型号'</span>,</span>
|
||
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true" tabindex="-1"></a> `meter_caliber` <span class="dt">varchar</span>(<span class="dv">10</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表口径(15mm,20mm,25mm等)'</span>,</span>
|
||
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true" tabindex="-1"></a> `manufacturer` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'生产厂家'</span>,</span>
|
||
<span id="cb10-9"><a href="#cb10-9" aria-hidden="true" tabindex="-1"></a> `production_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'生产日期'</span>,</span>
|
||
<span id="cb10-10"><a href="#cb10-10" aria-hidden="true" tabindex="-1"></a> `install_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'安装日期'</span>,</span>
|
||
<span id="cb10-11"><a href="#cb10-11" aria-hidden="true" tabindex="-1"></a> `install_position` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'安装位置'</span>,</span>
|
||
<span id="cb10-12"><a href="#cb10-12" aria-hidden="true" tabindex="-1"></a> `longitude` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">7</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'经度'</span>,</span>
|
||
<span id="cb10-13"><a href="#cb10-13" aria-hidden="true" tabindex="-1"></a> `latitude` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">7</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'纬度'</span>,</span>
|
||
<span id="cb10-14"><a href="#cb10-14" aria-hidden="true" tabindex="-1"></a> `initial_reading` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'初始读数'</span>,</span>
|
||
<span id="cb10-15"><a href="#cb10-15" aria-hidden="true" tabindex="-1"></a> `current_reading` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'当前读数'</span>,</span>
|
||
<span id="cb10-16"><a href="#cb10-16" aria-hidden="true" tabindex="-1"></a> `reading_cycle` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'MONTHLY'</span> <span class="kw">COMMENT</span> <span class="st">'抄表周期(月度:MONTHLY,双月:BIMONTHLY,季度:QUARTERLY)'</span>,</span>
|
||
<span id="cb10-17"><a href="#cb10-17" aria-hidden="true" tabindex="-1"></a> `book_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'册本编号'</span>,</span>
|
||
<span id="cb10-18"><a href="#cb10-18" aria-hidden="true" tabindex="-1"></a> `reading_route` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表路线'</span>,</span>
|
||
<span id="cb10-19"><a href="#cb10-19" aria-hidden="true" tabindex="-1"></a> `meter_status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'水表状态(0:停用,1:正常,2:故障,3:拆除)'</span>,</span>
|
||
<span id="cb10-20"><a href="#cb10-20" aria-hidden="true" tabindex="-1"></a> `customer_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户ID'</span>,</span>
|
||
<span id="cb10-21"><a href="#cb10-21" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb10-22"><a href="#cb10-22" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb10-23"><a href="#cb10-23" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb10-24"><a href="#cb10-24" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb10-25"><a href="#cb10-25" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb10-26"><a href="#cb10-26" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb10-27"><a href="#cb10-27" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb10-28"><a href="#cb10-28" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_meter_code` (`meter_code`, `tenant_id`),</span>
|
||
<span id="cb10-29"><a href="#cb10-29" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_no` (`meter_no`),</span>
|
||
<span id="cb10-30"><a href="#cb10-30" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_customer_id` (`customer_id`),</span>
|
||
<span id="cb10-31"><a href="#cb10-31" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_book_code` (`book_code`),</span>
|
||
<span id="cb10-32"><a href="#cb10-32" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_type` (`meter_type`),</span>
|
||
<span id="cb10-33"><a href="#cb10-33" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_status` (`meter_status`),</span>
|
||
<span id="cb10-34"><a href="#cb10-34" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_tenant_status` (`tenant_id`, `meter_status`),</span>
|
||
<span id="cb10-35"><a href="#cb10-35" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_meter_customer` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`customer_id`) <span class="kw">REFERENCES</span> `water_customer` (`id`)</span>
|
||
<span id="cb10-36"><a href="#cb10-36" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'水表信息表'</span>;</span></code></pre></div>
|
||
<h3 data-number="1.7.2" id="表务工单管理表ddl"><span
|
||
class="header-section-number">1.7.2</span> 3. 表务工单管理表DDL</h3>
|
||
<h4 data-number="1.7.2.1" id="表务工单表"><span
|
||
class="header-section-number">1.7.2.1</span> 3.1 表务工单表</h4>
|
||
<div class="sourceCode" id="cb11"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_meter_workorder` (</span>
|
||
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a> `workorder_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'工单编号'</span>,</span>
|
||
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true" tabindex="-1"></a> `workorder_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'工单类型(换表:CHANGE,移表:MOVE,拆表:REMOVE,装表:INSTALL,维修:REPAIR)'</span>,</span>
|
||
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true" tabindex="-1"></a> `workorder_status` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'PENDING'</span> <span class="kw">COMMENT</span> <span class="st">'工单状态(待处理:PENDING,执行中:PROCESSING,已完成:COMPLETED,已取消:CANCELLED)'</span>,</span>
|
||
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true" tabindex="-1"></a> `apply_date` <span class="dt">date</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'申请日期'</span>,</span>
|
||
<span id="cb11-7"><a href="#cb11-7" aria-hidden="true" tabindex="-1"></a> `plan_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'计划执行日期'</span>,</span>
|
||
<span id="cb11-8"><a href="#cb11-8" aria-hidden="true" tabindex="-1"></a> `execute_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'实际执行日期'</span>,</span>
|
||
<span id="cb11-9"><a href="#cb11-9" aria-hidden="true" tabindex="-1"></a> `applicant_id` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'申请人ID'</span>,</span>
|
||
<span id="cb11-10"><a href="#cb11-10" aria-hidden="true" tabindex="-1"></a> `applicant_name` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'申请人姓名'</span>,</span>
|
||
<span id="cb11-11"><a href="#cb11-11" aria-hidden="true" tabindex="-1"></a> `executor_id` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'执行人ID'</span>,</span>
|
||
<span id="cb11-12"><a href="#cb11-12" aria-hidden="true" tabindex="-1"></a> `executor_name` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'执行人姓名'</span>,</span>
|
||
<span id="cb11-13"><a href="#cb11-13" aria-hidden="true" tabindex="-1"></a> `reason` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'申请原因'</span>,</span>
|
||
<span id="cb11-14"><a href="#cb11-14" aria-hidden="true" tabindex="-1"></a> `result` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'执行结果'</span>,</span>
|
||
<span id="cb11-15"><a href="#cb11-15" aria-hidden="true" tabindex="-1"></a> `old_meter_no` <span class="dt">varchar</span>(<span class="dv">30</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'旧水表表号'</span>,</span>
|
||
<span id="cb11-16"><a href="#cb11-16" aria-hidden="true" tabindex="-1"></a> `new_meter_no` <span class="dt">varchar</span>(<span class="dv">30</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'新水表表号'</span>,</span>
|
||
<span id="cb11-17"><a href="#cb11-17" aria-hidden="true" tabindex="-1"></a> `old_reading` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'旧表读数'</span>,</span>
|
||
<span id="cb11-18"><a href="#cb11-18" aria-hidden="true" tabindex="-1"></a> `new_reading` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'新表读数'</span>,</span>
|
||
<span id="cb11-19"><a href="#cb11-19" aria-hidden="true" tabindex="-1"></a> `cost_amount` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'费用金额'</span>,</span>
|
||
<span id="cb11-20"><a href="#cb11-20" aria-hidden="true" tabindex="-1"></a> `remark` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'备注'</span>,</span>
|
||
<span id="cb11-21"><a href="#cb11-21" aria-hidden="true" tabindex="-1"></a> `meter_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表ID'</span>,</span>
|
||
<span id="cb11-22"><a href="#cb11-22" aria-hidden="true" tabindex="-1"></a> `customer_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户ID'</span>,</span>
|
||
<span id="cb11-23"><a href="#cb11-23" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb11-24"><a href="#cb11-24" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb11-25"><a href="#cb11-25" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb11-26"><a href="#cb11-26" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb11-27"><a href="#cb11-27" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb11-28"><a href="#cb11-28" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb11-29"><a href="#cb11-29" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb11-30"><a href="#cb11-30" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_workorder_code` (`workorder_code`, `tenant_id`),</span>
|
||
<span id="cb11-31"><a href="#cb11-31" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_workorder_type` (`workorder_type`),</span>
|
||
<span id="cb11-32"><a href="#cb11-32" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_workorder_status` (`workorder_status`),</span>
|
||
<span id="cb11-33"><a href="#cb11-33" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_apply_date` (`apply_date`),</span>
|
||
<span id="cb11-34"><a href="#cb11-34" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_id` (`meter_id`),</span>
|
||
<span id="cb11-35"><a href="#cb11-35" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_customer_id` (`customer_id`),</span>
|
||
<span id="cb11-36"><a href="#cb11-36" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_tenant_type_status` (`tenant_id`, `workorder_type`, `workorder_status`),</span>
|
||
<span id="cb11-37"><a href="#cb11-37" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_workorder_meter` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`meter_id`) <span class="kw">REFERENCES</span> `water_meter` (`id`),</span>
|
||
<span id="cb11-38"><a href="#cb11-38" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_workorder_customer` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`customer_id`) <span class="kw">REFERENCES</span> `water_customer` (`id`)</span>
|
||
<span id="cb11-39"><a href="#cb11-39" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'表务工单表'</span>;</span></code></pre></div>
|
||
<h4 data-number="1.7.2.2" id="水表库存管理表"><span
|
||
class="header-section-number">1.7.2.2</span> 3.2 水表库存管理表</h4>
|
||
<div class="sourceCode" id="cb12"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_meter_stock` (</span>
|
||
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a> `stock_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'库存编号'</span>,</span>
|
||
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true" tabindex="-1"></a> `meter_brand` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表品牌'</span>,</span>
|
||
<span id="cb12-5"><a href="#cb12-5" aria-hidden="true" tabindex="-1"></a> `meter_model` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表型号'</span>,</span>
|
||
<span id="cb12-6"><a href="#cb12-6" aria-hidden="true" tabindex="-1"></a> `meter_caliber` <span class="dt">varchar</span>(<span class="dv">10</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表口径'</span>,</span>
|
||
<span id="cb12-7"><a href="#cb12-7" aria-hidden="true" tabindex="-1"></a> `meter_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表类型'</span>,</span>
|
||
<span id="cb12-8"><a href="#cb12-8" aria-hidden="true" tabindex="-1"></a> `stock_quantity` <span class="dt">int</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'库存数量'</span>,</span>
|
||
<span id="cb12-9"><a href="#cb12-9" aria-hidden="true" tabindex="-1"></a> `min_stock` <span class="dt">int</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'最小库存'</span>,</span>
|
||
<span id="cb12-10"><a href="#cb12-10" aria-hidden="true" tabindex="-1"></a> `max_stock` <span class="dt">int</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'最大库存'</span>,</span>
|
||
<span id="cb12-11"><a href="#cb12-11" aria-hidden="true" tabindex="-1"></a> `unit_price` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'单价'</span>,</span>
|
||
<span id="cb12-12"><a href="#cb12-12" aria-hidden="true" tabindex="-1"></a> `warehouse_location` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'仓库位置'</span>,</span>
|
||
<span id="cb12-13"><a href="#cb12-13" aria-hidden="true" tabindex="-1"></a> `supplier` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'供应商'</span>,</span>
|
||
<span id="cb12-14"><a href="#cb12-14" aria-hidden="true" tabindex="-1"></a> `purchase_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'进货日期'</span>,</span>
|
||
<span id="cb12-15"><a href="#cb12-15" aria-hidden="true" tabindex="-1"></a> `warranty_period` <span class="dt">int</span> <span class="kw">DEFAULT</span> <span class="st">'24'</span> <span class="kw">COMMENT</span> <span class="st">'质保期(月)'</span>,</span>
|
||
<span id="cb12-16"><a href="#cb12-16" aria-hidden="true" tabindex="-1"></a> `stock_status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'库存状态(0:停用,1:正常,2:缺货,3:超储)'</span>,</span>
|
||
<span id="cb12-17"><a href="#cb12-17" aria-hidden="true" tabindex="-1"></a> `remark` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'备注'</span>,</span>
|
||
<span id="cb12-18"><a href="#cb12-18" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb12-19"><a href="#cb12-19" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb12-20"><a href="#cb12-20" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb12-21"><a href="#cb12-21" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb12-22"><a href="#cb12-22" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb12-23"><a href="#cb12-23" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb12-24"><a href="#cb12-24" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb12-25"><a href="#cb12-25" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_stock_code` (`stock_code`, `tenant_id`),</span>
|
||
<span id="cb12-26"><a href="#cb12-26" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_brand` (`meter_brand`),</span>
|
||
<span id="cb12-27"><a href="#cb12-27" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_model` (`meter_model`),</span>
|
||
<span id="cb12-28"><a href="#cb12-28" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_caliber` (`meter_caliber`),</span>
|
||
<span id="cb12-29"><a href="#cb12-29" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_stock_status` (`stock_status`),</span>
|
||
<span id="cb12-30"><a href="#cb12-30" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_tenant_brand_model` (`tenant_id`, `meter_brand`, `meter_model`)</span>
|
||
<span id="cb12-31"><a href="#cb12-31" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'水表库存管理表'</span>;</span></code></pre></div>
|
||
<h3 data-number="1.7.3" id="系统管理相关表ddl"><span
|
||
class="header-section-number">1.7.3</span> 4. 系统管理相关表DDL</h3>
|
||
<h4 data-number="1.7.3.1" id="数据字典类型表"><span
|
||
class="header-section-number">1.7.3.1</span> 4.1 数据字典类型表</h4>
|
||
<div class="sourceCode" id="cb13"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_dict_type` (</span>
|
||
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a> `dict_name` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'字典名称'</span>,</span>
|
||
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true" tabindex="-1"></a> `dict_type` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'字典类型'</span>,</span>
|
||
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true" tabindex="-1"></a> `remark` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'备注'</span>,</span>
|
||
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true" tabindex="-1"></a> `status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'状态(0:停用,1:正常)'</span>,</span>
|
||
<span id="cb13-7"><a href="#cb13-7" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb13-8"><a href="#cb13-8" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb13-9"><a href="#cb13-9" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb13-10"><a href="#cb13-10" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb13-11"><a href="#cb13-11" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb13-12"><a href="#cb13-12" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb13-13"><a href="#cb13-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb13-14"><a href="#cb13-14" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_dict_type` (`dict_type`, `tenant_id`),</span>
|
||
<span id="cb13-15"><a href="#cb13-15" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_status` (`status`)</span>
|
||
<span id="cb13-16"><a href="#cb13-16" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'数据字典类型表'</span>;</span></code></pre></div>
|
||
<h3 data-number="1.7.4" id="完整ddl语句列表"><span
|
||
class="header-section-number">1.7.4</span> 5. 完整DDL语句列表</h3>
|
||
<h4 data-number="1.7.4.1" id="客户基本信息表-opengauss版本"><span
|
||
class="header-section-number">1.7.4.1</span> 5.1 客户基本信息表
|
||
(OpenGauss版本)</h4>
|
||
<div class="sourceCode" id="cb14"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- OpenGauss数据库DDL语句</span></span>
|
||
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> water_customer (</span>
|
||
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a> <span class="kw">id</span> SERIAL <span class="kw">PRIMARY</span> <span class="kw">KEY</span>,</span>
|
||
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a> customer_code <span class="dt">VARCHAR</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a> customer_name <span class="dt">VARCHAR</span>(<span class="dv">100</span>) <span class="kw">NOT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a> customer_type <span class="dt">VARCHAR</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">CHECK</span> (customer_type <span class="kw">IN</span> (<span class="st">'RESIDENT'</span>,<span class="st">'NON_RESIDENT'</span>,<span class="st">'INDUSTRIAL'</span>,<span class="st">'ADMINISTRATIVE'</span>)),</span>
|
||
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a> id_type <span class="dt">VARCHAR</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">CHECK</span> (id_type <span class="kw">IN</span> (<span class="st">'ID_CARD'</span>,<span class="st">'BUSINESS_LICENSE'</span>) <span class="kw">OR</span> id_type <span class="kw">IS</span> <span class="kw">NULL</span>),</span>
|
||
<span id="cb14-8"><a href="#cb14-8" aria-hidden="true" tabindex="-1"></a> id_number <span class="dt">VARCHAR</span>(<span class="dv">30</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-9"><a href="#cb14-9" aria-hidden="true" tabindex="-1"></a> phone <span class="dt">VARCHAR</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-10"><a href="#cb14-10" aria-hidden="true" tabindex="-1"></a> mobile <span class="dt">VARCHAR</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-11"><a href="#cb14-11" aria-hidden="true" tabindex="-1"></a> email <span class="dt">VARCHAR</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-12"><a href="#cb14-12" aria-hidden="true" tabindex="-1"></a> address <span class="dt">VARCHAR</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-13"><a href="#cb14-13" aria-hidden="true" tabindex="-1"></a> area_code <span class="dt">VARCHAR</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-14"><a href="#cb14-14" aria-hidden="true" tabindex="-1"></a> postal_code <span class="dt">VARCHAR</span>(<span class="dv">10</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-15"><a href="#cb14-15" aria-hidden="true" tabindex="-1"></a> contact_person <span class="dt">VARCHAR</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-16"><a href="#cb14-16" aria-hidden="true" tabindex="-1"></a> bank_account <span class="dt">VARCHAR</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-17"><a href="#cb14-17" aria-hidden="true" tabindex="-1"></a> bank_name <span class="dt">VARCHAR</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-18"><a href="#cb14-18" aria-hidden="true" tabindex="-1"></a> remark <span class="dt">VARCHAR</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span>,</span>
|
||
<span id="cb14-19"><a href="#cb14-19" aria-hidden="true" tabindex="-1"></a> status <span class="dt">SMALLINT</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="dv">1</span> <span class="kw">CHECK</span> (status <span class="kw">IN</span> (<span class="dv">0</span>,<span class="dv">1</span>,<span class="dv">2</span>,<span class="dv">3</span>)),</span>
|
||
<span id="cb14-20"><a href="#cb14-20" aria-hidden="true" tabindex="-1"></a> tenant_id BIGINT <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="dv">0</span>,</span>
|
||
<span id="cb14-21"><a href="#cb14-21" aria-hidden="true" tabindex="-1"></a> creator <span class="dt">VARCHAR</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span>,</span>
|
||
<span id="cb14-22"><a href="#cb14-22" aria-hidden="true" tabindex="-1"></a> create_time <span class="dt">TIMESTAMP</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span>,</span>
|
||
<span id="cb14-23"><a href="#cb14-23" aria-hidden="true" tabindex="-1"></a> updater <span class="dt">VARCHAR</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span>,</span>
|
||
<span id="cb14-24"><a href="#cb14-24" aria-hidden="true" tabindex="-1"></a> update_time <span class="dt">TIMESTAMP</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span>,</span>
|
||
<span id="cb14-25"><a href="#cb14-25" aria-hidden="true" tabindex="-1"></a> deleted <span class="dt">BOOLEAN</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="kw">FALSE</span></span>
|
||
<span id="cb14-26"><a href="#cb14-26" aria-hidden="true" tabindex="-1"></a>);</span>
|
||
<span id="cb14-27"><a href="#cb14-27" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb14-28"><a href="#cb14-28" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建注释</span></span>
|
||
<span id="cb14-29"><a href="#cb14-29" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">TABLE</span> water_customer <span class="kw">IS</span> <span class="st">'客户基本信息表'</span>;</span>
|
||
<span id="cb14-30"><a href="#cb14-30" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.<span class="kw">id</span> <span class="kw">IS</span> <span class="st">'主键ID'</span>;</span>
|
||
<span id="cb14-31"><a href="#cb14-31" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.customer_code <span class="kw">IS</span> <span class="st">'客户编号'</span>;</span>
|
||
<span id="cb14-32"><a href="#cb14-32" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.customer_name <span class="kw">IS</span> <span class="st">'客户名称'</span>;</span>
|
||
<span id="cb14-33"><a href="#cb14-33" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.customer_type <span class="kw">IS</span> <span class="st">'客户类型(居民:RESIDENT,非居民:NON_RESIDENT,工业:INDUSTRIAL,行政:ADMINISTRATIVE)'</span>;</span>
|
||
<span id="cb14-34"><a href="#cb14-34" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.id_type <span class="kw">IS</span> <span class="st">'证件类型(身份证:ID_CARD,营业执照:BUSINESS_LICENSE)'</span>;</span>
|
||
<span id="cb14-35"><a href="#cb14-35" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.id_number <span class="kw">IS</span> <span class="st">'证件号码'</span>;</span>
|
||
<span id="cb14-36"><a href="#cb14-36" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.phone <span class="kw">IS</span> <span class="st">'联系电话'</span>;</span>
|
||
<span id="cb14-37"><a href="#cb14-37" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.mobile <span class="kw">IS</span> <span class="st">'手机号码'</span>;</span>
|
||
<span id="cb14-38"><a href="#cb14-38" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.email <span class="kw">IS</span> <span class="st">'邮箱'</span>;</span>
|
||
<span id="cb14-39"><a href="#cb14-39" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.address <span class="kw">IS</span> <span class="st">'详细地址'</span>;</span>
|
||
<span id="cb14-40"><a href="#cb14-40" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.area_code <span class="kw">IS</span> <span class="st">'行政区划代码'</span>;</span>
|
||
<span id="cb14-41"><a href="#cb14-41" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.postal_code <span class="kw">IS</span> <span class="st">'邮政编码'</span>;</span>
|
||
<span id="cb14-42"><a href="#cb14-42" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.contact_person <span class="kw">IS</span> <span class="st">'联系人'</span>;</span>
|
||
<span id="cb14-43"><a href="#cb14-43" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.bank_account <span class="kw">IS</span> <span class="st">'银行账户'</span>;</span>
|
||
<span id="cb14-44"><a href="#cb14-44" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.bank_name <span class="kw">IS</span> <span class="st">'开户银行'</span>;</span>
|
||
<span id="cb14-45"><a href="#cb14-45" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.remark <span class="kw">IS</span> <span class="st">'备注信息'</span>;</span>
|
||
<span id="cb14-46"><a href="#cb14-46" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.status <span class="kw">IS</span> <span class="st">'状态(0:停用,1:正常,2:欠费,3:销户)'</span>;</span>
|
||
<span id="cb14-47"><a href="#cb14-47" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.tenant_id <span class="kw">IS</span> <span class="st">'租户ID'</span>;</span>
|
||
<span id="cb14-48"><a href="#cb14-48" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.creator <span class="kw">IS</span> <span class="st">'创建者'</span>;</span>
|
||
<span id="cb14-49"><a href="#cb14-49" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.create_time <span class="kw">IS</span> <span class="st">'创建时间'</span>;</span>
|
||
<span id="cb14-50"><a href="#cb14-50" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.updater <span class="kw">IS</span> <span class="st">'更新者'</span>;</span>
|
||
<span id="cb14-51"><a href="#cb14-51" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.update_time <span class="kw">IS</span> <span class="st">'更新时间'</span>;</span>
|
||
<span id="cb14-52"><a href="#cb14-52" aria-hidden="true" tabindex="-1"></a><span class="kw">COMMENT</span> <span class="kw">ON</span> <span class="kw">COLUMN</span> water_customer.deleted <span class="kw">IS</span> <span class="st">'是否删除'</span>;</span>
|
||
<span id="cb14-53"><a href="#cb14-53" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb14-54"><a href="#cb14-54" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建索引</span></span>
|
||
<span id="cb14-55"><a href="#cb14-55" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">UNIQUE</span> <span class="kw">INDEX</span> uk_customer_code <span class="kw">ON</span> water_customer (customer_code, tenant_id);</span>
|
||
<span id="cb14-56"><a href="#cb14-56" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_customer_name <span class="kw">ON</span> water_customer (customer_name);</span>
|
||
<span id="cb14-57"><a href="#cb14-57" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_phone <span class="kw">ON</span> water_customer (phone);</span>
|
||
<span id="cb14-58"><a href="#cb14-58" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_id_number <span class="kw">ON</span> water_customer (id_number);</span>
|
||
<span id="cb14-59"><a href="#cb14-59" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_tenant_customer_type <span class="kw">ON</span> water_customer (tenant_id, customer_type);</span>
|
||
<span id="cb14-60"><a href="#cb14-60" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_status <span class="kw">ON</span> water_customer (status);</span>
|
||
<span id="cb14-61"><a href="#cb14-61" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_create_time <span class="kw">ON</span> water_customer (create_time);</span>
|
||
<span id="cb14-62"><a href="#cb14-62" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb14-63"><a href="#cb14-63" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建更新时间触发器</span></span>
|
||
<span id="cb14-64"><a href="#cb14-64" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">OR</span> <span class="kw">REPLACE</span> <span class="kw">FUNCTION</span> update_timestamp()</span>
|
||
<span id="cb14-65"><a href="#cb14-65" aria-hidden="true" tabindex="-1"></a>RETURNS <span class="kw">TRIGGER</span> <span class="kw">AS</span> $$</span>
|
||
<span id="cb14-66"><a href="#cb14-66" aria-hidden="true" tabindex="-1"></a><span class="cf">BEGIN</span></span>
|
||
<span id="cb14-67"><a href="#cb14-67" aria-hidden="true" tabindex="-1"></a> <span class="kw">NEW</span>.update_time <span class="op">=</span> <span class="fu">CURRENT_TIMESTAMP</span>;</span>
|
||
<span id="cb14-68"><a href="#cb14-68" aria-hidden="true" tabindex="-1"></a> <span class="kw">RETURN</span> <span class="kw">NEW</span>;</span>
|
||
<span id="cb14-69"><a href="#cb14-69" aria-hidden="true" tabindex="-1"></a><span class="cf">END</span>;</span>
|
||
<span id="cb14-70"><a href="#cb14-70" aria-hidden="true" tabindex="-1"></a>$$ LANGUAGE plpgsql;</span>
|
||
<span id="cb14-71"><a href="#cb14-71" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb14-72"><a href="#cb14-72" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TRIGGER</span> water_customer_update_timestamp</span>
|
||
<span id="cb14-73"><a href="#cb14-73" aria-hidden="true" tabindex="-1"></a> <span class="kw">BEFORE</span> <span class="kw">UPDATE</span> <span class="kw">ON</span> water_customer</span>
|
||
<span id="cb14-74"><a href="#cb14-74" aria-hidden="true" tabindex="-1"></a> <span class="cf">FOR</span> <span class="kw">EACH</span> <span class="kw">ROW</span></span>
|
||
<span id="cb14-75"><a href="#cb14-75" aria-hidden="true" tabindex="-1"></a> <span class="kw">EXECUTE</span> <span class="kw">FUNCTION</span> update_timestamp();</span></code></pre></div>
|
||
<h4 data-number="1.7.4.2" id="水表信息表-1"><span
|
||
class="header-section-number">1.7.4.2</span> 1.2 水表信息表</h4>
|
||
<div class="sourceCode" id="cb15"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_meter` (</span>
|
||
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a> `meter_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表编号'</span>,</span>
|
||
<span id="cb15-4"><a href="#cb15-4" aria-hidden="true" tabindex="-1"></a> `meter_no` <span class="dt">varchar</span>(<span class="dv">30</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表表号'</span>,</span>
|
||
<span id="cb15-5"><a href="#cb15-5" aria-hidden="true" tabindex="-1"></a> `meter_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表类型(机械:MECHANICAL,智能:SMART,远传:REMOTE)'</span>,</span>
|
||
<span id="cb15-6"><a href="#cb15-6" aria-hidden="true" tabindex="-1"></a> `meter_model` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表型号'</span>,</span>
|
||
<span id="cb15-7"><a href="#cb15-7" aria-hidden="true" tabindex="-1"></a> `meter_caliber` <span class="dt">varchar</span>(<span class="dv">10</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表口径(15mm,20mm,25mm等)'</span>,</span>
|
||
<span id="cb15-8"><a href="#cb15-8" aria-hidden="true" tabindex="-1"></a> `manufacturer` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'生产厂家'</span>,</span>
|
||
<span id="cb15-9"><a href="#cb15-9" aria-hidden="true" tabindex="-1"></a> `production_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'生产日期'</span>,</span>
|
||
<span id="cb15-10"><a href="#cb15-10" aria-hidden="true" tabindex="-1"></a> `install_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'安装日期'</span>,</span>
|
||
<span id="cb15-11"><a href="#cb15-11" aria-hidden="true" tabindex="-1"></a> `install_position` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'安装位置'</span>,</span>
|
||
<span id="cb15-12"><a href="#cb15-12" aria-hidden="true" tabindex="-1"></a> `longitude` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">7</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'经度'</span>,</span>
|
||
<span id="cb15-13"><a href="#cb15-13" aria-hidden="true" tabindex="-1"></a> `latitude` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">7</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'纬度'</span>,</span>
|
||
<span id="cb15-14"><a href="#cb15-14" aria-hidden="true" tabindex="-1"></a> `initial_reading` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'初始读数'</span>,</span>
|
||
<span id="cb15-15"><a href="#cb15-15" aria-hidden="true" tabindex="-1"></a> `current_reading` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'当前读数'</span>,</span>
|
||
<span id="cb15-16"><a href="#cb15-16" aria-hidden="true" tabindex="-1"></a> `reading_cycle` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'MONTHLY'</span> <span class="kw">COMMENT</span> <span class="st">'抄表周期(月度:MONTHLY,双月:BIMONTHLY,季度:QUARTERLY)'</span>,</span>
|
||
<span id="cb15-17"><a href="#cb15-17" aria-hidden="true" tabindex="-1"></a> `book_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'册本编号'</span>,</span>
|
||
<span id="cb15-18"><a href="#cb15-18" aria-hidden="true" tabindex="-1"></a> `reading_route` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表路线'</span>,</span>
|
||
<span id="cb15-19"><a href="#cb15-19" aria-hidden="true" tabindex="-1"></a> `meter_status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'水表状态(0:停用,1:正常,2:故障,3:拆除)'</span>,</span>
|
||
<span id="cb15-20"><a href="#cb15-20" aria-hidden="true" tabindex="-1"></a> `customer_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户ID'</span>,</span>
|
||
<span id="cb15-21"><a href="#cb15-21" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb15-22"><a href="#cb15-22" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb15-23"><a href="#cb15-23" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb15-24"><a href="#cb15-24" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb15-25"><a href="#cb15-25" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb15-26"><a href="#cb15-26" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb15-27"><a href="#cb15-27" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb15-28"><a href="#cb15-28" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_meter_code` (`meter_code`, `tenant_id`),</span>
|
||
<span id="cb15-29"><a href="#cb15-29" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_no` (`meter_no`),</span>
|
||
<span id="cb15-30"><a href="#cb15-30" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_customer_id` (`customer_id`),</span>
|
||
<span id="cb15-31"><a href="#cb15-31" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_book_code` (`book_code`),</span>
|
||
<span id="cb15-32"><a href="#cb15-32" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_type` (`meter_type`),</span>
|
||
<span id="cb15-33"><a href="#cb15-33" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_status` (`meter_status`),</span>
|
||
<span id="cb15-34"><a href="#cb15-34" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_tenant_status` (`tenant_id`, `meter_status`),</span>
|
||
<span id="cb15-35"><a href="#cb15-35" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_meter_customer` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`customer_id`) <span class="kw">REFERENCES</span> `water_customer` (`id`)</span>
|
||
<span id="cb15-36"><a href="#cb15-36" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'水表信息表'</span>;</span></code></pre></div>
|
||
<h4 data-number="1.7.4.3" id="客户账户表"><span
|
||
class="header-section-number">1.7.4.3</span> 1.3 客户账户表</h4>
|
||
<div class="sourceCode" id="cb16"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_customer_account` (</span>
|
||
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a> `account_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'账户编号'</span>,</span>
|
||
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true" tabindex="-1"></a> `balance` <span class="dt">decimal</span>(<span class="dv">12</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'账户余额'</span>,</span>
|
||
<span id="cb16-5"><a href="#cb16-5" aria-hidden="true" tabindex="-1"></a> `credit_amount` <span class="dt">decimal</span>(<span class="dv">12</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'信用额度'</span>,</span>
|
||
<span id="cb16-6"><a href="#cb16-6" aria-hidden="true" tabindex="-1"></a> `deposit_amount` <span class="dt">decimal</span>(<span class="dv">12</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'保证金'</span>,</span>
|
||
<span id="cb16-7"><a href="#cb16-7" aria-hidden="true" tabindex="-1"></a> `frozen_amount` <span class="dt">decimal</span>(<span class="dv">12</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'冻结金额'</span>,</span>
|
||
<span id="cb16-8"><a href="#cb16-8" aria-hidden="true" tabindex="-1"></a> `last_payment_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'最近缴费日期'</span>,</span>
|
||
<span id="cb16-9"><a href="#cb16-9" aria-hidden="true" tabindex="-1"></a> `last_payment_amount` <span class="dt">decimal</span>(<span class="dv">12</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'最近缴费金额'</span>,</span>
|
||
<span id="cb16-10"><a href="#cb16-10" aria-hidden="true" tabindex="-1"></a> `arrears_amount` <span class="dt">decimal</span>(<span class="dv">12</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'欠费金额'</span>,</span>
|
||
<span id="cb16-11"><a href="#cb16-11" aria-hidden="true" tabindex="-1"></a> `arrears_months` <span class="dt">int</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'欠费月数'</span>,</span>
|
||
<span id="cb16-12"><a href="#cb16-12" aria-hidden="true" tabindex="-1"></a> `account_status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'账户状态(0:停用,1:正常,2:欠费,3:冻结)'</span>,</span>
|
||
<span id="cb16-13"><a href="#cb16-13" aria-hidden="true" tabindex="-1"></a> `customer_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户ID'</span>,</span>
|
||
<span id="cb16-14"><a href="#cb16-14" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb16-15"><a href="#cb16-15" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb16-16"><a href="#cb16-16" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb16-17"><a href="#cb16-17" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb16-18"><a href="#cb16-18" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb16-19"><a href="#cb16-19" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb16-20"><a href="#cb16-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb16-21"><a href="#cb16-21" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_account_code` (`account_code`, `tenant_id`),</span>
|
||
<span id="cb16-22"><a href="#cb16-22" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_customer_account` (`customer_id`, `tenant_id`),</span>
|
||
<span id="cb16-23"><a href="#cb16-23" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_account_status` (`account_status`),</span>
|
||
<span id="cb16-24"><a href="#cb16-24" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_balance` (`balance`),</span>
|
||
<span id="cb16-25"><a href="#cb16-25" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_arrears` (`arrears_amount`),</span>
|
||
<span id="cb16-26"><a href="#cb16-26" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_account_customer` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`customer_id`) <span class="kw">REFERENCES</span> `water_customer` (`id`)</span>
|
||
<span id="cb16-27"><a href="#cb16-27" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'客户账户信息表'</span>;</span></code></pre></div>
|
||
<h3 data-number="1.7.5" id="营收管理相关表ddl"><span
|
||
class="header-section-number">1.7.5</span> 2. 营收管理相关表DDL</h3>
|
||
<h4 data-number="1.7.5.1" id="抄表记录表"><span
|
||
class="header-section-number">1.7.5.1</span> 2.1 抄表记录表</h4>
|
||
<div class="sourceCode" id="cb17"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_meter_reading` (</span>
|
||
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a> `reading_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表记录编号'</span>,</span>
|
||
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true" tabindex="-1"></a> `reading_date` <span class="dt">date</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表日期'</span>,</span>
|
||
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true" tabindex="-1"></a> `reading_time` datetime <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表时间'</span>,</span>
|
||
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true" tabindex="-1"></a> `reading_value` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表读数'</span>,</span>
|
||
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true" tabindex="-1"></a> `prev_reading_value` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'上次读数'</span>,</span>
|
||
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true" tabindex="-1"></a> `water_usage` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'用水量'</span>,</span>
|
||
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true" tabindex="-1"></a> `reading_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表类型(手工:MANUAL,远传:REMOTE,自报:SELF_REPORT,估算:ESTIMATE)'</span>,</span>
|
||
<span id="cb17-10"><a href="#cb17-10" aria-hidden="true" tabindex="-1"></a> `reading_method` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表方式(现场:FIELD,拍照:PHOTO,NFC:NFC,扫码:SCAN)'</span>,</span>
|
||
<span id="cb17-11"><a href="#cb17-11" aria-hidden="true" tabindex="-1"></a> `reader_id` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表员ID'</span>,</span>
|
||
<span id="cb17-12"><a href="#cb17-12" aria-hidden="true" tabindex="-1"></a> `reader_name` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表员姓名'</span>,</span>
|
||
<span id="cb17-13"><a href="#cb17-13" aria-hidden="true" tabindex="-1"></a> `photo_url` <span class="dt">varchar</span>(<span class="dv">255</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表照片URL'</span>,</span>
|
||
<span id="cb17-14"><a href="#cb17-14" aria-hidden="true" tabindex="-1"></a> `reading_location` <span class="dt">varchar</span>(<span class="dv">200</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表位置'</span>,</span>
|
||
<span id="cb17-15"><a href="#cb17-15" aria-hidden="true" tabindex="-1"></a> `abnormal_flag` tinyint <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'异常标识(0:正常,1:异常)'</span>,</span>
|
||
<span id="cb17-16"><a href="#cb17-16" aria-hidden="true" tabindex="-1"></a> `abnormal_reason` <span class="dt">varchar</span>(<span class="dv">200</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'异常原因'</span>,</span>
|
||
<span id="cb17-17"><a href="#cb17-17" aria-hidden="true" tabindex="-1"></a> `remark` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'备注'</span>,</span>
|
||
<span id="cb17-18"><a href="#cb17-18" aria-hidden="true" tabindex="-1"></a> `reading_status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'状态(0:未复核,1:已复核,2:已开账,3:作废)'</span>,</span>
|
||
<span id="cb17-19"><a href="#cb17-19" aria-hidden="true" tabindex="-1"></a> `meter_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表ID'</span>,</span>
|
||
<span id="cb17-20"><a href="#cb17-20" aria-hidden="true" tabindex="-1"></a> `customer_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户ID'</span>,</span>
|
||
<span id="cb17-21"><a href="#cb17-21" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb17-22"><a href="#cb17-22" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb17-23"><a href="#cb17-23" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb17-24"><a href="#cb17-24" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb17-25"><a href="#cb17-25" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb17-26"><a href="#cb17-26" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb17-27"><a href="#cb17-27" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb17-28"><a href="#cb17-28" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_reading_code` (`reading_code`, `tenant_id`),</span>
|
||
<span id="cb17-29"><a href="#cb17-29" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_reading_date` (`meter_id`, `reading_date`),</span>
|
||
<span id="cb17-30"><a href="#cb17-30" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_reading_date` (`reading_date`),</span>
|
||
<span id="cb17-31"><a href="#cb17-31" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_reader_id` (`reader_id`),</span>
|
||
<span id="cb17-32"><a href="#cb17-32" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_reading_status` (`reading_status`),</span>
|
||
<span id="cb17-33"><a href="#cb17-33" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_customer_id` (`customer_id`),</span>
|
||
<span id="cb17-34"><a href="#cb17-34" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_tenant_meter_date` (`tenant_id`, `meter_id`, `reading_date`),</span>
|
||
<span id="cb17-35"><a href="#cb17-35" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_reading_meter` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`meter_id`) <span class="kw">REFERENCES</span> `water_meter` (`id`),</span>
|
||
<span id="cb17-36"><a href="#cb17-36" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_reading_customer` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`customer_id`) <span class="kw">REFERENCES</span> `water_customer` (`id`)</span>
|
||
<span id="cb17-37"><a href="#cb17-37" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'抄表记录表'</span>;</span></code></pre></div>
|
||
<h4 data-number="1.7.5.2" id="水费账单表"><span
|
||
class="header-section-number">1.7.5.2</span> 2.2 水费账单表</h4>
|
||
<div class="sourceCode" id="cb18"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_bill` (</span>
|
||
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true" tabindex="-1"></a> `bill_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'账单编号'</span>,</span>
|
||
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true" tabindex="-1"></a> `bill_month` <span class="dt">varchar</span>(<span class="dv">7</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'账期(格式:YYYY-MM)'</span>,</span>
|
||
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true" tabindex="-1"></a> `bill_date` <span class="dt">date</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'开账日期'</span>,</span>
|
||
<span id="cb18-6"><a href="#cb18-6" aria-hidden="true" tabindex="-1"></a> `water_usage` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'用水量'</span>,</span>
|
||
<span id="cb18-7"><a href="#cb18-7" aria-hidden="true" tabindex="-1"></a> `prev_reading` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'上期读数'</span>,</span>
|
||
<span id="cb18-8"><a href="#cb18-8" aria-hidden="true" tabindex="-1"></a> `current_reading` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'本期读数'</span>,</span>
|
||
<span id="cb18-9"><a href="#cb18-9" aria-hidden="true" tabindex="-1"></a> `reading_days` <span class="dt">int</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表间隔天数'</span>,</span>
|
||
<span id="cb18-10"><a href="#cb18-10" aria-hidden="true" tabindex="-1"></a> `water_price` <span class="dt">decimal</span>(<span class="dv">8</span>,<span class="dv">4</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水价单价'</span>,</span>
|
||
<span id="cb18-11"><a href="#cb18-11" aria-hidden="true" tabindex="-1"></a> `water_fee` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'水费金额'</span>,</span>
|
||
<span id="cb18-12"><a href="#cb18-12" aria-hidden="true" tabindex="-1"></a> `sewage_fee` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'污水处理费'</span>,</span>
|
||
<span id="cb18-13"><a href="#cb18-13" aria-hidden="true" tabindex="-1"></a> `garbage_fee` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'垃圾处理费'</span>,</span>
|
||
<span id="cb18-14"><a href="#cb18-14" aria-hidden="true" tabindex="-1"></a> `other_fee` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'其他费用'</span>,</span>
|
||
<span id="cb18-15"><a href="#cb18-15" aria-hidden="true" tabindex="-1"></a> `adjustment_fee` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'调整费用'</span>,</span>
|
||
<span id="cb18-16"><a href="#cb18-16" aria-hidden="true" tabindex="-1"></a> `late_fee` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'滞纳金'</span>,</span>
|
||
<span id="cb18-17"><a href="#cb18-17" aria-hidden="true" tabindex="-1"></a> `total_amount` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'总金额'</span>,</span>
|
||
<span id="cb18-18"><a href="#cb18-18" aria-hidden="true" tabindex="-1"></a> `paid_amount` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'已缴金额'</span>,</span>
|
||
<span id="cb18-19"><a href="#cb18-19" aria-hidden="true" tabindex="-1"></a> `balance_amount` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'余额'</span>,</span>
|
||
<span id="cb18-20"><a href="#cb18-20" aria-hidden="true" tabindex="-1"></a> `due_date` <span class="dt">date</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'缴费截止日期'</span>,</span>
|
||
<span id="cb18-21"><a href="#cb18-21" aria-hidden="true" tabindex="-1"></a> `billing_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="st">'NORMAL'</span> <span class="kw">COMMENT</span> <span class="st">'开账类型(正常:NORMAL,追补:SUPPLEMENT,调整:ADJUSTMENT)'</span>,</span>
|
||
<span id="cb18-22"><a href="#cb18-22" aria-hidden="true" tabindex="-1"></a> `bill_status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'账单状态(0:未缴费,1:已缴费,2:部分缴费,3:作废)'</span>,</span>
|
||
<span id="cb18-23"><a href="#cb18-23" aria-hidden="true" tabindex="-1"></a> `payment_status` tinyint <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'缴费状态(0:未缴,1:已缴,2:部分缴费)'</span>,</span>
|
||
<span id="cb18-24"><a href="#cb18-24" aria-hidden="true" tabindex="-1"></a> `customer_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户ID'</span>,</span>
|
||
<span id="cb18-25"><a href="#cb18-25" aria-hidden="true" tabindex="-1"></a> `meter_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表ID'</span>,</span>
|
||
<span id="cb18-26"><a href="#cb18-26" aria-hidden="true" tabindex="-1"></a> `reading_id` bigint <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'抄表记录ID'</span>,</span>
|
||
<span id="cb18-27"><a href="#cb18-27" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb18-28"><a href="#cb18-28" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb18-29"><a href="#cb18-29" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb18-30"><a href="#cb18-30" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb18-31"><a href="#cb18-31" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb18-32"><a href="#cb18-32" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb18-33"><a href="#cb18-33" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb18-34"><a href="#cb18-34" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_bill_code` (`bill_code`, `tenant_id`),</span>
|
||
<span id="cb18-35"><a href="#cb18-35" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_customer_bill_month` (`customer_id`, `bill_month`),</span>
|
||
<span id="cb18-36"><a href="#cb18-36" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_meter_bill_month` (`meter_id`, `bill_month`),</span>
|
||
<span id="cb18-37"><a href="#cb18-37" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_bill_status` (`bill_status`),</span>
|
||
<span id="cb18-38"><a href="#cb18-38" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_due_date` (`due_date`),</span>
|
||
<span id="cb18-39"><a href="#cb18-39" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_tenant_customer_month` (`tenant_id`, `customer_id`, `bill_month`),</span>
|
||
<span id="cb18-40"><a href="#cb18-40" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_bill_customer` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`customer_id`) <span class="kw">REFERENCES</span> `water_customer` (`id`),</span>
|
||
<span id="cb18-41"><a href="#cb18-41" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_bill_meter` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`meter_id`) <span class="kw">REFERENCES</span> `water_meter` (`id`),</span>
|
||
<span id="cb18-42"><a href="#cb18-42" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_bill_reading` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`reading_id`) <span class="kw">REFERENCES</span> `water_meter_reading` (`id`)</span>
|
||
<span id="cb18-43"><a href="#cb18-43" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'水费账单表'</span>;</span></code></pre></div>
|
||
<h4 data-number="1.7.5.3" id="缴费记录表"><span
|
||
class="header-section-number">1.7.5.3</span> 2.3 缴费记录表</h4>
|
||
<div class="sourceCode" id="cb19"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_payment` (</span>
|
||
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a> `payment_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'缴费记录编号'</span>,</span>
|
||
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a> `payment_type` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'缴费类型(正常缴费:NORMAL,预存:PREPAID,退费:REFUND)'</span>,</span>
|
||
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true" tabindex="-1"></a> `payment_channel` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'缴费渠道(现金:CASH,银行卡:BANK_CARD,微信:WECHAT,支付宝:ALIPAY,银行代扣:BANK_DEDUCT)'</span>,</span>
|
||
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true" tabindex="-1"></a> `payment_amount` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'缴费金额'</span>,</span>
|
||
<span id="cb19-7"><a href="#cb19-7" aria-hidden="true" tabindex="-1"></a> `actual_amount` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'实收金额'</span>,</span>
|
||
<span id="cb19-8"><a href="#cb19-8" aria-hidden="true" tabindex="-1"></a> `change_amount` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="st">'0.00'</span> <span class="kw">COMMENT</span> <span class="st">'找零金额'</span>,</span>
|
||
<span id="cb19-9"><a href="#cb19-9" aria-hidden="true" tabindex="-1"></a> `payment_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'缴费时间'</span>,</span>
|
||
<span id="cb19-10"><a href="#cb19-10" aria-hidden="true" tabindex="-1"></a> `transaction_no` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'交易流水号'</span>,</span>
|
||
<span id="cb19-11"><a href="#cb19-11" aria-hidden="true" tabindex="-1"></a> `third_party_no` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'第三方交易号'</span>,</span>
|
||
<span id="cb19-12"><a href="#cb19-12" aria-hidden="true" tabindex="-1"></a> `operator_id` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'操作员ID'</span>,</span>
|
||
<span id="cb19-13"><a href="#cb19-13" aria-hidden="true" tabindex="-1"></a> `operator_name` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'操作员姓名'</span>,</span>
|
||
<span id="cb19-14"><a href="#cb19-14" aria-hidden="true" tabindex="-1"></a> `outlet_code` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'营业网点代码'</span>,</span>
|
||
<span id="cb19-15"><a href="#cb19-15" aria-hidden="true" tabindex="-1"></a> `pos_machine_no` <span class="dt">varchar</span>(<span class="dv">20</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'POS机编号'</span>,</span>
|
||
<span id="cb19-16"><a href="#cb19-16" aria-hidden="true" tabindex="-1"></a> `invoice_no` <span class="dt">varchar</span>(<span class="dv">30</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'发票号码'</span>,</span>
|
||
<span id="cb19-17"><a href="#cb19-17" aria-hidden="true" tabindex="-1"></a> `remark` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'备注'</span>,</span>
|
||
<span id="cb19-18"><a href="#cb19-18" aria-hidden="true" tabindex="-1"></a> `payment_status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'缴费状态(0:待确认,1:成功,2:失败,3:退费)'</span>,</span>
|
||
<span id="cb19-19"><a href="#cb19-19" aria-hidden="true" tabindex="-1"></a> `bill_id` bigint <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'账单ID'</span>,</span>
|
||
<span id="cb19-20"><a href="#cb19-20" aria-hidden="true" tabindex="-1"></a> `customer_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'客户ID'</span>,</span>
|
||
<span id="cb19-21"><a href="#cb19-21" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb19-22"><a href="#cb19-22" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb19-23"><a href="#cb19-23" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb19-24"><a href="#cb19-24" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb19-25"><a href="#cb19-25" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb19-26"><a href="#cb19-26" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb19-27"><a href="#cb19-27" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb19-28"><a href="#cb19-28" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_payment_code` (`payment_code`, `tenant_id`),</span>
|
||
<span id="cb19-29"><a href="#cb19-29" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_customer_payment_time` (`customer_id`, `payment_time`),</span>
|
||
<span id="cb19-30"><a href="#cb19-30" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_payment_time` (`payment_time`),</span>
|
||
<span id="cb19-31"><a href="#cb19-31" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_transaction_no` (`transaction_no`),</span>
|
||
<span id="cb19-32"><a href="#cb19-32" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_operator_id` (`operator_id`),</span>
|
||
<span id="cb19-33"><a href="#cb19-33" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_payment_status` (`payment_status`),</span>
|
||
<span id="cb19-34"><a href="#cb19-34" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_bill_id` (`bill_id`),</span>
|
||
<span id="cb19-35"><a href="#cb19-35" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_payment_customer` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`customer_id`) <span class="kw">REFERENCES</span> `water_customer` (`id`),</span>
|
||
<span id="cb19-36"><a href="#cb19-36" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_payment_bill` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`bill_id`) <span class="kw">REFERENCES</span> `water_bill` (`id`)</span>
|
||
<span id="cb19-37"><a href="#cb19-37" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'缴费记录表'</span>;</span></code></pre></div>
|
||
<h3 data-number="1.7.6" id="表务管理相关表ddl"><span
|
||
class="header-section-number">1.7.6</span> 3. 表务管理相关表DDL</h3>
|
||
<h4 data-number="1.7.6.1" id="水表档案表"><span
|
||
class="header-section-number">1.7.6.1</span> 3.1 水表档案表</h4>
|
||
<div class="sourceCode" id="cb20"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_meter_archive` (</span>
|
||
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a> `archive_code` <span class="dt">varchar</span>(<span class="dv">32</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'档案编号'</span>,</span>
|
||
<span id="cb20-4"><a href="#cb20-4" aria-hidden="true" tabindex="-1"></a> `manufacturer` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'生产厂家'</span>,</span>
|
||
<span id="cb20-5"><a href="#cb20-5" aria-hidden="true" tabindex="-1"></a> `production_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'生产日期'</span>,</span>
|
||
<span id="cb20-6"><a href="#cb20-6" aria-hidden="true" tabindex="-1"></a> `valid_period` <span class="dt">int</span> <span class="kw">DEFAULT</span> <span class="st">'72'</span> <span class="kw">COMMENT</span> <span class="st">'有效期(月)'</span>,</span>
|
||
<span id="cb20-7"><a href="#cb20-7" aria-hidden="true" tabindex="-1"></a> `verification_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'检定日期'</span>,</span>
|
||
<span id="cb20-8"><a href="#cb20-8" aria-hidden="true" tabindex="-1"></a> `next_verification_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'下次检定日期'</span>,</span>
|
||
<span id="cb20-9"><a href="#cb20-9" aria-hidden="true" tabindex="-1"></a> `certificate_no` <span class="dt">varchar</span>(<span class="dv">50</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'检定证书号'</span>,</span>
|
||
<span id="cb20-10"><a href="#cb20-10" aria-hidden="true" tabindex="-1"></a> `verification_agency` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'检定机构'</span>,</span>
|
||
<span id="cb20-11"><a href="#cb20-11" aria-hidden="true" tabindex="-1"></a> `accuracy_level` <span class="dt">varchar</span>(<span class="dv">10</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'精度等级'</span>,</span>
|
||
<span id="cb20-12"><a href="#cb20-12" aria-hidden="true" tabindex="-1"></a> `max_flow` <span class="dt">decimal</span>(<span class="dv">8</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'最大流量'</span>,</span>
|
||
<span id="cb20-13"><a href="#cb20-13" aria-hidden="true" tabindex="-1"></a> `nominal_flow` <span class="dt">decimal</span>(<span class="dv">8</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'常用流量'</span>,</span>
|
||
<span id="cb20-14"><a href="#cb20-14" aria-hidden="true" tabindex="-1"></a> `min_flow` <span class="dt">decimal</span>(<span class="dv">8</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'最小流量'</span>,</span>
|
||
<span id="cb20-15"><a href="#cb20-15" aria-hidden="true" tabindex="-1"></a> `working_pressure` <span class="dt">decimal</span>(<span class="dv">8</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'工作压力'</span>,</span>
|
||
<span id="cb20-16"><a href="#cb20-16" aria-hidden="true" tabindex="-1"></a> `purchase_date` <span class="dt">date</span> <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'采购日期'</span>,</span>
|
||
<span id="cb20-17"><a href="#cb20-17" aria-hidden="true" tabindex="-1"></a> `purchase_price` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'采购价格'</span>,</span>
|
||
<span id="cb20-18"><a href="#cb20-18" aria-hidden="true" tabindex="-1"></a> `supplier` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'供应商'</span>,</span>
|
||
<span id="cb20-19"><a href="#cb20-19" aria-hidden="true" tabindex="-1"></a> `warranty_period` <span class="dt">int</span> <span class="kw">DEFAULT</span> <span class="st">'24'</span> <span class="kw">COMMENT</span> <span class="st">'质保期(月)'</span>,</span>
|
||
<span id="cb20-20"><a href="#cb20-20" aria-hidden="true" tabindex="-1"></a> `installation_cost` <span class="dt">decimal</span>(<span class="dv">10</span>,<span class="dv">2</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'安装费用'</span>,</span>
|
||
<span id="cb20-21"><a href="#cb20-21" aria-hidden="true" tabindex="-1"></a> `archive_status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'档案状态(0:停用,1:正常,2:报废)'</span>,</span>
|
||
<span id="cb20-22"><a href="#cb20-22" aria-hidden="true" tabindex="-1"></a> `meter_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'水表ID'</span>,</span>
|
||
<span id="cb20-23"><a href="#cb20-23" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb20-24"><a href="#cb20-24" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb20-25"><a href="#cb20-25" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb20-26"><a href="#cb20-26" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb20-27"><a href="#cb20-27" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb20-28"><a href="#cb20-28" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb20-29"><a href="#cb20-29" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb20-30"><a href="#cb20-30" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_archive_code` (`archive_code`, `tenant_id`),</span>
|
||
<span id="cb20-31"><a href="#cb20-31" aria-hidden="true" tabindex="-1"></a> <span class="kw">UNIQUE</span> <span class="kw">KEY</span> `uk_meter_archive` (`meter_id`, `tenant_id`),</span>
|
||
<span id="cb20-32"><a href="#cb20-32" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_manufacturer` (`manufacturer`),</span>
|
||
<span id="cb20-33"><a href="#cb20-33" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_verification_date` (`verification_date`),</span>
|
||
<span id="cb20-34"><a href="#cb20-34" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_next_verification_date` (`next_verification_date`),</span>
|
||
<span id="cb20-35"><a href="#cb20-35" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_archive_status` (`archive_status`),</span>
|
||
<span id="cb20-36"><a href="#cb20-36" aria-hidden="true" tabindex="-1"></a> <span class="kw">CONSTRAINT</span> `fk_archive_meter` <span class="kw">FOREIGN</span> <span class="kw">KEY</span> (`meter_id`) <span class="kw">REFERENCES</span> `water_meter` (`id`)</span>
|
||
<span id="cb20-37"><a href="#cb20-37" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'水表档案表'</span>;</span></code></pre></div>
|
||
<h3 data-number="1.7.7" id="系统管理相关表ddl-1"><span
|
||
class="header-section-number">1.7.7</span> 4. 系统管理相关表DDL</h3>
|
||
<h4 data-number="1.7.7.1" id="数据字典表"><span
|
||
class="header-section-number">1.7.7.1</span> 4.1 数据字典表</h4>
|
||
<div class="sourceCode" id="cb21"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> `water_dict_data` (</span>
|
||
<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a> `id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> AUTO_INCREMENT <span class="kw">COMMENT</span> <span class="st">'主键ID'</span>,</span>
|
||
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a> `dict_type` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'字典类型'</span>,</span>
|
||
<span id="cb21-4"><a href="#cb21-4" aria-hidden="true" tabindex="-1"></a> `dict_label` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'字典标签'</span>,</span>
|
||
<span id="cb21-5"><a href="#cb21-5" aria-hidden="true" tabindex="-1"></a> `dict_value` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'字典键值'</span>,</span>
|
||
<span id="cb21-6"><a href="#cb21-6" aria-hidden="true" tabindex="-1"></a> `dict_sort` <span class="dt">int</span> <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'字典排序'</span>,</span>
|
||
<span id="cb21-7"><a href="#cb21-7" aria-hidden="true" tabindex="-1"></a> `color_type` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'颜色类型'</span>,</span>
|
||
<span id="cb21-8"><a href="#cb21-8" aria-hidden="true" tabindex="-1"></a> `css_class` <span class="dt">varchar</span>(<span class="dv">100</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'CSS类名'</span>,</span>
|
||
<span id="cb21-9"><a href="#cb21-9" aria-hidden="true" tabindex="-1"></a> `remark` <span class="dt">varchar</span>(<span class="dv">500</span>) <span class="kw">DEFAULT</span> <span class="kw">NULL</span> <span class="kw">COMMENT</span> <span class="st">'备注'</span>,</span>
|
||
<span id="cb21-10"><a href="#cb21-10" aria-hidden="true" tabindex="-1"></a> `status` tinyint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'1'</span> <span class="kw">COMMENT</span> <span class="st">'状态(0:停用,1:正常)'</span>,</span>
|
||
<span id="cb21-11"><a href="#cb21-11" aria-hidden="true" tabindex="-1"></a> `tenant_id` bigint <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'租户ID'</span>,</span>
|
||
<span id="cb21-12"><a href="#cb21-12" aria-hidden="true" tabindex="-1"></a> `creator` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'创建者'</span>,</span>
|
||
<span id="cb21-13"><a href="#cb21-13" aria-hidden="true" tabindex="-1"></a> `create_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'创建时间'</span>,</span>
|
||
<span id="cb21-14"><a href="#cb21-14" aria-hidden="true" tabindex="-1"></a> `updater` <span class="dt">varchar</span>(<span class="dv">64</span>) <span class="kw">DEFAULT</span> <span class="st">''</span> <span class="kw">COMMENT</span> <span class="st">'更新者'</span>,</span>
|
||
<span id="cb21-15"><a href="#cb21-15" aria-hidden="true" tabindex="-1"></a> `update_time` datetime <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">ON</span> <span class="kw">UPDATE</span> <span class="fu">CURRENT_TIMESTAMP</span> <span class="kw">COMMENT</span> <span class="st">'更新时间'</span>,</span>
|
||
<span id="cb21-16"><a href="#cb21-16" aria-hidden="true" tabindex="-1"></a> `deleted` bit(<span class="dv">1</span>) <span class="kw">NOT</span> <span class="kw">NULL</span> <span class="kw">DEFAULT</span> b<span class="st">'0'</span> <span class="kw">COMMENT</span> <span class="st">'是否删除'</span>,</span>
|
||
<span id="cb21-17"><a href="#cb21-17" aria-hidden="true" tabindex="-1"></a> <span class="kw">PRIMARY</span> <span class="kw">KEY</span> (`id`),</span>
|
||
<span id="cb21-18"><a href="#cb21-18" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_dict_type` (`dict_type`),</span>
|
||
<span id="cb21-19"><a href="#cb21-19" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_dict_value` (`dict_value`),</span>
|
||
<span id="cb21-20"><a href="#cb21-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">KEY</span> `idx_status` (`status`)</span>
|
||
<span id="cb21-21"><a href="#cb21-21" aria-hidden="true" tabindex="-1"></a>) ENGINE<span class="op">=</span>InnoDB <span class="kw">DEFAULT</span> CHARSET<span class="op">=</span>utf8mb4 <span class="kw">COMMENT</span><span class="op">=</span><span class="st">'数据字典表'</span>;</span></code></pre></div>
|
||
<h3 data-number="1.7.8" id="初始化数据脚本"><span
|
||
class="header-section-number">1.7.8</span> 5. 初始化数据脚本</h3>
|
||
<div class="sourceCode" id="cb22"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 插入基础字典数据</span></span>
|
||
<span id="cb22-2"><a href="#cb22-2" aria-hidden="true" tabindex="-1"></a><span class="kw">INSERT</span> <span class="kw">INTO</span> `water_dict_data` (`dict_type`, `dict_label`, `dict_value`, `dict_sort`, `status`, `remark`) <span class="kw">VALUES</span></span>
|
||
<span id="cb22-3"><a href="#cb22-3" aria-hidden="true" tabindex="-1"></a>(<span class="st">'customer_type'</span>, <span class="st">'居民用户'</span>, <span class="st">'RESIDENT'</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="st">'居民生活用水'</span>),</span>
|
||
<span id="cb22-4"><a href="#cb22-4" aria-hidden="true" tabindex="-1"></a>(<span class="st">'customer_type'</span>, <span class="st">'非居民用户'</span>, <span class="st">'NON_RESIDENT'</span>, <span class="dv">2</span>, <span class="dv">1</span>, <span class="st">'非居民用水'</span>),</span>
|
||
<span id="cb22-5"><a href="#cb22-5" aria-hidden="true" tabindex="-1"></a>(<span class="st">'customer_type'</span>, <span class="st">'工业用户'</span>, <span class="st">'INDUSTRIAL'</span>, <span class="dv">3</span>, <span class="dv">1</span>, <span class="st">'工业生产用水'</span>),</span>
|
||
<span id="cb22-6"><a href="#cb22-6" aria-hidden="true" tabindex="-1"></a>(<span class="st">'customer_type'</span>, <span class="st">'行政用户'</span>, <span class="st">'ADMINISTRATIVE'</span>, <span class="dv">4</span>, <span class="dv">1</span>, <span class="st">'行政事业单位用水'</span>),</span>
|
||
<span id="cb22-7"><a href="#cb22-7" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb22-8"><a href="#cb22-8" aria-hidden="true" tabindex="-1"></a>(<span class="st">'meter_type'</span>, <span class="st">'机械水表'</span>, <span class="st">'MECHANICAL'</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="st">'传统机械式水表'</span>),</span>
|
||
<span id="cb22-9"><a href="#cb22-9" aria-hidden="true" tabindex="-1"></a>(<span class="st">'meter_type'</span>, <span class="st">'智能水表'</span>, <span class="st">'SMART'</span>, <span class="dv">2</span>, <span class="dv">1</span>, <span class="st">'智能电子水表'</span>),</span>
|
||
<span id="cb22-10"><a href="#cb22-10" aria-hidden="true" tabindex="-1"></a>(<span class="st">'meter_type'</span>, <span class="st">'远传水表'</span>, <span class="st">'REMOTE'</span>, <span class="dv">3</span>, <span class="dv">1</span>, <span class="st">'远程传输水表'</span>),</span>
|
||
<span id="cb22-11"><a href="#cb22-11" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb22-12"><a href="#cb22-12" aria-hidden="true" tabindex="-1"></a>(<span class="st">'reading_type'</span>, <span class="st">'人工抄表'</span>, <span class="st">'MANUAL'</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="st">'抄表员现场抄表'</span>),</span>
|
||
<span id="cb22-13"><a href="#cb22-13" aria-hidden="true" tabindex="-1"></a>(<span class="st">'reading_type'</span>, <span class="st">'远程抄表'</span>, <span class="st">'REMOTE'</span>, <span class="dv">2</span>, <span class="dv">1</span>, <span class="st">'远程自动抄表'</span>),</span>
|
||
<span id="cb22-14"><a href="#cb22-14" aria-hidden="true" tabindex="-1"></a>(<span class="st">'reading_type'</span>, <span class="st">'客户自报'</span>, <span class="st">'SELF_REPORT'</span>, <span class="dv">3</span>, <span class="dv">1</span>, <span class="st">'客户自主上报'</span>),</span>
|
||
<span id="cb22-15"><a href="#cb22-15" aria-hidden="true" tabindex="-1"></a>(<span class="st">'reading_type'</span>, <span class="st">'估算抄表'</span>, <span class="st">'ESTIMATE'</span>, <span class="dv">4</span>, <span class="dv">1</span>, <span class="st">'估算用水量'</span>),</span>
|
||
<span id="cb22-16"><a href="#cb22-16" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb22-17"><a href="#cb22-17" aria-hidden="true" tabindex="-1"></a>(<span class="st">'payment_channel'</span>, <span class="st">'现金'</span>, <span class="st">'CASH'</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="st">'现金缴费'</span>),</span>
|
||
<span id="cb22-18"><a href="#cb22-18" aria-hidden="true" tabindex="-1"></a>(<span class="st">'payment_channel'</span>, <span class="st">'银行卡'</span>, <span class="st">'BANK_CARD'</span>, <span class="dv">2</span>, <span class="dv">1</span>, <span class="st">'银行卡刷卡'</span>),</span>
|
||
<span id="cb22-19"><a href="#cb22-19" aria-hidden="true" tabindex="-1"></a>(<span class="st">'payment_channel'</span>, <span class="st">'微信支付'</span>, <span class="st">'WECHAT'</span>, <span class="dv">3</span>, <span class="dv">1</span>, <span class="st">'微信在线支付'</span>),</span>
|
||
<span id="cb22-20"><a href="#cb22-20" aria-hidden="true" tabindex="-1"></a>(<span class="st">'payment_channel'</span>, <span class="st">'支付宝'</span>, <span class="st">'ALIPAY'</span>, <span class="dv">4</span>, <span class="dv">1</span>, <span class="st">'支付宝在线支付'</span>),</span>
|
||
<span id="cb22-21"><a href="#cb22-21" aria-hidden="true" tabindex="-1"></a>(<span class="st">'payment_channel'</span>, <span class="st">'银行代扣'</span>, <span class="st">'BANK_DEDUCT'</span>, <span class="dv">5</span>, <span class="dv">1</span>, <span class="st">'银行自动代扣'</span>);</span></code></pre></div>
|
||
<h2 data-number="1.8" id="六opengauss数据库特性应用"><span
|
||
class="header-section-number">1.8</span>
|
||
六、OpenGauss数据库特性应用</h2>
|
||
<h3 data-number="1.8.1" id="opengauss高级特性"><span
|
||
class="header-section-number">1.8.1</span> 1. OpenGauss高级特性</h3>
|
||
<h4 data-number="1.8.1.1" id="分区表设计"><span
|
||
class="header-section-number">1.8.1.1</span> 1.1 分区表设计</h4>
|
||
<div class="sourceCode" id="cb23"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 按月份分区的账单表</span></span>
|
||
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> water_bill (</span>
|
||
<span id="cb23-3"><a href="#cb23-3" aria-hidden="true" tabindex="-1"></a> <span class="co">-- 字段定义...</span></span>
|
||
<span id="cb23-4"><a href="#cb23-4" aria-hidden="true" tabindex="-1"></a>) <span class="kw">PARTITION</span> <span class="kw">BY</span> <span class="kw">RANGE</span> (bill_month) (</span>
|
||
<span id="cb23-5"><a href="#cb23-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">PARTITION</span> p202401 <span class="kw">VALUES</span> <span class="kw">LESS</span> <span class="kw">THAN</span> (<span class="st">'2024-02'</span>),</span>
|
||
<span id="cb23-6"><a href="#cb23-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">PARTITION</span> p202402 <span class="kw">VALUES</span> <span class="kw">LESS</span> <span class="kw">THAN</span> (<span class="st">'2024-03'</span>),</span>
|
||
<span id="cb23-7"><a href="#cb23-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">PARTITION</span> p202403 <span class="kw">VALUES</span> <span class="kw">LESS</span> <span class="kw">THAN</span> (<span class="st">'2024-04'</span>)</span>
|
||
<span id="cb23-8"><a href="#cb23-8" aria-hidden="true" tabindex="-1"></a> <span class="co">-- 继续按月创建分区...</span></span>
|
||
<span id="cb23-9"><a href="#cb23-9" aria-hidden="true" tabindex="-1"></a>);</span></code></pre></div>
|
||
<h4 data-number="1.8.1.2" id="列存储表"><span
|
||
class="header-section-number">1.8.1.2</span> 1.2 列存储表</h4>
|
||
<div class="sourceCode" id="cb24"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 统计分析用的列存储表</span></span>
|
||
<span id="cb24-2"><a href="#cb24-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> water_bill_stats (</span>
|
||
<span id="cb24-3"><a href="#cb24-3" aria-hidden="true" tabindex="-1"></a> <span class="co">-- 字段定义...</span></span>
|
||
<span id="cb24-4"><a href="#cb24-4" aria-hidden="true" tabindex="-1"></a>) <span class="kw">WITH</span> (ORIENTATION <span class="op">=</span> <span class="kw">COLUMN</span>);</span></code></pre></div>
|
||
<h4 data-number="1.8.1.3" id="内存表"><span
|
||
class="header-section-number">1.8.1.3</span> 1.3 内存表</h4>
|
||
<div class="sourceCode" id="cb25"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 配置参数缓存表</span></span>
|
||
<span id="cb25-2"><a href="#cb25-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> water_config_cache (</span>
|
||
<span id="cb25-3"><a href="#cb25-3" aria-hidden="true" tabindex="-1"></a> <span class="co">-- 字段定义...</span></span>
|
||
<span id="cb25-4"><a href="#cb25-4" aria-hidden="true" tabindex="-1"></a>) <span class="kw">WITH</span> (ORIENTATION <span class="op">=</span> <span class="kw">ROW</span>, STORAGE_TYPE <span class="op">=</span> USTORE);</span></code></pre></div>
|
||
<h3 data-number="1.8.2" id="性能优化配置"><span
|
||
class="header-section-number">1.8.2</span> 2. 性能优化配置</h3>
|
||
<h4 data-number="1.8.2.1" id="连接池配置"><span
|
||
class="header-section-number">1.8.2.1</span> 2.1 连接池配置</h4>
|
||
<div class="sourceCode" id="cb26"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- OpenGauss连接池参数</span></span>
|
||
<span id="cb26-2"><a href="#cb26-2" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> max_connections <span class="op">=</span> <span class="dv">200</span>;</span>
|
||
<span id="cb26-3"><a href="#cb26-3" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> shared_buffers <span class="op">=</span> <span class="st">'256MB'</span>;</span>
|
||
<span id="cb26-4"><a href="#cb26-4" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> effective_cache_size <span class="op">=</span> <span class="st">'1GB'</span>;</span>
|
||
<span id="cb26-5"><a href="#cb26-5" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> work_mem <span class="op">=</span> <span class="st">'4MB'</span>;</span></code></pre></div>
|
||
<h4 data-number="1.8.2.2" id="并行查询"><span
|
||
class="header-section-number">1.8.2.2</span> 2.2 并行查询</h4>
|
||
<div class="sourceCode" id="cb27"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 启用并行查询</span></span>
|
||
<span id="cb27-2"><a href="#cb27-2" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> max_parallel_workers <span class="op">=</span> <span class="dv">8</span>;</span>
|
||
<span id="cb27-3"><a href="#cb27-3" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> max_parallel_workers_per_gather <span class="op">=</span> <span class="dv">4</span>;</span></code></pre></div>
|
||
<h2 data-number="1.9" id="七索引设计与优化"><span
|
||
class="header-section-number">1.9</span> 七、索引设计与优化</h2>
|
||
<h3 data-number="1.9.1" id="基础索引设计"><span
|
||
class="header-section-number">1.9.1</span> 1. 基础索引设计</h3>
|
||
<h4 data-number="1.9.1.1" id="主键索引"><span
|
||
class="header-section-number">1.9.1.1</span> 1.1 主键索引</h4>
|
||
<ul>
|
||
<li>所有表使用SERIAL主键,自动创建B树索引</li>
|
||
<li>支持OpenGauss的快速主键查询优化</li>
|
||
</ul>
|
||
<h4 data-number="1.9.1.2" id="唯一索引"><span
|
||
class="header-section-number">1.9.1.2</span> 1.2 唯一索引</h4>
|
||
<div class="sourceCode" id="cb28"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 客户编号唯一索引</span></span>
|
||
<span id="cb28-2"><a href="#cb28-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">UNIQUE</span> <span class="kw">INDEX</span> uk_customer_code <span class="kw">ON</span> water_customer (customer_code, tenant_id);</span>
|
||
<span id="cb28-3"><a href="#cb28-3" aria-hidden="true" tabindex="-1"></a><span class="co">-- 水表编号唯一索引 </span></span>
|
||
<span id="cb28-4"><a href="#cb28-4" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">UNIQUE</span> <span class="kw">INDEX</span> uk_meter_code <span class="kw">ON</span> water_meter (meter_code, tenant_id);</span></code></pre></div>
|
||
<h4 data-number="1.9.1.3" id="复合索引"><span
|
||
class="header-section-number">1.9.1.3</span> 1.3 复合索引</h4>
|
||
<div class="sourceCode" id="cb29"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 多租户查询优化</span></span>
|
||
<span id="cb29-2"><a href="#cb29-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_tenant_customer_type <span class="kw">ON</span> water_customer (tenant_id, customer_type);</span>
|
||
<span id="cb29-3"><a href="#cb29-3" aria-hidden="true" tabindex="-1"></a><span class="co">-- 账单查询优化</span></span>
|
||
<span id="cb29-4"><a href="#cb29-4" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_tenant_customer_month <span class="kw">ON</span> water_bill (tenant_id, customer_id, bill_month);</span>
|
||
<span id="cb29-5"><a href="#cb29-5" aria-hidden="true" tabindex="-1"></a><span class="co">-- 抄表查询优化</span></span>
|
||
<span id="cb29-6"><a href="#cb29-6" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_tenant_meter_date <span class="kw">ON</span> water_meter_reading (tenant_id, meter_id, reading_date);</span></code></pre></div>
|
||
<h3 data-number="1.9.2" id="opengauss特殊索引"><span
|
||
class="header-section-number">1.9.2</span> 2. OpenGauss特殊索引</h3>
|
||
<h4 data-number="1.9.2.1" id="hash索引"><span
|
||
class="header-section-number">1.9.2.1</span> 2.1 HASH索引</h4>
|
||
<div class="sourceCode" id="cb30"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 等值查询优化</span></span>
|
||
<span id="cb30-2"><a href="#cb30-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> CONCURRENTLY idx_customer_phone_hash <span class="kw">ON</span> water_customer <span class="kw">USING</span> <span class="kw">HASH</span> (phone);</span></code></pre></div>
|
||
<h4 data-number="1.9.2.2" id="gin索引"><span
|
||
class="header-section-number">1.9.2.2</span> 2.2 GIN索引</h4>
|
||
<div class="sourceCode" id="cb31"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 全文检索索引</span></span>
|
||
<span id="cb31-2"><a href="#cb31-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_customer_name_gin <span class="kw">ON</span> water_customer <span class="kw">USING</span> GIN (to_tsvector(<span class="st">'simple'</span>, customer_name));</span></code></pre></div>
|
||
<h4 data-number="1.9.2.3" id="部分索引"><span
|
||
class="header-section-number">1.9.2.3</span> 2.3 部分索引</h4>
|
||
<div class="sourceCode" id="cb32"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 只对有效数据建索引</span></span>
|
||
<span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">INDEX</span> idx_active_customers <span class="kw">ON</span> water_customer (customer_code) <span class="kw">WHERE</span> deleted <span class="op">=</span> <span class="kw">FALSE</span> <span class="kw">AND</span> status <span class="op">=</span> <span class="dv">1</span>;</span></code></pre></div>
|
||
<h2 data-number="1.10" id="八opengauss数据安全设计"><span
|
||
class="header-section-number">1.10</span> 八、OpenGauss数据安全设计</h2>
|
||
<h3 data-number="1.10.1" id="内置安全特性"><span
|
||
class="header-section-number">1.10.1</span> 1. 内置安全特性</h3>
|
||
<h4 data-number="1.10.1.1" id="透明数据加密-tde"><span
|
||
class="header-section-number">1.10.1.1</span> 1.1 透明数据加密
|
||
(TDE)</h4>
|
||
<div class="sourceCode" id="cb33"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb33-1"><a href="#cb33-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 启用表级加密</span></span>
|
||
<span id="cb33-2"><a href="#cb33-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TABLE</span> water_customer_encrypted (</span>
|
||
<span id="cb33-3"><a href="#cb33-3" aria-hidden="true" tabindex="-1"></a> <span class="co">-- 字段定义...</span></span>
|
||
<span id="cb33-4"><a href="#cb33-4" aria-hidden="true" tabindex="-1"></a>) <span class="kw">WITH</span> (ENCRYPTION_TYPE <span class="op">=</span> <span class="st">'AES_128_CTR'</span>);</span>
|
||
<span id="cb33-5"><a href="#cb33-5" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb33-6"><a href="#cb33-6" aria-hidden="true" tabindex="-1"></a><span class="co">-- 敏感字段加密</span></span>
|
||
<span id="cb33-7"><a href="#cb33-7" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">TABLE</span> water_customer </span>
|
||
<span id="cb33-8"><a href="#cb33-8" aria-hidden="true" tabindex="-1"></a><span class="kw">ADD</span> <span class="kw">COLUMN</span> id_number_encrypted BYTEA </span>
|
||
<span id="cb33-9"><a href="#cb33-9" aria-hidden="true" tabindex="-1"></a><span class="kw">GENERATED</span> ALWAYS <span class="kw">AS</span> (gs_encrypt_aes128(id_number, <span class="st">'密钥'</span>)) STORED;</span></code></pre></div>
|
||
<h4 data-number="1.10.1.2" id="行级安全策略-rls"><span
|
||
class="header-section-number">1.10.1.2</span> 1.2 行级安全策略
|
||
(RLS)</h4>
|
||
<div class="sourceCode" id="cb34"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb34-1"><a href="#cb34-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建多租户行级安全</span></span>
|
||
<span id="cb34-2"><a href="#cb34-2" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">TABLE</span> water_customer <span class="kw">ENABLE</span> <span class="kw">ROW</span> <span class="kw">LEVEL</span> SECURITY;</span>
|
||
<span id="cb34-3"><a href="#cb34-3" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb34-4"><a href="#cb34-4" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建策略</span></span>
|
||
<span id="cb34-5"><a href="#cb34-5" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> POLICY tenant_isolation_policy <span class="kw">ON</span> water_customer</span>
|
||
<span id="cb34-6"><a href="#cb34-6" aria-hidden="true" tabindex="-1"></a> <span class="cf">FOR</span> <span class="kw">ALL</span> <span class="kw">TO</span> <span class="kw">PUBLIC</span></span>
|
||
<span id="cb34-7"><a href="#cb34-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">USING</span> (tenant_id <span class="op">=</span> current_setting(<span class="st">'app.current_tenant_id'</span>):<span class="ch">:bigint</span>);</span></code></pre></div>
|
||
<h4 data-number="1.10.1.3" id="动态数据脱敏"><span
|
||
class="header-section-number">1.10.1.3</span> 1.3 动态数据脱敏</h4>
|
||
<div class="sourceCode" id="cb35"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建脱敏函数</span></span>
|
||
<span id="cb35-2"><a href="#cb35-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">OR</span> <span class="kw">REPLACE</span> <span class="kw">FUNCTION</span> mask_phone(phone_no TEXT)</span>
|
||
<span id="cb35-3"><a href="#cb35-3" aria-hidden="true" tabindex="-1"></a>RETURNS TEXT <span class="kw">AS</span> $$</span>
|
||
<span id="cb35-4"><a href="#cb35-4" aria-hidden="true" tabindex="-1"></a><span class="cf">BEGIN</span></span>
|
||
<span id="cb35-5"><a href="#cb35-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">RETURN</span> SUBSTRING(phone_no, <span class="dv">1</span>, <span class="dv">3</span>) <span class="op">||</span> <span class="st">'****'</span> <span class="op">||</span> SUBSTRING(phone_no, <span class="dv">8</span>);</span>
|
||
<span id="cb35-6"><a href="#cb35-6" aria-hidden="true" tabindex="-1"></a><span class="cf">END</span>;</span>
|
||
<span id="cb35-7"><a href="#cb35-7" aria-hidden="true" tabindex="-1"></a>$$ LANGUAGE plpgsql;</span>
|
||
<span id="cb35-8"><a href="#cb35-8" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb35-9"><a href="#cb35-9" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建脱敏视图</span></span>
|
||
<span id="cb35-10"><a href="#cb35-10" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">VIEW</span> water_customer_masked <span class="kw">AS</span></span>
|
||
<span id="cb35-11"><a href="#cb35-11" aria-hidden="true" tabindex="-1"></a><span class="kw">SELECT</span> </span>
|
||
<span id="cb35-12"><a href="#cb35-12" aria-hidden="true" tabindex="-1"></a> <span class="kw">id</span>, customer_code, customer_name,</span>
|
||
<span id="cb35-13"><a href="#cb35-13" aria-hidden="true" tabindex="-1"></a> mask_phone(phone) <span class="kw">as</span> phone_masked,</span>
|
||
<span id="cb35-14"><a href="#cb35-14" aria-hidden="true" tabindex="-1"></a> <span class="co">-- 其他字段...</span></span>
|
||
<span id="cb35-15"><a href="#cb35-15" aria-hidden="true" tabindex="-1"></a><span class="kw">FROM</span> water_customer;</span></code></pre></div>
|
||
<h3 data-number="1.10.2" id="权限控制体系"><span
|
||
class="header-section-number">1.10.2</span> 2. 权限控制体系</h3>
|
||
<h4 data-number="1.10.2.1" id="角色权限设计"><span
|
||
class="header-section-number">1.10.2.1</span> 2.1 角色权限设计</h4>
|
||
<div class="sourceCode" id="cb36"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb36-1"><a href="#cb36-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建业务角色</span></span>
|
||
<span id="cb36-2"><a href="#cb36-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">ROLE</span> water_admin;</span>
|
||
<span id="cb36-3"><a href="#cb36-3" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">ROLE</span> water_operator;</span>
|
||
<span id="cb36-4"><a href="#cb36-4" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">ROLE</span> water_viewer;</span>
|
||
<span id="cb36-5"><a href="#cb36-5" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb36-6"><a href="#cb36-6" aria-hidden="true" tabindex="-1"></a><span class="co">-- 分配权限</span></span>
|
||
<span id="cb36-7"><a href="#cb36-7" aria-hidden="true" tabindex="-1"></a><span class="kw">GRANT</span> <span class="kw">ALL</span> <span class="kw">ON</span> water_customer <span class="kw">TO</span> water_admin;</span>
|
||
<span id="cb36-8"><a href="#cb36-8" aria-hidden="true" tabindex="-1"></a><span class="kw">GRANT</span> <span class="kw">SELECT</span>, <span class="kw">INSERT</span>, <span class="kw">UPDATE</span> <span class="kw">ON</span> water_customer <span class="kw">TO</span> water_operator;</span>
|
||
<span id="cb36-9"><a href="#cb36-9" aria-hidden="true" tabindex="-1"></a><span class="kw">GRANT</span> <span class="kw">SELECT</span> <span class="kw">ON</span> water_customer_masked <span class="kw">TO</span> water_viewer;</span></code></pre></div>
|
||
<h4 data-number="1.10.2.2" id="列级权限控制"><span
|
||
class="header-section-number">1.10.2.2</span> 2.2 列级权限控制</h4>
|
||
<div class="sourceCode" id="cb37"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb37-1"><a href="#cb37-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 敏感字段权限控制</span></span>
|
||
<span id="cb37-2"><a href="#cb37-2" aria-hidden="true" tabindex="-1"></a><span class="kw">REVOKE</span> <span class="kw">ALL</span> <span class="kw">ON</span> water_customer <span class="kw">FROM</span> <span class="kw">PUBLIC</span>;</span>
|
||
<span id="cb37-3"><a href="#cb37-3" aria-hidden="true" tabindex="-1"></a><span class="kw">GRANT</span> <span class="kw">SELECT</span> (<span class="kw">id</span>, customer_name, phone) <span class="kw">ON</span> water_customer <span class="kw">TO</span> water_viewer;</span>
|
||
<span id="cb37-4"><a href="#cb37-4" aria-hidden="true" tabindex="-1"></a><span class="kw">GRANT</span> <span class="kw">SELECT</span> <span class="kw">ON</span> water_customer <span class="kw">TO</span> water_admin;</span></code></pre></div>
|
||
<h3 data-number="1.10.3" id="审计与监控"><span
|
||
class="header-section-number">1.10.3</span> 3. 审计与监控</h3>
|
||
<h4 data-number="1.10.3.1" id="审计日志配置"><span
|
||
class="header-section-number">1.10.3.1</span> 3.1 审计日志配置</h4>
|
||
<div class="sourceCode" id="cb38"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb38-1"><a href="#cb38-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 启用审计</span></span>
|
||
<span id="cb38-2"><a href="#cb38-2" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> audit_enabled <span class="op">=</span> <span class="kw">on</span>;</span>
|
||
<span id="cb38-3"><a href="#cb38-3" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> audit_directory <span class="op">=</span> <span class="st">'/data/audit'</span>;</span>
|
||
<span id="cb38-4"><a href="#cb38-4" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> audit_file_remain_threshold <span class="op">=</span> <span class="dv">1024</span>;</span>
|
||
<span id="cb38-5"><a href="#cb38-5" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb38-6"><a href="#cb38-6" aria-hidden="true" tabindex="-1"></a><span class="co">-- 配置审计策略</span></span>
|
||
<span id="cb38-7"><a href="#cb38-7" aria-hidden="true" tabindex="-1"></a><span class="kw">SELECT</span> pg_audit_set_policy(<span class="st">'DDL_LOGIN_LOGOUT'</span>, <span class="st">'DDL, LOGIN, LOGOUT'</span>);</span>
|
||
<span id="cb38-8"><a href="#cb38-8" aria-hidden="true" tabindex="-1"></a><span class="kw">SELECT</span> pg_audit_set_policy(<span class="st">'DML_DCL'</span>, <span class="st">'DML, DCL'</span>);</span></code></pre></div>
|
||
<h4 data-number="1.10.3.2" id="敏感操作监控"><span
|
||
class="header-section-number">1.10.3.2</span> 3.2 敏感操作监控</h4>
|
||
<div class="sourceCode" id="cb39"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb39-1"><a href="#cb39-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 创建敏感操作触发器</span></span>
|
||
<span id="cb39-2"><a href="#cb39-2" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">OR</span> <span class="kw">REPLACE</span> <span class="kw">FUNCTION</span> audit_sensitive_data()</span>
|
||
<span id="cb39-3"><a href="#cb39-3" aria-hidden="true" tabindex="-1"></a>RETURNS <span class="kw">TRIGGER</span> <span class="kw">AS</span> $$</span>
|
||
<span id="cb39-4"><a href="#cb39-4" aria-hidden="true" tabindex="-1"></a><span class="cf">BEGIN</span></span>
|
||
<span id="cb39-5"><a href="#cb39-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">INSERT</span> <span class="kw">INTO</span> audit_log (</span>
|
||
<span id="cb39-6"><a href="#cb39-6" aria-hidden="true" tabindex="-1"></a> table_name, operation, old_values, new_values, </span>
|
||
<span id="cb39-7"><a href="#cb39-7" aria-hidden="true" tabindex="-1"></a> user_name, operation_time</span>
|
||
<span id="cb39-8"><a href="#cb39-8" aria-hidden="true" tabindex="-1"></a> ) <span class="kw">VALUES</span> (</span>
|
||
<span id="cb39-9"><a href="#cb39-9" aria-hidden="true" tabindex="-1"></a> TG_TABLE_NAME, TG_OP, </span>
|
||
<span id="cb39-10"><a href="#cb39-10" aria-hidden="true" tabindex="-1"></a> row_to_json(<span class="kw">OLD</span>), row_to_json(<span class="kw">NEW</span>),</span>
|
||
<span id="cb39-11"><a href="#cb39-11" aria-hidden="true" tabindex="-1"></a> current_user, <span class="fu">current_timestamp</span></span>
|
||
<span id="cb39-12"><a href="#cb39-12" aria-hidden="true" tabindex="-1"></a> );</span>
|
||
<span id="cb39-13"><a href="#cb39-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">RETURN</span> <span class="fu">COALESCE</span>(<span class="kw">NEW</span>, <span class="kw">OLD</span>);</span>
|
||
<span id="cb39-14"><a href="#cb39-14" aria-hidden="true" tabindex="-1"></a><span class="cf">END</span>;</span>
|
||
<span id="cb39-15"><a href="#cb39-15" aria-hidden="true" tabindex="-1"></a>$$ LANGUAGE plpgsql;</span>
|
||
<span id="cb39-16"><a href="#cb39-16" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb39-17"><a href="#cb39-17" aria-hidden="true" tabindex="-1"></a><span class="co">-- 应用到敏感表</span></span>
|
||
<span id="cb39-18"><a href="#cb39-18" aria-hidden="true" tabindex="-1"></a><span class="kw">CREATE</span> <span class="kw">TRIGGER</span> audit_customer_changes</span>
|
||
<span id="cb39-19"><a href="#cb39-19" aria-hidden="true" tabindex="-1"></a> <span class="kw">AFTER</span> <span class="kw">INSERT</span> <span class="kw">OR</span> <span class="kw">UPDATE</span> <span class="kw">OR</span> <span class="kw">DELETE</span> <span class="kw">ON</span> water_customer</span>
|
||
<span id="cb39-20"><a href="#cb39-20" aria-hidden="true" tabindex="-1"></a> <span class="cf">FOR</span> <span class="kw">EACH</span> <span class="kw">ROW</span> <span class="kw">EXECUTE</span> <span class="kw">FUNCTION</span> audit_sensitive_data();</span></code></pre></div>
|
||
<h3 data-number="1.10.4" id="数据备份与灾备"><span
|
||
class="header-section-number">1.10.4</span> 4. 数据备份与灾备</h3>
|
||
<h4 data-number="1.10.4.1" id="opengauss备份策略"><span
|
||
class="header-section-number">1.10.4.1</span> 4.1 OpenGauss备份策略</h4>
|
||
<div class="sourceCode" id="cb40"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb40-1"><a href="#cb40-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 全量备份</span></span>
|
||
<span id="cb40-2"><a href="#cb40-2" aria-hidden="true" tabindex="-1"></a>gs_backup <span class="op">-</span>D <span class="op">/</span><span class="kw">data</span><span class="op">/</span><span class="kw">backup</span> <span class="op">-</span>h localhost <span class="op">-</span>p <span class="dv">5432</span> <span class="op">-</span>U backup_user</span>
|
||
<span id="cb40-3"><a href="#cb40-3" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb40-4"><a href="#cb40-4" aria-hidden="true" tabindex="-1"></a><span class="co">-- 增量备份 </span></span>
|
||
<span id="cb40-5"><a href="#cb40-5" aria-hidden="true" tabindex="-1"></a>gs_backup <span class="op">-</span>D <span class="op">/</span><span class="kw">data</span><span class="op">/</span><span class="kw">backup</span> <span class="op">-</span>h localhost <span class="op">-</span>p <span class="dv">5432</span> <span class="op">-</span>U backup_user <span class="co">--incremental</span></span>
|
||
<span id="cb40-6"><a href="#cb40-6" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb40-7"><a href="#cb40-7" aria-hidden="true" tabindex="-1"></a><span class="co">-- 归档日志备份</span></span>
|
||
<span id="cb40-8"><a href="#cb40-8" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> archive_mode <span class="op">=</span> <span class="kw">on</span>;</span>
|
||
<span id="cb40-9"><a href="#cb40-9" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> archive_command <span class="op">=</span> <span class="st">'cp %p /data/archive/%f'</span>;</span></code></pre></div>
|
||
<h4 data-number="1.10.4.2" id="主备同步配置"><span
|
||
class="header-section-number">1.10.4.2</span> 4.2 主备同步配置</h4>
|
||
<div class="sourceCode" id="cb41"><pre
|
||
class="sourceCode sql"><code class="sourceCode sql"><span id="cb41-1"><a href="#cb41-1" aria-hidden="true" tabindex="-1"></a><span class="co">-- 主库配置</span></span>
|
||
<span id="cb41-2"><a href="#cb41-2" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> synchronous_standby_names <span class="op">=</span> <span class="st">'standby1'</span>;</span>
|
||
<span id="cb41-3"><a href="#cb41-3" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> synchronous_commit <span class="op">=</span> <span class="kw">on</span>;</span>
|
||
<span id="cb41-4"><a href="#cb41-4" aria-hidden="true" tabindex="-1"></a></span>
|
||
<span id="cb41-5"><a href="#cb41-5" aria-hidden="true" tabindex="-1"></a><span class="co">-- 备库配置</span></span>
|
||
<span id="cb41-6"><a href="#cb41-6" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> hot_standby <span class="op">=</span> <span class="kw">on</span>;</span>
|
||
<span id="cb41-7"><a href="#cb41-7" aria-hidden="true" tabindex="-1"></a><span class="kw">ALTER</span> <span class="kw">SYSTEM</span> <span class="kw">SET</span> max_standby_streaming_delay <span class="op">=</span> <span class="dv">30</span>s;</span></code></pre></div>
|
||
<h3 data-number="1.10.5" id="国产化安全合规"><span
|
||
class="header-section-number">1.10.5</span> 5. 国产化安全合规</h3>
|
||
<h4 data-number="1.10.5.1" id="等保三级要求"><span
|
||
class="header-section-number">1.10.5.1</span> 5.1 等保三级要求</h4>
|
||
<ul>
|
||
<li><strong>身份鉴别</strong>:支持多因子认证、密码复杂度策略</li>
|
||
<li><strong>访问控制</strong>:基于角色的强制访问控制</li>
|
||
<li><strong>安全审计</strong>:完整的操作审计和安全事件记录</li>
|
||
<li><strong>数据完整性</strong>:数据校验和完整性保护</li>
|
||
<li><strong>数据保密性</strong>:敏感数据加密存储和传输</li>
|
||
</ul>
|
||
<h4 data-number="1.10.5.2" id="国产化认证"><span
|
||
class="header-section-number">1.10.5.2</span> 5.2 国产化认证</h4>
|
||
<ul>
|
||
<li>华为OpenGauss已通过国家密码管理局商用密码产品认证</li>
|
||
<li>支持国产SM2/SM3/SM4密码算法</li>
|
||
<li>符合《网络安全法》、《数据安全法》等法规要求</li>
|
||
</ul>
|
||
<p>```sql – 使用国产SM4算法加密 CREATE TABLE water_customer_sm4 ( –
|
||
字段定义… ) WITH (ENCRYPTION_TYPE = ‘SM4_CTR’);</p>
|
||
</body>
|
||
</html>
|