【问题标题】:database design for dictionary application字典应用程序的数据库设计
【发布时间】:2011-01-21 12:22:48
【问题描述】:

目前我想为移动设备开发字典应用程序。字典本身使用离线文件/数据库来翻译单词。它只翻译两种语言,例如英语-西班牙语词典。 我脑子里有一个简单的设计。这将是两个表:英语表和西班牙语表。 每个表包含:

  • word_id = 作为其他表外键的 id
  • 单词 = 单词
  • word_description
  • correspond_trans_id = 其他表的 id,即这个词到其他语言的翻译。

也因为这是针对移动应用程序,数据库使用 SQLite。

每个表格的定义数据已按表格上的字段'word'顺序提供。但是,如果添加数据定义,我仍然在考虑这个问题。因为该表将按字段 'word' 进行排序,所以是否有任何方法可以按单词顺序放置(插入)新记录?或者有什么让它更高效的想法?

【问题讨论】:

    标签: database database-design


    【解决方案1】:

    至少每个翻译都有一些翻译可能性,具体取决于上下文。如果你想为两种语言做一个双向字典,你至少需要三个表:

    ENGLISH
    ID | WORD
    1  | 'dictionary'
    
    GERMAN
    ID | WORD
    1  | 'lexikon'
    2  | 'wörterbuch'
    
    TRANSLATION_EN_DE
    ID_EN | ID_DE
    1     | 1
    1     | 2
    

    前两个表包含该语言中已知的所有单词,双向映射由第三个映射表完成。这是一个常见的 n:n 映射案例。 有了另外两个表,您总是可以在您的字典中添加一种新语言。如果你用一个表来做,一个单词会有多个定义,因此没有规范化的数据库。

    您还可以将语言表合并到一个表中,通过另一列定义单词语言(引用语言表)。在这种情况下,您需要为语言和单词本身创建一个 2 列索引。

    【讨论】:

    • 前两个表可以与附加的“语言”列组合。
    【解决方案2】:

    当语言 1 中的一个单词可以被语言 2 中的多个单词翻译时,你打算怎么做?我认为你必须使用类似 wursT 的设计来处理这个问题。

    RE 按字母顺序插入记录:您通常不必担心数据库中记录的物理顺序。您可以使用 ORDER BY 子句以任何所需的顺序检索它们,并使用索引使其高效。 SQL 标准中没有任何内容可以控制物理排序。嗯,我记得遇到过一些关于强制对我使用的某个数据库进行物理排序的事情,我认为是 MySQL,但大多数不会让你对此进行任何控制。我没有使用过 SQLite,所以我不能说它是否提供了一种方法。

    【讨论】:

      【解决方案3】:

      当然,单词与其可能的翻译之间的关系是一对多或多对多。我不清楚您将如何在模型中表示这一点。看来您可能还需要至少一张桌子。

      【讨论】:

        【解决方案4】:

        我同意马特的观点 - 为了让生活更轻松,我会坚持使用一张桌子。此外,如果您打算使用 CoreData,则在使用 Obj 时,传统数据库设计的索引建模与基于对象图的模型不同。 C/IOS。

        按照 Select 查询和内部/外部联接的传统思路很容易思考,但例如,在为两个表定义数据模型时,您的列“correspond_trans_id”通常会通过设置“关系”来处理(如果您当然是使用CoreData)。

        本质上,除非有充分的理由拥有两张桌子,否则我会坚持使用一张。

        关于排序,您可能不需要保持数据集中单词的顺序。我猜你想保留所有按字母顺序排列的东西,如果数据发生变化,这将涉及一些工作,即使只是一张表。

        再次使用 CoreData、NSFetchRequest 和 NSSortDescriptor,很容易返回一组按指定列排序的记录,让您不必担心数据库的修改和添加。

        如果你有任何问题,请给我留言。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-07
          • 1970-01-01
          • 2018-01-31
          • 1970-01-01
          • 2015-11-03
          • 2014-03-07
          • 1970-01-01
          • 2017-12-23
          相关资源
          最近更新 更多