未命名
分类:现代化开发
发布于:
阅读时间:29 分钟
🔍 一、业务规则提炼
-
商品(Product)
- 一个商品可以由 多个工厂 生产(一对多)
- 一个商品只对应 一个出口商(一对一)
-
工厂(Factory)
- 工厂也可以作为出口商(即:某些工厂具备出口资质)
- 多个商品可由同一个工厂生产(多对一)
-
出口商(Exporter)
- 出口商可能就是某个工厂(如 Dong Qi Footwear Intl Mfg Co., Ltd 同时是出口商 & 关联工厂)
- 一个出口商可对应多个商品(一对多)
-
业务员(Salesperson / Agent)
- 可能隶属于出口商或工厂
- 一份询价单由某业务员负责
-
询价单(Quotation)
- 关联客户、商品、出口商、工厂、业务员
- 包含商品明细、价格、交期、付款条款等
-
客户(Client)
- 与询价单关联
-
银行信息(Bank Info)
- 属于出口商(收款方)
-
签署(Signature)
- 询价单需买卖双方签署(Buyer + Seller/Exporter)
🧱 二、推荐数据库表结构(规范化设计)
1. exporters(出口商)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主键 |
| name | VARCHAR | 公司名称 |
| address | TEXT | 地址 |
| website | VARCHAR | 官网 |
| VARCHAR | 邮箱 | |
| phone | VARCHAR | 电话 |
2. factories(工厂)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主键 |
| name | VARCHAR | 工厂名称 |
| address | TEXT | 地址1 |
| exporter_id | BIGINT FK → exporters.id | 所属出口商(若该工厂不独立出口,则挂靠某出口商) |
3. products(商品)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主键 |
| item_code | VARCHAR | 商品编码 |
| description | TEXT | 描述 |
| exporter_id | BIGINT FK → exporters.id | 唯一出口商 |
| units | VARCHAR | 单位(如 PCS) |
⚠️ 注意:这里 不直接关联工厂,因为一个商品可由多个工厂生产 → 用中间表。
4. product_factories(商品-工厂 多对多关系)
| 字段 | 类型 | 说明 |
|---|---|---|
| product_id | BIGINT FK → products.id | 商品 |
| factory_id | BIGINT FK → factories.id | 工厂 |
| PRIMARY KEY (product_id, factory_id) | 联合主键 |
5. clients(客户)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主键 |
| company_name | VARCHAR | 公司名 |
| contact_name | VARCHAR | 联系人 |
| VARCHAR | 邮箱 | |
| VARCHAR | ||
| phone | VARCHAR | 电话 |
6. salespersons(业务员)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主键 |
| name | VARCHAR | 姓名 |
| VARCHAR | 邮箱 | |
| phone | VARCHAR | 电话 |
| exporter_id | BIGINT FK → exporters.id | 所属出口商(或可为空) |
| factory_id | BIGINT FK → factories.id | 或所属工厂(二选一,或都允许) |
✅ 可简化:只关联
exporter_id,因工厂通常通过出口商对外。
7. quotations(询价单)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主键 |
| ref_no | VARCHAR | 报价单编号 |
| date | DATE | 日期 |
| client_id | BIGINT FK → clients.id | 客户 |
| exporter_id | BIGINT FK → exporters.id | 出口商(卖方) |
| salesperson_id | BIGINT FK → salespersons.id | 业务员 |
| delivery_time_days | VARCHAR | 交期(如 "35-45") |
| sample_leadtime_days | VARCHAR | 样品周期 |
| payment_terms | TEXT | 付款条款 |
| quality_remark | TEXT | 质量要求 |
| safety_compliance | TEXT | 安全合规(如 EN71) |
| status | VARCHAR | 状态(Draft / Confirmed / Signed) |
8. quotation_items(询价单明细)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主键 |
| quotation_id | BIGINT FK → quotations.id | 所属报价单 |
| product_id | BIGINT FK → products.id | 商品 |
| factory_id | BIGINT FK → factories.id | 本次报价指定的工厂(从 product_factories 中选择) |
| unit_price_usd | DECIMAL | 单价 |
| quantity | INT | 数量 |
| total_usd | DECIMAL | 小计 |
| remark | TEXT | 备注 |
✅ 关键点:虽然商品有多个工厂可选,但每份报价单中每个商品只能指定一个工厂来生产 → 所以在
quotation_items中明确factory_id。
9. bank_infos(银行信息)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主键 |
| exporter_id | BIGINT FK → exporters.id | 所属出口商 |
| beneficiary | VARCHAR | 收款人 |
| account_no | VARCHAR | 账号 |
| bank_name | VARCHAR | 银行名称 |
| bank_address | TEXT | 银行地址 |
一个出口商可有多个银行账户(如不同币种),所以是一对多。
✅ 四、特别说明
- 出口商与工厂的关系:采用“出口商为主,工厂为辅”模型。即使工厂自己出口,也在
exporters表中建一条记录,并在factories.exporter_id指向自己。