SQL 链接词 - 双向关系

SQL linked words - two way relationship

各位 SQLarians,大家好!

我只是想构建一个管理词汇表的工具。在思考数据库设计的过程中, 我一直想弄清楚我究竟应该如何建立关系,这样当 linked 时,两个项目总是相互了解。 这是我的主要 Table 词汇表:

- [generated_id] INTEGER PRIMARY KEY
- [word] TEXT
- [translation] TEXT
- [pos] TEXT
- [example_sentence] TEXT
- [example_translation] TEXT
- [description] TEXT
- [related_words] ???
- [related_image] BLOB

所以我想给每个词一些相关的词。但是,当我这样做时,我还想自动将这个词作为 linked 词的相关词,这样我就不必 link 两次了。

我的第一个方法是额外 Table 和相关词,像这样:

- [word] INTEGER
- [rel_word_1] INTEGER
- [rel_word_2] INTEGER
- [rel_word_3] INTEGER
- [rel_word_4] INTEGER
- [rel_word_5] INTEGER
...

但这只有在我有很多重复数据时才会有两种方式,例如:

Word     | rel_word_1

word     | rel_word
rel_word | word

如何实现这样的目标,是否有最佳实践?

干杯!

您需要一个 table 用于 n:m 两列关系:

word_id related_word_id

您可以使用两个插入语句 link 和返回link 您的话,也可以使用触发器

您可以使用两列

创建额外的 Table

WORD_TABLE

  • [generated_id] 整数主键
  • [单词] 文本
  • [翻译] TEXT
  • [pos] 文本
  • [example_sentence] 文本
  • [example_translation] 文本
  • [说明] 文本
  • [related_word_group_id] 整数 FK_RELWORDGROUP_WORD
  • [related_image] BLOB

RELWORDGROUP_TABLE

  • [related_word_group_id] 整数主键
  • [rel_words_ids] 文本(例如 "word_id1:word_id3:word_id5:... etc")