노션 rollup 속성의 제한점 극복: Formula 2.0으로 2단계 이상 건너뛴 관계형 데이터 참조
노션의 관계형 데이터와 롤업 속성 이해하기
노션은 데이터베이스를 연결하고 정보를 구조화하는 데 매우 강력한 도구입니다. 특히 관계형(Relation) 속성과 롤업(Rollup) 속성을 활용하면 여러 데이터베이스에 흩어진 정보를 하나로 모아 볼 수 있습니다. 하지만 노션의 표준 롤업 기능에는 한 가지 치명적인 제약이 있습니다. 바로 ‘직접 연결된 데이터베이스’의 정보만 가져올 수 있다는 점입니다.
예를 들어 [프로젝트] 데이터베이스가 [작업] 데이터베이스와 연결되어 있고, [작업] 데이터베이스가 다시 [담당자] 데이터베이스와 연결되어 있다고 가정해 봅시다. 이때 [프로젝트] 데이터베이스에서 [작업]에 할당된 [담당자] 정보를 바로 확인하려고 하면 기본 롤업 기능으로는 불가능합니다. [프로젝트]는 [작업]까지는 볼 수 있지만, 그 너머의 [담당자]는 직접 연결되지 않았기 때문입니다. 바로 이 지점에서 노션의 새로운 데이터 처리 엔진인 Formula 2.0이 등장합니다.
Formula 2.0으로 2단계 이상 건너뛴 데이터 가져오기
과거의 노션 수식은 텍스트나 숫자 계산에 국한되었지만, Formula 2.0은 데이터베이스 객체를 직접 다룰 수 있게 진화했습니다. 이제는 롤업을 여러 번 거치지 않고도 수식 하나로 관계를 타고 넘어가 데이터를 추출할 수 있습니다. 이를 통해 데이터베이스 구조를 훨씬 간결하고 효율적으로 유지할 수 있게 되었습니다.
핵심은 map() 함수와 dot(.) 연산자를 활용하는 것입니다. 2단계 건너뛴 데이터를 가져오는 논리는 다음과 같습니다.
- 관계형 속성을 통해 연결된 데이터(작업)를 배열로 가져옵니다.
- map() 함수를 사용하여 각 작업 항목에 접근합니다.
- 각 작업 항목에서 다시 연결된 속성(담당자)을 점(.)으로 호출합니다.
- 이름이나 속성 값을 추출하여 보기 좋게 정리합니다.
예를 들어, [프로젝트] 데이터베이스에 있는 ‘작업’이라는 관계형 속성을 통해 ‘담당자’를 불러오는 수식은 다음과 같습니다.
prop(“작업”).map(current.prop(“담당자”))
이 수식을 사용하면 [작업]이라는 데이터베이스를 거쳐 그 안에 있는 [담당자]들의 목록을 [프로젝트] 데이터베이스에서 즉시 확인할 수 있습니다.
실생활 활용 시나리오
이 기능은 특히 복잡한 프로젝트 관리나 CRM 시스템에서 빛을 발합니다. 다음은 대표적인 활용 사례입니다.
1. 프로젝트 단위의 자원 관리
여러 프로젝트를 관리하는 팀장이라면 프로젝트별로 투입된 인력의 총 급여나 연락처를 한눈에 보고 싶을 것입니다. 프로젝트 – 작업 – 담당자(직원)로 이어지는 관계에서, 프로젝트 데이터베이스에 수식을 작성해 각 담당자의 이메일이나 직급을 롤업 없이도 바로 출력할 수 있습니다.
2. 고객 관리 데이터베이스의 자동화
고객 – 상담 내역 – 상담원 구조를 가질 때, 특정 고객이 과거에 어떤 상담원들과 대화했는지 상담원 데이터베이스에 직접 연결하지 않아도 상담 내역 데이터베이스를 거쳐 상담원 이름을 자동으로 가져와 고객 페이지에 표시할 수 있습니다.
3. 학습 관리 시스템
커리큘럼 – 강의 – 수강생 구조에서, 특정 커리큘럼에 등록된 모든 수강생의 이름을 강의 데이터베이스를 경유하여 커리큘럼 페이지에서 바로 리스트업할 수 있습니다.
흔한 오해와 사실 관계
많은 사용자가 롤업을 여러 번 만들어야 한다고 생각하지만, 이는 사실이 아닙니다. 롤업을 중첩해서 만드는 것은 데이터베이스를 매우 무겁게 만들고 관리하기 어렵게 합니다. Formula 2.0을 사용하면 롤업 속성을 최소화할 수 있습니다.
- 오해: 수식이 복잡하면 노션이 느려진다.
- 사실: 과도한 롤업 속성보다 Formula 2.0을 통한 직접 접근이 시스템 자원 소모가 적고 데이터 업데이트 속도가 빠릅니다.
- 오해: 수식은 수정하기 어렵다.
- 사실: 롤업 속성 여러 개를 유지하는 것보다 하나의 수식 속성을 관리하는 것이 훨씬 유지보수가 쉽습니다.
전문가가 제안하는 데이터 구조화 팁
데이터베이스를 설계할 때 가장 중요한 것은 ‘최소한의 관계’입니다. 너무 많은 데이터베이스를 복잡하게 연결하면 나중에 데이터 흐름을 파악하기 어렵습니다. 2단계 이상 건너뛴 데이터를 가져올 때는 반드시 다음의 과정을 거치세요.
- 데이터 정규화: 각 데이터베이스가 고유한 목적을 가지고 있는지 확인하세요.
- 관계형 속성 이름 명명: 속성 이름을 ‘작업들’, ‘담당자들’처럼 복수형으로 명확히 지정하면 수식 작성 시 혼동을 줄일 수 있습니다.
- 결과값 필터링: map() 함수를 사용할 때 filter() 함수를 병행하면 특정 조건을 만족하는 데이터만 추출할 수 있어 결과가 훨씬 깔끔해집니다.
예를 들어, 완료된 작업의 담당자만 보고 싶다면 다음과 같이 작성할 수 있습니다.
prop(“작업”).filter(current.prop(“상태”) == “완료”).map(current.prop(“담당자”))
자주 묻는 질문과 답변
Q: 수식 결과가 배열로 나오는데 텍스트로 바꾸려면 어떻게 하나요?
A: 결과값이 배열([A, B, C]) 형태로 출력된다면 .join() 함수를 사용하세요. 예를 들어 .join(“, “)을 붙이면 쉼표로 구분된 텍스트로 깔끔하게 변환됩니다.
Q: 관계형 데이터가 비어있을 때는 어떻게 처리하나요?
A: empty() 함수를 사용하여 관계형 속성이 비어있는지 확인하고, if() 문을 통해 빈 경우 “데이터 없음” 혹은 공백(“”)으로 표시되도록 설정할 수 있습니다.
Q: 3단계 이상 건너뛰는 것도 가능한가요?
A: 네, 가능합니다. .map(current.prop(“속성명”).map(current.prop(“다음 속성명”)))과 같은 방식으로 중첩하여 데이터를 타고 들어갈 수 있습니다. 다만 너무 깊은 단계는 데이터베이스의 가독성을 해칠 수 있으므로 2~3단계 정도로 제한하는 것을 권장합니다.
비용 효율적이고 스마트한 활용 전략
노션의 유료 플랜을 사용 중이라면 데이터베이스의 용량이나 관계형 속성 개수에 제한이 없지만, 무료 사용자라면 관계형 속성을 남발하는 것이 부담스러울 수 있습니다. Formula 2.0을 활용하여 롤업 속성을 수식 하나로 대체하면 데이터베이스의 속성을 줄일 수 있어 전체적인 시스템 효율이 크게 향상됩니다.
또한, 많은 사용자가 수식을 작성할 때 오류가 나면 포기하곤 합니다. 처음에는 작은 데이터베이스 두 개를 연결하여 1단계 데이터를 가져오는 것부터 시작해 보세요. 그다음 2단계로 확장하는 연습을 하면 노션 데이터베이스의 구조를 이해하는 데 큰 도움이 됩니다. 데이터는 단순히 쌓아두는 것이 아니라, 필요할 때 원하는 형태로 가공해서 보여주는 것이 진정한 노션 활용의 핵심입니다.
이제 여러분의 노션 워크스페이스에서 롤업의 한계를 넘어 더 깊고 풍부한 데이터를 연결해 보시기 바랍니다. 이 기능 하나만 제대로 익혀도 노션 데이터베이스를 다루는 수준이 한 단계 도약할 것입니다.
댓글 0
첫 댓글을 남겨보세요.