Импортировать язык графические базы данных, понять
- узлы (представлены кружками),
- ребра (представлены стрелками) и
- свойства (метаданные узлов/ребер)
Графика (любезно предоставлена википедией) описывает ориентированный график.
Какой лучший способ смоделировать неориентированный график в Rails?
То есть, график, где все ребра являются взаимными (как в приведенном выше графике), и где свойства каждого ребра одинаковы независимо от направления (в отличие от выше графика).
Предположим, что установка 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
Следует ли расширить эту модель для управления обратными связями или доступной лучшей модели?
Один элемент приложения может представлять собой проблему с графом, но это не значит, что приложение сосредоточено вокруг проблемы, что трансверсалы графа должны выполняться на данных или что набор данных больше доступной памяти.