当前位置:首页 > 行业动态 > 正文

供应商数据库表

供应商数据库表存储供应商基础信息,含ID(主键)、名称、联系人、电话、地址等

供应商数据库表设计详解

在企业资源规划(ERP)系统或供应链管理系统中,供应商数据库表是核心数据结构之一,用于存储和管理供应商的基本信息、业务往来记录及信用评估数据,以下从字段设计、表结构优化、数据关联性等方面展开详细说明。


基础信息表

基础信息表用于存储供应商的静态属性,如企业名称、联系方式等,以下是典型字段设计:

字段名 数据类型 说明
supplier_id INT (主键) 唯一标识符,自增序列
name VARCHAR(255) 供应商全称(如“XX科技有限公司”)
alias VARCHAR(100) 供应商简称(如“XX科技”)
legal_person VARCHAR(100) 法人代表姓名
contact_name VARCHAR(100) 主要联系人姓名
contact_phone VARCHAR(20) 联系电话(含区号,如010-12345678
contact_email VARCHAR(100) 联系邮箱
address VARCHAR(255) 注册地址(可结合provincecity字段拆分)
province VARCHAR(50) 所在省份(如“广东省”)
city VARCHAR(50) 所在城市(如“深圳市”)
zip_code VARCHAR(10) 邮政编码
registration_date DATE 企业注册日期(格式:YYYY-MM-DD)
business_scope TEXT 经营范围描述
status ENUM 合作状态(如activeinactiveblacklisted
created_at TIMESTAMP 数据创建时间(自动生成)
updated_at TIMESTAMP 数据更新时间(自动生成)

设计要点

  1. 主键与唯一性supplier_id为主键,确保唯一性;namealias可添加联合唯一索引,避免重复录入。
  2. 地址拆分:将地址拆分为provincecity等字段,便于按地域筛选供应商。
  3. 状态管理:通过status字段标记供应商状态,支持快速过滤(如仅显示合作中供应商)。

业务信息表

业务信息表用于记录供应商的动态业务数据,如合作历史、交易记录等,以下是典型字段设计:

字段名 数据类型 说明
business_id INT (主键) 业务记录唯一标识符,自增序列
supplier_id INT (外键) 关联基础信息表的supplier_id,确保数据一致性
product_category VARCHAR(100) 供应产品类别(如“电子元器件”、“机械设备”)
annual_purchase DECIMAL(15,2) 年度采购金额(单位:元)
last_order_date DATE 最近一次下单日期(格式:YYYY-MM-DD)
payment_term VARCHAR(50) 付款条件(如“月结30天”)
credit_rating ENUM 信用等级(如ABC
comments TEXT 备注信息(如合作评价、特殊要求)

设计要点

供应商数据库表  第1张

  1. 外键关联:通过supplier_id与基础信息表关联,避免数据冗余。
  2. 数值精度annual_purchase使用DECIMAL(15,2),支持大额采购金额记录。
  3. 时间字段last_order_date用于分析供应商活跃度。

扩展信息表

扩展信息表用于存储非核心但可能有用的辅助数据,例如银行账户、资质文件等,以下是典型字段设计:

字段名 数据类型 说明
extension_id INT (主键) 扩展记录唯一标识符,自增序列
supplier_id INT (外键) 关联基础信息表的supplier_id
bank_name VARCHAR(100) 开户银行名称
bank_account VARCHAR(50) 银行账号
tax_number VARCHAR(50) 税务登记号
certificate_type VARCHAR(100) 资质证书类型(如“ISO9001”)
certificate_expire DATE 资质有效期(格式:YYYY-MM-DD)
attachment_url VARCHAR(255) 资质文件存储路径(如“/files/cert/2023/XX.pdf”)

设计要点

  1. 多对一关系:一个供应商可能有多个银行账户或资质文件,需通过supplier_id关联。
  2. 文件存储attachment_url字段存储文件路径,实际文件可存放在OSS或本地服务器。

表结构优化建议

  1. 索引优化

    • 在基础信息表的namecontact_phone字段上创建单列索引,加速模糊查询。
    • 在业务信息表的supplier_id字段上创建外键索引,确保关联查询效率。
  2. 数据完整性

    • 使用外键约束(FOREIGN KEY)确保业务表和扩展表的数据必须存在于基础表中。
    • emailphone字段添加格式校验(如正则表达式),避免无效数据。
  3. 分区表设计

    • 若数据量极大(如百万级供应商),可按provincestatus字段进行水平分区,提升查询性能。

示例SQL语句

-创建基础信息表
CREATE TABLE supplier_basic (
    supplier_id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    alias VARCHAR(100),
    legal_person VARCHAR(100),
    contact_name VARCHAR(100),
    contact_phone VARCHAR(20),
    contact_email VARCHAR(100),
    address VARCHAR(255),
    province VARCHAR(50),
    city VARCHAR(50),
    zip_code VARCHAR(10),
    registration_date DATE,
    business_scope TEXT,
    status ENUM('active', 'inactive', 'blacklisted') DEFAULT 'active',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-创建业务信息表
CREATE TABLE supplier_business (
    business_id INT PRIMARY KEY AUTO_INCREMENT,
    supplier_id INT,
    product_category VARCHAR(100),
    annual_purchase DECIMAL(15,2),
    last_order_date DATE,
    payment_term VARCHAR(50),
    credit_rating ENUM('A', 'B', 'C'),
    comments TEXT,
    FOREIGN KEY (supplier_id) REFERENCES supplier_basic(supplier_id)
);

FAQs

问题1:如何选择供应商表中的“联系邮箱”字段数据类型?

解答
contact_email字段建议使用VARCHAR(100),原因如下:

  1. 长度限制:常规邮箱地址长度不超过100字符,可覆盖大多数场景。
  2. 兼容性:避免使用TEXT类型,因其可能影响查询性能。
  3. 格式校验:可在应用层添加正则表达式校验(如^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$),确保数据有效性。

问题2:如何处理供应商多地址场景?

解答
若供应商存在多个联系地址(如注册地址、收货地址),可采用以下两种方案:

  1. 独立地址表
    创建supplier_address表,字段包括address_id(主键)、supplier_id(外键)、address_type(如“注册地址”、“收货地址”)、detail(详细地址),通过supplier_id关联基础表,支持一对多关系。

  2. JSON字段存储
    在基础表中新增addresses字段(类型为JSON),存储多地址数组,

    [
        {"type": "register", "detail": "北京市朝阳区XX路XX号"},
        {"type": "delivery", "detail": "上海市浦东新区XX工业园"}
    ]

    适用于读多写少的场景,但需数据库支持JSON操作(如MySQL 5.7+)。

0