Database 如何更新翻译词典数据库的翻译表

Database 如何更新翻译词典数据库的翻译表,database,database-design,Database,Database Design,我正在为翻译词典实现一个数据库,并且正在使用指定的设计 有没有办法更新翻译表中的条目?或者您是否也需要一个主键才能方便进行任何更新?理想情况下,不需要更新,但可以想象,翻译可能不正确,需要更改 似乎您可以删除不正确的翻译并插入新的翻译。在我的例子中,我有一个服务器数据库和一个Android应用程序,它将把它需要的语言、相关的单词和翻译拉到一个本地数据库中。在这种情况下,虽然在服务器上删除不正确的翻译可能很简单,但客户机如何知道,除非它删除并重新填充整个翻译表 主键,然后对两个word_id列的唯

我正在为翻译词典实现一个数据库,并且正在使用指定的设计

有没有办法更新翻译表中的条目?或者您是否也需要一个主键才能方便进行任何更新?理想情况下,不需要更新,但可以想象,翻译可能不正确,需要更改

似乎您可以删除不正确的翻译并插入新的翻译。在我的例子中,我有一个服务器数据库和一个Android应用程序,它将把它需要的语言、相关的单词和翻译拉到一个本地数据库中。在这种情况下,虽然在服务器上删除不正确的翻译可能很简单,但客户机如何知道,除非它删除并重新填充整个翻译表


主键,然后对两个word_id列的唯一约束,是解决这个问题的最佳方法吗

您可以使用以下语句更新翻译表中的条目:

update TRANSLATION_EN_DE
set    ID_DE = 3
where  ID_DE = 2 and
       ID_EN = 1;
不过,我不会每种语言都有一张桌子

为唯一语言添加新表,并将其主键添加到包含所有语言的Word表中

然后,您的翻译表将是“word\u from”和“word\u to”

它将使您的设计和代码更加简单

要将更改传播到客户端,您可能需要在所有表的一个新列中对所有更改进行版本设置,以考虑新单词/翻译、拼写更正、可能删除的单词/翻译,并让客户端记录其检索数据的版本号

由于您可能有要传播的删除,因此需要在表中使用“软删除”标志,否则表中就不会有保存版本号的记录

您可能还需要一个表,该表将这些版本号作为唯一键保存,并带有一个文本来解释所发生的更改类型以及更改的时间戳。从所有其他表中删除时间戳列


因此,当您进行一批新的更改时,创建一个新的版本记录,进行所有必需的更改,然后在单个事务中提交所有更改。然后,其他数据库用户可以看到整个更改集,他们可以非常有效地检查更改集是否最新,并仅检索相关更改。

对不起,我的意思是我使用了该问题答案中引用的设计:。我也将问题更新到了链接。所以,我只有一个翻译表、一个单词表和一个语言表。同样的原则——修改翻译表不需要单列主键,可以根据两列的唯一性进行修改。好的,我知道如何修改服务器上的行(或者任何地方,真的),但是,这是如何传播到客户机的呢?我想我的问题应该用不同的措辞来表明这一点。假定客户端经常脱机,并且只会间歇性地查询服务器数据库以下载任何新插入或更新。我在每个表中都有update_time列,但是对于translation表,客户机如何确定translation(1,2)现在指的是服务器translation(3,2),并且应该相应地进行更新?