SQL链接词-双向关系



各位SQLarians大家好!

我只是想构建一个管理词汇的工具。在对数据库设计进行思考的过程中,我一直在想我到底该如何建立一段关系,这样,当两项联系在一起时,总是相互了解。这是我的主表词汇:

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

所以我想给每个单词一些相关的单词。但当我这样做时,我也想自动将这个词作为关联词赋予链接的词,这样我就不必链接两次了。

我的第一个方法是添加一个包含相关单词的额外表格,比如:

- [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

这样的事情是如何实现的,有最佳实践吗?

干杯!

您可以使用两列创建额外的表

单词表

  • [generated_id]整数主键
  • [word]文本
  • [翻译]文本
  • [pos]文本
  • [示例_内容]文本
  • [example_translation]文本
  • 【说明】文本
  • [related_word_group_id]整数FK_RELWORDGROUP_ORD
  • [related_image]博客

RELWORDGROUP_TABLE

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

您需要一个具有两列的n:m关系表:

word_idrelated_word_id

你可以用两个插入语句链接和反向链接你的单词,这也可以用触发应用

最新更新