MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để mô hình hóa một mối quan hệ tự quy chiếu với nhiều bậc cha mẹ?

Thay vì lặp qua cây (thực sự giống như một biểu đồ có hướng) mỗi khi bạn cần truy xuất tất cả các phụ thuộc cho một kỹ năng, bạn có thể chỉ cần lặp qua các phụ thuộc ngụ ý khi thêm một phụ thuộc mới vào một kỹ năng cụ thể và lưu chúng vào một bảng có tên 'Sự phụ thuộc' ánh xạ một kỹ năng đến một sự phụ thuộc và ngược lại. Ví dụ:các quan hệ có thể được diễn đạt tốt hơn):

class Skill
    has_many :dependers, class_name: 'Dependency', foreign_key: :dependee_id
    has_many :dependees, class_name: 'Dependency', foreign_key: :depender_id

    has_many :dependencies, through: :dependees
    has_many :depending, through: :dependers

    def add_dependency(skill)
        recurse_dependencies(skill)
    end

    def recurse_dependencies(skill)
        # perform this check to avoid circular and duplicate dependencies
        if !depender_ids.include?(skill.id) && !dependee_ids.include?(skill.id)
            dependee_ids << skill.id
        end

        skill.dependencies.each do |dependency|
            recurse_dependencies(dependency)
        end
    end
end

class Dependency
    belongs_to :dependee
    belongs_to :depender
end

Sau đó, bạn sẽ có thể làm những việc như:

@front_end_development.dependencies
@front_end_development.depending
@front_end_development.add_dependency(@html)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lỗi:Route.post () yêu cầu hàm gọi lại nhưng có [đối tượng không xác định]

  2. Nâng cấp nhanh hoặc hàng loạt trong pymongo

  3. Lỗi Mongoose Promise

  4. MongoDB $ toObjectId

  5. Cách lưu trữ thông tin không gian địa lý trong mongoDB