0

我正在研究一个数据库模式来存储地理空间数据,我需要支持点名称和描述等字符串的国际化,并支持记录所有修改。

这是我当前的架构:

points
---------------
rev_id (int autoincrement)
rev_from (date)
rev_to (date)
rev_operation (insert/update/delete)
rev_user (user who has made the modification)
point_id (int)
point_geom (geometry)
point_name_en
point_desc_en
point_name_fr
point_desc_fr

它工作正常,但是每次添加新语言时我都必须更新设计,并且在我更新一个翻译的情况下,我必须复制一整行......这会导致数据重复。所以为了避免我想把本地化的字符串放在另一个表中:

points
---------------
rev_id (int autoincrement)
rev_from (date)
rev_to (date)
rev_operation (insert/update/delete)
rev_user (user who has made the modification)
point_id (int)
point_geom (geometry)

points_text
---------------
point_id (int)
lang_code (en/fr/es/it etc...)
point_name
point_desc

它有效,但我无法跟踪翻译的修改。

设计一个数据库的最佳方法是什么,该数据库存储对象及其属性的翻译和属性修改的历史。

4

1 回答 1

0

为什么不将 rev_ 字段添加到 points_text (我认为有错误 - 请参阅我对问题的评论)?

您需要将两个概念分开:插入点和插入文本。两者都可以进行修订。有时两者可能同时发生。

如果您愿意,您可以将该修订数据移出到一个单独的表中,并从两个点表中引用它。当两者一起修改时,这将让您共享相同的条目。

于 2012-08-06T00:58:08.057 回答