SQL связанных слов - двусторонние отношения - PullRequest
0 голосов
/ 27 марта 2020

Здравствуйте, 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
...

Но это будет работать в двух направлениях, только если у меня много дублирующих данных, например: лучшие практики?

Ура!

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Вы можете создать дополнительную таблицу с двумя столбцами

WORD_TABLE

  • [generate_id] INTEGER PRIMARY KEY
  • [word] TEXT
  • [ перевод] TEXT
  • [pos] TEXT
  • [example_sentence] TEXT
  • [example_translation] TEXT
  • [описание] TEXT
  • [ related_word_group_id] INTEGER FK_RELWORDGROUP_WORD
  • [related_image] BLOB

RELWORDGROUP_TABLE

  • [related_word_group_id] INTEGER ПЕРВИЧНЫЙ КЛЮЧ * 1029 например, "word_id1: word_id3: word_id5: ... et c")
0 голосов
/ 27 марта 2020

вам нужна таблица для отношения: m с двумя столбцами:

word_id related_word_id

вы можете связывать и обратно связывать ваши слова с помощью двух операторов вставки, которые также можно применять с помощью триггер

...