我正在建立一个双语网站,并想知道最好的设计使用的产品数据库。该网站将永远只使用两种语言,绝对没有计划修改该网站使用两种以上的语言在未来。
因此,考虑到这一点,设计支持两种语言的产品数据库模式的最简单方法是什么?我可以想出两种方法来做到这一点:
产品表:
id
date_created
价格
product_info表:
id
product_name
描述
语言
product_id
使用此设计,我们将在product_info表中为产品表中的每个条目创建两个条目。产品信息表中的两个条目将由一个包含英文文本的记录和另一个包含日语文本的记录组成,语言字段充当一个标志来指示存储该记录的语言。
产品表:
id
date_created
价格
product_info表:
id
product_name_en
description_en
product_name_jp
description_jp
product_id
我认为,如果我们在网站中使用2种以上的语言,或者我们计划在将来将站点扩展到3+语言,那么第一个设计将是有意义的。但在我们的情况下,该网站将不会使用超过2种语言。因此,我不确定这是否是最好的设计方法,如果我们只有2种语言在网站上。对于2种语言来说,第二种设计似乎是一种更简单的方法,但我恐怕在这里忽略了一些东西,并且很难决定使用哪种方法。
对这些方法有什么想法/意见吗?我很想听听。
谢谢!
发布于 2011-01-25 06:17:45
永不言败。我会选择一个单独的产品信息记录,其中包含一组信息和一种语言(第一个选项)。对多语言代码进行必要的检查是小菜一碟(如果构建正确,只需在少量查询中添加一个语言id )。
您应该做一个通用处理程序来确定您想要的语言。产品和将生成输出的其他元素应该具有一组使用该语言内部的属性。例如,如果您有一个Product,它将为您提供一个getDate和GetPrice方法,但也会给出一个getProductName和getDescription方法。在内部,它将使用全局可用的语言获取正确的信息,并通过这些方法返回信息。
这样,您只需要一个位置就可以根据(子)域或给定的会话变量来确定正确的语言,并且您只需要从数据库加载数据的少数地方就可以考虑到该语言。对于你的其他网站,唯一的例外是CMS,甚至不会有像语言这样的东西。一切都将完全透明。它只会显示“ProductName”,甚至不知道它可能有不同的翻译。
这样做几乎不需要任何额外的开发,而且您的站点将支持将来所需要的尽可能多的语言。
发布于 2011-01-25 07:39:03
由于您赞成在绿地项目中开发模式,因此您应该始终选择最适合您的使用程序的选项。您谈论的是两种语言,而不是更多的语言,但这恰恰是大多数数据库设计人员都在考虑他们的项目,然后才得到客户的指示,在您的情况下添加更多的功能或语言。
如果有一个选项不能限制您轻松地添加几种语言的可能性,那么为什么要选择另一种语言呢?
因此,如果我是您,我的决定是第一个选择,不是因为您可以扩展它,而是因为它是一个干净的设计,您可以很容易地在其他应用程序层中抽象出多语言的东西。
您可以用单个列标识记录的语言,并且不必为特定语言所需的每个属性寻址多个列(按名称)。对于性能问题,可以使用匹配搜索条件(id+language_id)的多列索引。
https://stackoverflow.com/questions/4790444
复制相似问题