美好的一天!
我正在寻找实现多语言数据库模式的最佳方法,我使用的方法与此处相同:What are best practices for multi-language database design?(一个表具有语言中性数据,一个表用于所有翻译)。它似乎很好而且干净,并且不限制可能的语言数量。
但是我想使用一个简单的ORM(比如C#中的LINQ,PHP中的Outlet等),其中每个表都映射到实体类。这可以工作,但查询变得更加复杂。
可能有一些特殊的技术可以使用这种DB shema和ORM吗?或者我可以从支持更复杂映射的更复杂的ORM中受益?
提前致谢!
答案 0 :(得分:20)
对所有翻译仅使用一个表可能会导致任何操作的严重性能和复杂性问题(选择/插入/更新/删除);试着理解我的意思。
然后我会选择以下方法(每个“可翻译”对象有两个表),这似乎是性能,复杂性和维护问题之间的良好平衡。
product
- id (PK)
- number1
- number2
- date1
- date2
...
product_i18n
- id (PK)
- product_id (FK)
- language_id (FK)
- string1
- string2
...
language
- id (PK)
- name
使用Propel ORM(PHP)检查它是如何完成的:http://propelorm.org/blog/2011/01/11/propel-gets-i18n-behavior-and-why-it-matters.html
HTH