моделирование графа онтологий в SQL: проблема двух отцов - PullRequest
3 голосов
/ 22 февраля 2011

Я моделирую онтологию в SQL, используя дерево для обозначения отношений между понятиями.Моя проблема состоит в том, как устранить неоднозначность понятий в графе / дереве без репликации понятий.

Например.У меня есть концепция курсов: «каратэ», «парусный спорт» (уроки, которые можно взять у инструкторов) и места: «тренажерный зал», «лодочный клуб», где можно пройти эти курсы.На графике это будет:

<strong>gym</strong> <strong>boat club</strong> <br/> has has<br> <strong>courses</strong><br> of of<br> <strong>karate</strong> <strong>sailing</strong>

Как я могу смоделировать этот график, чтобы избежать в лодочном клубе курсов каратэ и без дублирования концепции курсов?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Я бы перевернул всю архитектуру данных и подумал бы об этом как о графике.Иметь таблицу для всех понятий (узлов) - тренажерный зал, лодочный клуб, курсы, каратэ, парусный спорт - и другую таблицу для создания связей (вершин) между ними.Эта таблица выглядит примерно так:

Links
  from (concept foreign key)
  to (concept foreign key)
  link_type (has/of/etc)

Для создания всей вашей информации в памяти может потребоваться намного больше SQL, но эта схема будет обрабатывать эти отношения просто.

0 голосов
/ 22 февраля 2011

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

...