到目前为止,我已经采用了几种不同的方法。我想知道是否有一个很好的模式。
系统具有动态内容。因此,不仅数据量和数据本身是动态的(计数(行)),而且字段数也是动态的。因此,博客可能有10个需要翻译的字段,但购物车项目有5个。
我一直在做的是为表行插入一个id,用于保存该字段的语言数据。此语言表具有id,defaultlanguage以及任意数量的其他语言。这样只有一个语言表。
这很漂亮,但是我无法更新视图,因为当多个连接引用同一个表时,它不可更新(MySQL)。那么也许有更好的方法可以做到这一点。
有更好的设计吗?在这种情况下使用了哪些常见的设计模式?
答案 0 :(得分:1)
示例:
insert into FieldTypes('S', 'string');
insert into FieldTypes('DT', 'date/time');
insert into Fields(1, 'Author', 'S');
insert into Fields(2, 'Created', 'D');
insert into i18n(1, 1, 'en', 'Author');
insert into i18n(2, 1, 'ru', 'Автор');
insert into i18n(3, 2, 'en', 'Created');
insert into i18n(4, 2, 'ru', 'Создано');
insert into Content(1, 2, 'Test data');
insert into FieldValues(3, 2, 1, 'Tester');
insert into FieldValues(4, 2, 2, '2011-03-20T12:20:00');
/* Display content fields in the user language */
select c.ID, f.ID, i.Value as FieldName, fv.Value as FieldValue
from Content c, FieldValues fv, Fields f, i18n i
where c.Fields = fv.CollectionID
and fv.Field = i.Field
and i.LanguageID = :UserLanguage
and c.ID = :ContentID