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

标签 database database-design

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

有什么方法可以更新翻译表中的条目吗?或者您是否还需要有一个主键以方便任何更新?理想情况下,不需要更新,但可以想象翻译可能不正确并且需要更改。

看来你可以删除不正确的翻译并插入一个新的。就我而言,我有一个服务器数据库和一个 Android 应用程序,可以将所需的语言以及相关的单词和翻译提取到本地数据库中。在这种情况下,虽然在服务器上删除不正确的翻译可能很简单,但客户端怎么知道,除非它删除并重新填充整个翻译表?

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

最佳答案

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

update TRANSLATION_EN_DE
set    ID_DE = 3
where  ID_DE = 2 and
       ID_EN = 1;

不过我不会为每种语言准备一张 table 。

为独特的语言添加一个新表,并将其主键添加到包含所有语言的单词表中。

那么你的翻译表就是“word_from”和“word_to”。

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

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

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

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

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

关于database - 如何更新翻译词典数据库的翻译表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30985510/

相关文章:

sql - 如何有效地从 Postgresql 8.1 表中删除行?

php - for 循环内的 mysql_query 给出与 mysql_fetch_assoc 相关的错误/警告

c# - 一次性在多个表中添加数据,并在它们之间设置外键约束

database - 循环引用数据库的异常(exception) - 这是一个吗?

php - 如何在 MySql 表中存储车辆的技术规范和功能

sql - 如何优化 M 的数据库模型 :N relationship

java - hibernate session.save() 插入与对象不同的值

php - 基于动态数量的条件查询数据库

sql - 为性能选择索引和主键

database - 是否建议在 Oracle 表空间中使用统一的扩展区大小?