跨境电商系统多语言内容的设计方案

方案1:一个表设计一个多语言内容关联表

表解构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- product_categories 
- id
- product_categorie_l10ns
- category_id # 关联 product_categories.id
- locale
- name
- products
- id
- category_id # 关联 product_categories.id
- product_l10ns
- product_id # 关联 products.id
- locale
- title
- desciption
- detail

数据

product_categories:

category_id
1
2

product_categorie_l10ns:

category_id locale name
1 en food
1 zh-CN 食物
1 zh-TW 食物
2 en cage
2 zh-CN 笼子
2 zh-TW 籠子

products:

id category_id
1 1
2 1

product_l10ns:

product_id locale title desciption detail
1 en millet desc 1 detail 1
1 zh-CN 小米 简介 1 详情1
1 zh-TW 小米 簡介 1 詳情1
2 en maize desc 2 detail 2
2 zh-CN 玉米 简介 2 详情2
2 zh-TW 玉米 簡介 2 詳情2

方案2:共用一个多语言内容表

优点:只需要一个表来保存多语言数据。
缺点:数据量过大时性能拉胯。

本地化内容中的数据在访客端查询的时候,属于非实时关键数据(无价格、库存等数据),都是可以缓存的,所以只要系统本地化数据量不是超级大,都可以优先考虑使用此方案。

数据操作时需要增加参数:able_type、able_id、column,封装一下增加复杂度不多。

表解构

1
2
3
4
5
6
7
8
9
10
11
12
- product_categories 
- id
- products
- id
- category_id # 关联 product_categories.id
- l10ns
- able_type
- able_id
- name
- locale
- title
- body longtext # 保存长内容,缺点是不便查询,如果系统数据量大则把该字段分表

able_type + able_id 多态关联

数据

product_categories:

category_id
1
2

products:

id category_id
1 1
2 1

l10ns:

able_type able_id name locale title body
product_categories 1 name en food NULL
product_categories 1 name zh-CN 食物 NULL
product_categories 1 name zh-TW 食物 NULL
product_categories 2 name en cage NULL
product_categories 2 name zh-CN 笼子 NULL
product_categories 2 name zh-TW 籠子 NULL
products 1 title en millet NULL
products 1 title zh-CN 小米 NULL
products 1 title zh-TW 小米 NULL
products 1 desciption en desc 1 NULL
products 1 desciption zh-CN 简介1 NULL
products 1 desciption zh-TW 簡介1 NULL
products 1 detail en NULL detail 1
products 1 detail zh-CN NULL 详情1
products 1 detail zh-TW NULL 詳情1

跨境电商系统多语言内容的设计方案

https://coderpan.com/theory/l10ns-design.html

作者

CoderPan

发布于

2024-05-06

更新于

2024-07-18

许可协议

评论