diff --git a/xckijun_給与計算基準項目定義.md b/xckijun_給与計算基準項目定義.md new file mode 100644 index 0000000..dcf800f --- /dev/null +++ b/xckijun_給与計算基準項目定義.md @@ -0,0 +1,78 @@ +# xckijun 表 + +## Description +- 物理表名:xckijun +- 業務名称:[コントロール]給与計算基準項目定義 +- 业务语义:給与計算基準項目(xkkijun 系列 200 槽位五花)の**項目定義**を保持する control 表 + - xkkijun 系列的"动态列名 + 数据槽"模式(ccode01..ccode200 / cname01..cname200 ...)的元信息 + - 1 项目 = 1 行(項目種別 1:区分 / 2:名称 / 3:数値 / 4:日付 / 5:フラグ) + - 項目 No. 1~40(本部用 40 项,扩展槽位从 xkkijun 200 槽里挑) +- 所属项目:UPDS-V7 給与システム +- 所在库:updsv7_opho_ci(192.168.1.72:5432,CI 环境) +- 设计書:D:\\25.テーブル一覧\\10.テーブル定義\\30.給与\xckijun.xlsx(2026-08-19 user 提供) + +## Key Facts (实测 2026-08-19 information_schema) +- 物理列数:23 +- 主键 UNIQUE 索引:xckijun_idx(ccompkb, cqtaikeikb, nqshoyokb, dstart, nkomokukb, nkomokuno) +- 唯一索引:xckijun_rowid_key UNIQUE(rowid) +- 业务角色:control / 項目メタデータ(不是业务数据本身) +- 与 xkkijun 关系:控制表 → 数据表(定义 xkkijun 动态列的语义) +- 与 xkkijunctl 区别:xkkijunctl = 連携停止控制(15 列扁平);xckijun = 項目定义控制(23 列含动态列语义) + +## 列结构(实测已确认) + +(A) 头部业务标识 5 列,全部 NOT NULL: + 1. ccompkb varchar(2) -- 会社区分 + 2. cqtaikeikb varchar(2) -- 給与体系区分(00 固定) + 3. nqshoyokb numeric(1,0) -- 給与賞与区分 + 4. dstart date -- 適用開始年月(YYYY/MM/01) + 5. dend date -- 適用終了年月(YYYY/MM/末日) + +(C) 业务控制列(7 列): + 10. nkomokukb numeric(1,0) NOT NULL -- 項目種別(1:区分,2:名称,3:数値,4:日付,5:フラグ) + 11. nkomokuno numeric(3,0) NOT NULL -- 項目 No.(1~40) + 12. ckomokunm varchar(30) -- 項目名称 + 13. ccolumnid varchar(20) -- 項目カラム ID(xkkijun 200 槽位对应列名如 ccode05) + 14. nseisuu numeric(3,0) -- 最大桁数)整数部 + 15. nshosuu numeric(3,0) -- 最大桁数)小数部 + 16. cmtableid varchar(20) -- マスタ参照)テーブル ID(◆ 未使用 ◆) + 17. cmtblwhere varchar(999) -- マスタ参照)テーブル表示条件(◆ 未使用 ◆) + +(D) 预留标志列(5 列): + 18-22. nflag01..nflag05 numeric(1,0) -- ◆ 未使用 ◆ + +(B) 日志 4 列: + 6. cmnclient varchar(10) -- 更新ユーザ)端末ID + 7. cmncomp varchar(2) -- 更新ユーザ)会社区分 + 8. cmnuser varchar(10) -- 更新ユーザ)ユーザID + 9. dmndate timestamp(0) without timezone -- 更新日時 + +(E) 代理键: + 23. rowid bigint NOT NULL DEFAULT nextval('rowid_seq'::regclass) + +## DB vs xlsx 差异点 (7 处) + +1. **PK UNIQUE 索引列顺序** — xlsx 序号 1~6 = `ccompkb, cqtaikeikb, dstart, nkomokukb, nkomokuno, nqshoyokb`;DB 实际 UNIQUE = `ccompkb, cqtaikeikb, nqshoyokb, dstart, nkomokukb, nkomokuno`。第 3 / 6 位 `dstart` 与 `nqshoyokb` 顺序颠倒。UNIQUE 索引不受顺序影响,但 WHERE 优化走索引时列顺序敏感。 +3. **dmndate 精度** — xlsx 写 `timestamp`,DB 实际 `timestamp(0) without time zone`。PostgreSQL 默认 `timestamp` 就是 without time zone,所以 DB 类型准确,xlsx 缺精度标注。 +4. **rowid 默认值** — xlsx 只写 `int8 N`,DB 实际有 `DEFAULT nextval('rowid_seq'::regclass)` 序列。 +5. **cmtblwhere 长度 999** — xlsx 写 999,DB `varchar(999)`(PG 的 varchar(n) 长度限制语义:超长报错而非截断,与别的 DB 不同)。 +6. **xckijun_rowid_key UNIQUE(rowid) 索引** — xlsx 完全没标,DB 存在。 +7. **索引序号 vs DB ordinal_position** — xlsx 索引 #6 = `nqshoyokb`(注意 xlsx 把 `nqshoyokb` 标 6),DB ordinal_position 也是 3(因为 DB 列顺序是 `ccompkb, cqtaikeikb, nqshoyokb, dstart, dend, cmnclient, ...`)。xlsx 索引序号只是业务约定,不一定对应物理列位。 + +## Relations +- 上位系统:UPDS-V7 給与システム +- **控制 → 数据**:xckijun(項目定义)→ xkkijun(实际数据,200 槽位) — xckijun.ccolumnid = xkkijun 列名(如 `ccolumnid='ccode05'` 对应 `xkkijun.ccode05`) +- 同型头部 PK:与 xkkijun / xkkijunctl / xkkihon 头部 6 列同型(本表 5 列头部 + nkomokukb/nkomokuno 业务键) +- 同领域:qkijun / xkkijunctl / qinp1020 等同 給与基準 系列 + +## 同名易混(2026-08-19 实证) +- **xckijun** vs **xkkijun** 字形相近但**不同表**: + - xckijun:23 列 control / 項目定义(本表) + - xkkijun:1011 列 データ / 实际业务值(本日 resource 已独立存在) +- 关键区分点:xckijun 有 `nkomokukb` / `nkomokuno` / `ccolumnid` 三列,xkkijun 没有 +- 反之,xkkijun 有 `ccode01..200` / `cname01..200` / `nnumber01..200` / `ddate01..200` / `nflag01..200` 1000 列,xckijun 没有 + +## 设计書元信息 +- シート:改訂履歴(Ver 7.0.0,作成日 45203(=2023-10-01),作成者 NSC) +- シート:xckijun(No.1~23) +- 业务方备注:項目種別 1:区分,2:名称,3:数値,4:日付,5:フラグ(对应 xkkijun 五花)