1. 核心表设计
1.1 网站主表 (sites)
存储网站的基本信息,每个分站对应一条记录。
site_id (主键): 分站唯一标识
site_code (唯一): 分站代码(如 en, zh, es)
site_name: 分站名称
default_language: 默认语言代码(如 en, zh)
is_active: 是否激活
1.2 语言表 (languages)
存储支持的语言信息。
language_id (主键): 语言唯一标识
language_code (唯一): 语言代码(如 en, zh, es)
language_name: 语言名称
1.3 用户表 (users)
存储用户信息,适用于所有分站。
user_id (主键): 用户唯一标识
username: 用户名
email: 邮箱
password_hash: 密码哈希值
preferred_language: 用户偏好语言(外键关联 languages.language_code)
2. 多语言内容管理
2.1 多语言内容主表 (content)
存储内容的通用信息(与语言无关)。
content_id (主键): 内容唯一标识
content_type: 内容类型(如 page, blog, product)
created_at: 创建时间
updated_at: 更新时间
2.2 多语言内容翻译表 (content_translations)
存储具体语言的内容翻译。
translation_id (主键): 翻译唯一标识
content_id (外键): 关联 content.content_id
language_code (外键): 关联 languages.language_code
title: 标题
body: 正文内容
meta_description: SEO 描述
meta_keywords: SEO 关键词
3. 分站与语言关联
3.1 分站语言表 (site_languages)
存储每个分站支持的语言。
site_id (外键): 关联 sites.site_id
language_code (外键): 关联 languages.language_code
is_default: 是否为默认语言
4. URL 路由管理
4.1 URL 路由表 (routes)
存储多语言分站的 URL 路由信息。
route_id (主键): 路由唯一标识
site_id (外键): 关联 sites.site_id
language_code (外键): 关联 languages.language_code
path: URL 路径(如 /about, /关于)
content_id (外键): 关联 content.content_id
5. 示例查询
5.1 获取某个分站的所有语言
sql
复制
SELECT l.language_code, l.language_name
FROM site_languages sl
JOIN languages l ON sl.language_code = l.language_code
WHERE sl.site_id = 1;
5.2 获取某个内容的特定语言翻译
sql
复制
SELECT ct.title, ct.body
FROM content_translations ct
WHERE ct.content_id = 123
AND ct.language_code = 'zh';
5.3 获取某个分站的默认语言内容
sql
复制
SELECT ct.title, ct.body
FROM content_translations ct
JOIN content c ON ct.content_id = c.content_id
JOIN sites s ON s.default_language = ct.language_code
WHERE s.site_id = 1
AND c.content_id = 123;
6. 优化与扩展
缓存:使用 Redis 或 Memcached 缓存多语言内容,减少数据库查询压力。
分表:如果内容量巨大,可以按语言或分站分表存储。
CDN:将静态资源(如图片、CSS)通过 CDN 分发,提升加载速度。
搜索引擎优化:在 content_translations 表中增加 SEO 相关字段(如 slug, meta_title)。
7. ER 图
复制
+-------------+ +-----------------+ +---------------------+
| sites | | languages | | content |
+-------------+ +-----------------+ +---------------------+
| site_id (PK)|<------| language_code(PK)| | content_id (PK) |
| site_code | | language_name |<-----+| content_type |
| site_name | +-----------------+ | created_at |
| default_lang| | updated_at |
| is_active | +---------------------+
+-------------+
| |
| |
| |
| +---------------------+ |
+------>| site_languages |<--------------+
+---------------------+
| site_id (FK) |
| language_code (FK) |
| is_default |
+---------------------+
|
|
|
+---------------------+
| content_translations|
+---------------------+
| translation_id (PK)|
| content_id (FK) |
| language_code (FK) |
| title |
| body |
| meta_description |
| meta_keywords |
+---------------------+
通过这种架构,可以实现多语言分站的高效管理,同时具备良好的扩展性和灵活性。
以上就是建设多语种分站的网站数据库架构的详细内容,更多信息请关注OD云其它相关文章!

喜 欢 248