awesome_nested_set의 삽입 구조를 사용한 DB 설계
중첩 집합 모형이란 무엇입니까
내포된 집합 모델은 주로 데이터베이스에서 내포된 것처럼 분류 등이 있는 아버지, 아들, 손자를 묶을 때 자주 사용하는 저장 방법을 가리킨다.
예를 들어 프로그램에서 분류된 정보를 처리하려고 할 때.
남성 카테고리(부모)에는 상의(아이)와 시계(아이), 상의에는 테라드(손자)가 있다.
도해를 해봤어요.
방금 전의 예를 도해해 보아라.
어떻게 데이터베이스에서 처리합니까
데이터베이스에 이 표를 표현하기 위해 오른쪽과 왼쪽의 번호를 이용한다.
방금 그림에 번호를 표시하였다.
이 번호를 사용하면 어디서부터 어디까지의 분류를 명시함으로써 데이터베이스에서의 처리를 가능하게 한다.
중첩 집합 모델에서 "lft""rgt"열에 왼쪽과 오른쪽의 번호를 저장합니다.
그림으로 말하다
.남자는'lft'→1,'rgt'→9.상의는'lft'→2,'rgt'→6이다
문서 레지스트리에 항목을 추가합니다
사용 설명
이번에github가 쓴 바와 같이category 모형을 제작하여 미니 응용 프로그램을 만들어 보았습니다.
마이그레이션 ID_create_categories.rb
class CreateCategories < ActiveRecord::Migration[5.2]
def self.up
create_table :categories do |t|
t.string :name
t.integer :parent_id, :null => true, :index => true
t.integer :lft, :null => false, :index => true
t.integer :rgt, :null => false, :index => true
t.integer :depth, :null => false, :default => 0
t.integer :children_count, :null => false, :default => 0
t.timestamps
end
end
def self.down
drop_table :categories
end
end
[필수 열]- parent_id
- 하위 노드가 상위 노드의 id인지 나타냅니다.가장 큰 부모의 경우에는 비어 있다.
- lft
- 이름별로 카테고리 왼쪽의 값을 입력합니다.
- rgt
- 이름처럼 여기에도 카테고리 오른쪽의 수치가 추가됩니다.
[옵션 열]
- depth
- children_count
model
category.rb
class Category < ApplicationRecord
acts_as_nested_set
end
참고 기사Rails에서 awesome_nested_집합을 사용하여 계층 구조 만들기
https://ruby-rails.hatenadiary.com/entry/20150216/1424092796
Reference
이 문제에 관하여(awesome_nested_set의 삽입 구조를 사용한 DB 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/katsu105/items/e83508e7110ec2a69e9d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)