Импорт языка графовых баз данных , понимание
Графика (любезно предоставлено википедией) описывает ориентированный граф .
То есть граф, в котором все ребра взаимны ( как на рисунке выше ), и где свойства каждого ребра одинаковы независимо от направления ( в отличие от приведенного выше рисунка ).
Предположим, что Rails 3 по умолчанию настроен с использованием хранилища sql через ActiveRecord.
Двойная полиморфная ассоциация создаст ориентированный граф, способный моделировать данные, описанные на изображении выше.
def Edge < ActiveRecord::Base
belongs_to :head, polymorphic: true
belongs_to :tail, polymorphic: true
end
class Node < ActiveRecord::Base
has_many :from, as: :head
has_many :to, as: :tail
end
class Group < ActiveRecord::Base
# a Node of Type: Group
has_many :from, as: :head
has_many :to, as: :tail
end
Следует ли расширять эту модель для управления обратными отношениями, или доступна лучшая модель?
Одним из элементов приложения может быть проблема с графом, но это не означает, что приложение сосредоточено вокруг проблемы, это пересечение графа должен выполняться с данными, а также с тем, чтобы размер набора данных превышал доступную память.