0

我正在尝试在 python(3.X) 中重写字典程序。我一直在使用 JSON,但认为尝试使用 SQLlite 会很有趣。我的问题是:

我有:

  1. 一个字
  2. 使用该词的句子列表
  3. 同义词列表
  4. 反义词列表

使用 SQLite3 组织数据的最简洁方法是什么?

我的想法是为“val and example”创建一个具有唯一 ID 的表,然后为同义词和反义词创建新条目(如果它们尚不存在)。

ValId  Val        Eaxmples
1      'hot'      'the water is hot\n she's hot\n'
2      'warm'     '...'
3      'cold'     '...'
4      'freezing' '...'

但是我将如何创建一个可以指向多个 id 的表呢?例如'hot'指向2作为同义词和3 , 4反义词。我将如何创建多个 ponter,我是否必须将它们放在一个刺痛中然后解析它们,因为我不知道如何创建同义词或反义词。

LinksID  ValID SynIDs AntsIds
   1        1     2      3,4
4

1 回答 1

1

我将创建两个单独的表,一个用于同义词,一个用于反义词,您必须FOREIGN KEYS在其中引用您的单词

CREATE TABLE synonym (
    SynID INTEGER,
    WordID1 INTEGER,
    WordID2 INTEGER,
    FOREIGN KEY (WordID1) REFERENCES word(ValID),
    FOREIGN KEY (WordID2) REFERENCES word(ValID)
);

CREATE TABLE antonym (
    AntID INTEGER,
    WordID1 INTEGER,
    WordID2 INTEGER,
    FOREIGN KEY (WordID1) REFERENCES word(ValID),
    FOREIGN KEY (WordID2) REFERENCES word(ValID) 
);

这样您就不必担心每个单词都有未知数量的同义词和反义词。然后你会得到以下结构:

你的单词表:

ValId  Val        Eaxmples
1      'hot'      'the water is hot\n she's hot\n'
2      'warm'     '...'
3      'cold'     '...'
4      'freezing' '...'

您的同义词表:

SynID  WordID1  WordID2
1      1        2
2      3        4

还有你的反义词表:

AntID  WordID1  WordID2
1      1        3
2      1        4
3      2        3
4      2        4
于 2012-06-01T19:26:33.317 回答