sql >> Database >  >> NoSQL >> MongoDB

Hoe modelleer je een veel zelfreferentiële relatie met veel ouders?

In plaats van elke keer dat u alle afhankelijkheden voor een vaardigheid moet ophalen, door de boom te gaan (meer als een gerichte grafiek eigenlijk), kunt u de impliciete afhankelijkheden herhalen wanneer u een nieuwe afhankelijkheid aan een bepaalde vaardigheid toevoegt en deze opslaat in een tabel met de naam 'Afhankelijkheid' die een vaardigheid koppelt aan een afhankelijkheid en vice versa. Bijvoorbeeld (de relaties zouden beter geformuleerd kunnen worden):

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

U zou dan in staat moeten zijn om dingen te doen als:

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



  1. documentdb-back-up met behulp van de lambda-functie

  2. MongoDB - Een document maken

  3. Is er een manier om MongoDB-shell (of tojson-methode) in strikte JSON-modus uit te voeren?

  4. Aggregatie Verzamel innerlijke objecten