Структура базы данных SQL - PullRequest
       10

Структура базы данных SQL

6 голосов
/ 26 февраля 2010

У меня есть список синонимов, и мне нужно создать базу данных на SQL.

Я думал об использовании реляционной базы данных, но не знаю, будет ли она лучше. В этой базе данных будет достаточно трафика.

Я думал о Таблице 1 как

Id

Table2
Id
InterlinkID (Table1 Id)
Word

Это был бы лучший способ? Там может быть от 1 до 20+ связанных слов. Еще одна проблема, которую я вижу из этой настройки: если у меня есть 1 слово, которое работает как синоним для нескольких слов

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


    Table 1
    Id 1 
    Id 2

    Table 2
    Id 1
    InterlinkID 1
    Word One
    Id 2
    InterlinkID 1
    Word 1
    Id 3
    InterlinkID 1
    Word First
    Id 4
    InterlinkID 2
    Word Two
    Id 5
    InterlinkID 2
    Word 2
    Id 6
    InterlinkID 2
    Word Second

1 Ответ

6 голосов
/ 26 февраля 2010

Самый минимальный способ моделирования отношений - это отдельная таблица с тремя столбцами:

  • id - первичный ключ, целое число
  • word - уникальное слово, должно иметь уникальное ограничение для остановки дубликатов
  • parent_id - обнуляется

Используйте parent_id для сохранения номера идентификатора слова, с которым вы хотите связать текущее слово. IE:

id  |  word  |  parent_id
---------------------------
1   | abc    |  NULL
2   | def    |  1

... показывает, что abc был добавлен первым, а def является его синонимом.

Более очевидным и гибким средством моделирования отношений было бы использование двух таблиц:

  1. WORDS

    • id, первичный ключ
    • wordvalue
  2. SYNONYMS

    • word_id
    • synonym_id

Оба столбца в таблице SYNONYMS будут первичными ключами, чтобы избежать дублирования. Однако это не остановит дубликаты в обратном порядке. Но это позволит вам отобразить многочисленные комбинации, чтобы иметь отношение «паутина» между словами, в то время как единый формат таблицы будет поддерживать только иерархические отношения.

...