--- name: master-company description: 公司主数据表 - 存储法人实体信息,包含公司类型、层级、联系信息和财务账户,用于结算、管理和维度分析 license: MIT compatibility: opencode metadata: category: database domain: retail-erp table_type: master --- # 公司主数据表 (master_company) ## 表信息 - **表名**: master_company - **主键**: id - **时间字段**: created_at, updated_at - **查询日期字段**: (不适用,主数据表) ## 关键字段 | 字段名 | 数据类型 | 查询用途 | |--------|----------|----------| | id | varchar(50) | 公司ID,主键标识 | | **type** | varchar(30) | **公司类型编码,关联master_company_dimension(type='company_type')** | | code | varchar(50) | 公司编码,唯一标识 | | name | varchar(200) | 公司名称,支持模糊查询 | | short_name | varchar(100) | 公司简称,用于快速识别 | | english_name | varchar(200) | 英文名称,用于国际化查询 | | parent_id | varchar(50) | 上级公司ID,支持公司树结构 | | level | int | 公司层级:1集团/2子公司/3分公司 | | tax_id | varchar(30) | 税号/统一社会信用代码,用于税务查询 | | legal_representative | varchar(50) | 法定代表人,用于法律查询 | | contact_person | varchar(50) | 联系人,用于业务对接查询 | | contact_phone | varchar(20) | 联系电话,用于联系信息查询 | | email | varchar(100) | 邮箱,用于通讯查询 | | address | varchar(500) | 公司地址,用于地理位置查询 | | bank_name | varchar(100) | 开户银行,用于财务查询 | | bank_account | varchar(50) | 银行账号,用于结算查询 | | account_holder | varchar(100) | 账户持有人,用于账户验证 | | status | varchar(20) | 公司状态:ACTIVE/INACTIVE | | is_active | bool | 是否激活,用于有效公司筛选 | | remark | text | 备注信息,用于特殊说明查询 | | extra_properties | json | 扩展属性JSON,用于存储自定义字段 | | created_at | datetime | 创建时间,用于时间序列分析 | | updated_at | datetime | 更新时间,用于数据变更跟踪 | ## 关联关系 - **自关联**: parent_id → 本表.id (上级公司) - **被关联**: - master_store.company_id → 本表.id (店铺所属公司) - bill_*.company_id → 本表.id (单据所属公司) - bill_*.from_company_id → 本表.id (发货方公司) - bill_*.to_company_id → 本表.id (收货方公司) **维度字段说明**: - `type`字段存储公司类型编码,如'SUPPLIER'、'SUBSIDIARY'等 - 该字段**不需要外键关联**,直接存储维度表的code值 - 查询时可直接使用编码值进行筛选 - 维度表`master_company_dimension`作为独立数据字典,提供编码与名称的映射关系 ## 在查询拆解中的角色 - **where部分**:用于公司范围筛选,用户提到的公司条件映射到本表字段,type字段可直接使用编码值筛选 - **from部分**:可作为主表查询公司信息,或作为关联表提供公司维度 - **汇总部分**:可按type、level、status等字段分组统计公司数量 ## 维度默认值参考 以下为公司维度表的固定分类编码,用于理解业务含义和构建查询条件: ### 公司类型 (company_type) | 编码 | 名称 | 描述 | |------|------|------| | SUPPLIER | 供应商 | 商品供应商,提供采购商品 | | SUBSIDIARY | 子公司 | 集团下属子公司 | | AGENT | 代理商 | 品牌代理商,负责区域销售 | | WHOLESALER | 批发商 | 批发销售商,批量采购销售 | | GROUP | 集团 | 集团公司总部 | | FRANCHISEE | 加盟商 | 品牌加盟商 | | CUSTOMER | 客户 | 终端客户 | | LOGISTICS | 物流商 | 物流运输服务商 | **其他维度说明**: - **行业(industry)**:可通过master_company_dimension表扩展,type='industry' - **规模(scale)**:可通过master_company_dimension表扩展,type='scale' - **区域(region)**:可通过master_company_dimension表扩展,type='region' **使用说明**: - type字段直接存储公司类型编码,无需外键关联 - WHERE条件示例:`WHERE type IN ('SUPPLIER', 'SUBSIDIARY')` - 对于扩展维度(industry、scale等),可通过维度表独立查询,但不需要与公司表关联 - 维度表作为独立数据字典,提供编码与名称的映射关系 ## 多步骤查询支持 - **类型筛选优先**:复杂查询建议先筛选公司类型,再关联公司数据 - **中间表创建**:可作为筛选条件的源表,创建中间表保存筛选的公司ID - **中间表格式**:{user_id}_{datetime}_step{n}_filtered_companies - **中间表关键字段**:id, code, name, type, level, status, parent_id - **类型筛选步骤**: 1. 直接使用type编码筛选公司:WHERE type IN ('SUPPLIER', 'AGENT') 2. 如需获取类型名称:可单独查询master_company_dimension表,但不需要与公司表关联 3. 创建中间表保存筛选结果 4. 关联业务数据:用中间表公司ID关联查询店铺、销售等业务数据 - **示例流程**:用户查询"所有供应商和代理商的店铺销售数据" → 1. 筛选type IN ('SUPPLIER', 'AGENT') 2. 创建中间表包含符合条件的公司ID 3. 用中间表关联master_store获取相关店铺 4. 用店铺ID关联bill_sales_retail查询销售数据 - **层级查询**:支持按公司层级(level)和父公司(parent_id)进行树状结构查询