Иерархическая структура базы данных - PullRequest
0 голосов
/ 27 апреля 2018

Я разрабатываю базу данных для местного языка, которая позволяет пользователю искать слова рифмы. Система, которую я пытаюсь развить, будет искать не только слова-рифмы, но и слова-рифмы каждого из элементов поиска. Это может перейти на уровень n. Чтобы упростить, вот пример:

Если я найду слово «изучение», базовый результат будет похож на кровавый, приятель, но тогда я также хочу поискать каждый из этих наборов результатов, чтобы включить рифмованные слова каждого из них. Другими словами я хочу получить список друзей друзей друзей друзей .... до n-го уровня.

Я знаю, что могу получить это с помощью рекурсивного запроса, но когда база данных будет расти, этот запрос будет очень медленно отвечать.

Кто-нибудь может предложить какую-нибудь хорошую структуру таблицы базы данных, которая поможет мне здесь.

Привет

1 Ответ

0 голосов
/ 27 апреля 2018

Возможно, я бы посмотрел на создание типа «справочной» таблицы со всеми возможными вариациями рифмы, используя фонетическое представление звука в качестве вашего ключа - это должно быть разумным управляемым размером, например, в вашем примере у вас будет представление звука "udy" в вашем поиске рифмы. Давайте назовем эту таблицу "фонетической"

Во второй таблице есть все слова, которые вы хотите проанализировать или найти, давайте назовем эту таблицу "словом"

В третьей таблице вы создаете отображение между словом и одной или несколькими записями в «фонетическом», давайте назовем это «рифма»

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...