0

我有一个简单的产品数据库。

每个产品都是 N:1 与几个属性相关的,例如材质、性别、形状等。

每个属性都是一个表格(例如,带有方形、圆形和其他行的表格“形状”)

现在我想“翻译”每个属性,例如,我希望“square”记录与“quadrato”(it)、“carré”(fr)等相关联。"languages" 是另一个表 (it,fr,en) 并且可以添加或删除语言,因此具有列 "it_value"、"fr_value" 显然是不可能的和丑陋的。

我在考虑

  • 创建一个带有 id、language_id 和 value 的表“TRANSLATIONS”
  • 用 id、name 创建一个表“LANGUAGES”
  • 创建具有 id 和其他列的表“SHAPES”和“MATERIALS”
  • 使用 translation_id 和 material_id 创建一个表(例如)“MATERIAL_TRANSLATIONS”
  • 用同样的思路创建一个表“SHAPE_TRANSLATIONS”,如上

您认为其他解决方案会比这更有效或更优雅吗?

(很抱歉也没有发布 ER 图,但我不是一个那么“图形”的人!;))

4

2 回答 2

1

形状/材料表有多相似?您不能使用具有“属性类型”(形状/材料)和“属性名称”(正方形、棉花等)字段集的单个表来完成此操作吗?

如果是这样的话,那么我可能会使用类似的东西:

items: id, name  
languages: id, name  
items_translations: item_id, language_id, name

items 表中的“名称”将是您系统的默认语言(例如英语),任何翻译都将在 items_translations 表的“名称”字段中。

于 2012-09-18T14:43:01.120 回答
1

听起来不错。

您可以使用更抽象的表示,但我认为您的显式映射方法更容易理解,因此更好。

于 2012-09-18T14:45:02.040 回答