多国语言数据库设计
分类:
- 数据库级别
- 表级别
- 字段级别
数据库级别,不同语言使用不同的数据库,数据库中通常包含许多并不涉及到多语言的表,会出现冗余表。
着重介绍表和字段级别:
字段级别(ID, Description, Description_En, Description_Fr...)
ID为主键
优点:
- 操作简单,一条记录搞定
缺点:
- 不利于扩展,如添加新语言,需要添加字段
- 不同语言加载不同字段
表级别
表1(ID)ID为主键
表2(ID, LanguageID, Description)ID和LanguageID 为复合主键
优点:
- 减少冗余,按需添加
- 加载方便,按语言进行过滤
- 扩展方便,添加新语言时不需调整表结构
缺点:
- 操作两个表
附:
id keyid langid title
--------------------------------
1 1 1 广
2 1 2 廣
3 1 3 wide
keyid:表示这个内容属于哪个主题(例如新闻的ID)
langid:当前语言ID
title 当然是标题和内容了
我在一个软件(winform)中使用的是类似楼上的设计,工作很好。
我在一个大型网站中也同样使用上面的设计。
我要说的是这不是“最有效果”的。
速度,速度--还是速度的问题。数据表切分的问题。