【问题标题】:What would be best approach in case of language dictionary with word types (nouns, verbs...)?对于具有单词类型(名词,动词......)的语言词典,最好的方法是什么?
【发布时间】:2019-02-07 08:20:53
【问题描述】:

我正在设计一个在线语言词典数据库,并且我使用了关系模型。目前,我正处于计划阶段。我创建了其中的大部分,但我一直坚持创建存储单词类型指定(名词、动词等)的数据库的一部分。下面是数据库的例子:

language1_words
------------------------
word1_id  int(11)  AI  PK
word1     varchar(128)

junc_lang1_lang2
------------------------
word1_id  int(11) FK(language1_words)
word2_id  int(11) FK(language2_words)

language2_words
------------------------
word2_id  int(11)  AI  PK
word2     varchar(128)

这是我现在创建的。现在,我想添加单词类型表并将其连接到前面提到的数据库部分。对于每个单词都应该是对应的单词类型。一个例子:

word 1 ---> noun, masculine, singular
word 2 ---> verb, transitive
word 3 ---> adjective, derived, masculine, singular
etc.

我的问题是最好的方法是什么?我想遵循规范化规则,所以我不想在数据库中重复条目,我想创建一些“参考”表并从那里获取单词类型。最重要的部分是我的特权注册用户在线词典能够通过表单插入新单词,这将填满此 RD 模型中所有必需的单元格,因此我在创建数据库时也必须考虑该属性。

【问题讨论】:

  • 对此没有“最佳”方法。人类语言无法规范化,因此试图找到规范人类语言的“最佳”方法是徒劳的。无论你采取什么方法都会有缺点。您可以期望的最好方法是适用于您的特定用例的方法 - 这意味着只有您才能确定最佳方法,可能需要经过大量的反复试验和调整。
  • 当我写“最佳方法”时,我指的是关于如何解决这个问题的“想法”。我知道总是有缺点和好的选择和坏的选择,但我也想听听其他意见和解决方案。
  • 很遗憾,这里不适合征求开放式“想法”。

标签: mysql database database-design relational-database


【解决方案1】:

对于您提到的特定情况,要将单词分类为一种单词,您需要的是:

WordTypesiddescription 的表。

language1_wordslanguage2_words 有一个word_type 字段指向(外键)WordTypes 表。

如果每个单词可能有多个类型,那么您将需要打破多对多关系。

在这种情况下,除了WordType 表之外,您还需要一个带有word_idtype_id 的附加表WordByType,第一个表是language*_words 的外键,第二个表是外键到WordType 表。 (在这种情况下,您不需要将word_type 字段添加到language*_words 表中)。

【讨论】:

  • 这部分我可以理解,这是我知道如何制作的,但问题在于您建议的description 部分。我不希望那部分像noun, masculine, singularverb, transitive(原子列,1NF)。我想我应该为这个词类型(table_verbstable_nouns)设置单独的表格,但是我不知道如何设计这个。
  • 鉴于您询问的场景,使用 RDBMS,这将是按一种或多种类型对单词进行分类的方法。也许我不明白为什么您需要为每种类型使用不同的表。在我看来,以后使用这些数据将非常困难。
  • 我不想将不同的词类型放在不同的表中。我想将您建议的表wordTypes 设为description,以从另一个表中获取单词类型的值,该表将为每个描述符(例如noun_gendernoun_number)提供单独的列。因为这个表会根据单词类型(noun ---> 2verb ---> 1adjective ---> 3)有不同的描述符,我认为在不同的表中区分单词类型会很好。
猜你喜欢
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
  • 2012-03-03
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
相关资源
最近更新 更多