【问题标题】:how to setup one or two tables where data is similar but used for different purposes如何设置一个或两个数据相似但用于不同目的的表
【发布时间】:2019-08-02 21:20:36
【问题描述】:

我正在创建一个字典应用程序,使用 Room persistence 和 MVVM,其中可以有单词、同义词、反义词和同音词。同义词、反义词和同音词表可以包含单词表中的全部或部分相同单词。

因此,在下面的示例中,Word 表中的“word”和 Synonym 表中的“synonym”可以是完全相同的值。这也适用于其他 2 个表(反义词和同音异义词 [具有相同拼写和不同含义的单词])。

      Join method                            Self-Join
+---------------------+               +---------------------+
|         Word        |               |         Word        |
+---------------------+               +---------------------+
| PK      word        |               | PK      word        |
+---------------------+               | FK     synonym      |
                                      | FK    antonym       |
+---------------------+               | FK     homonym      |
|         Join        |               +---------------------+
+---------------------+
| FK      word        |
| FK     synonym      |
+---------------------+

+---------------------+
|        Synonym      |
+---------------------+
| PK     synonym      |
+---------------------+

我考虑过使用自连接(不确定上述是否可行),但单词和其他 3 个表之间可能存在 M:N 关系。

如果我使用单词 table 为 3 个表中的每一个创建一个 M:N 连接,我将在所有 4 个表中都有很多重复的“单词”。如果数据不同,那将是理所当然的,但是数据是相同的,所以我想我会问,如果 JOIN 这是我应该这样做的方式吗?还是有别的办法?

【问题讨论】:

    标签: android sql sqlite android-studio


    【解决方案1】:

    这是一个非常奇怪的数据模型。我希望:

    words
        word_id primary key
    

    然后是三个额外的表:

    synonyms
        word_id foreign key
        synonym_word_id foreign key
    
    antonyms
        word_id foreign key
        antonyms_word_id foreign key
    
    homonyms
        word_id foreign key
        homonyms_word_id foreign key
    

    您也可以将其实现为一个带有“类型”列的表。

    【讨论】:

    • 所以,基本上 3 个表(同义词、反义词和同音词)中的每一个都有一个连接表,对吧?不太确定如何措辞这个问题。我基本上想要做的是显示带有单词的其他 3 个表的列表(如果存在)。用户将根据需要添加它们。
    • @MichaelScottMartens。 . .是的,每个关系都有一个单独的表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多