Notion
의 DB
는 JOIN
이 안된다. 같은 목적의 DB
인데 type
에 맞게 다른 속성을 저장하고 싶으면 어떤 방법이 있을까?
사례로 일기
를 저장하는 DB
가 있고 하루하루 체크하고 싶은 것이 있다고 가정해보자.
2월 동안은 미라클 모닝
을 진행하고 있어 얼마나 성공했는지 기록하고 싶다. DB
스키마는 아래와 같을 것이다.
속성 | 타입 |
---|---|
제목 | 텍스트 |
날짜 | 날짜 |
미라클 모닝 성공 여부 | 체크박스 |
3월에는 다이어트
를 하고 있다. 목표 식단을 얼마나 달성했는지 보고 싶다. 이전 미라클 모닝
과 동일한 스키마인데 식단 여부
속성만 달라지는 데이터가 생긴다.
또다시 식단 성공 여부
를 저장하는 DB
를 만들기엔 관리 비용도 높고 날짜를 합쳐서 볼 방법이 없다. (Notion Calender
가 있다고 해도 무한대로 등록해서 볼 수 없음)
JOIN
이 가능하다면 손쉽게 해결될 수 있지만 아쉽게 Notion
에선 지원하지 않는다. 이에 대한 나만의 해결 방법을 공유한다.
해결 방법
단순하다. 하나의 DB
에 prefix
를 붙여서 속성을 구분하는 것이다.
나의 경우 DB
마다 다르지만 그룹핑 > 내용
(e.g. 운동 > 러닝) 의 형태로 구분하고 있다.
Insight
이렇게 운영하며 느낀 Insight
는 아래와 같다.
일반 필터에서는
다중 선택
이OR
로 동작하기에AND
조건을 보고 싶으면고급 필터
사용일반 필터
는OR
조건임고급 필터
에서AND
조건 만들 수 있음AND
필터가 많아서 불편하면 사진과 같이 여러 개 만들고 선택 안 해놓으면 됨 그럼 사진 기준으로A > 2
,A > 3
둘 다 있는 것만 선택됨다중 선택
에서>
에 따른 데이터 구분은다중 선택
정렬
혹은검색
을 통해 달성할 수 있음- 첫 번째 텍스트가 같은 것은 정렬되어서 보일 것이기 때문
추가, 삭제, 이름 변경은 큰 문제 없음
다중 선택
에서 일부분의 값 변경 시 테크닉CSV
로 추출 후다중 선택
속성을 변경 후CSV 머지
하면 해당 부분만 바뀌지 않을까 했지만CSV
에 정의된 데이터가 또 생성되면서 중복 데이터 발생해서 안 됨버튼
을 이용해서다중 선택
의 일부분 값추가
,제거
가능여기서
토글
은 기존에 값이 있으면 제거하고 없으면 추가하는 동작임
동적 필드
보기가 어려우면 동적 필드 목적에 맞는보기
를 만들어서 달성 가능동적 필드
의 일부분만 다른 DB으로 뽑고 싶으면깡통 DB
로 이동 시 선택된 값만이 아닌속성 통체
로복사
된다.- 깡통 DB에 부어넣어서 달성할 수 있는데 아쉽게도
다중 선택
에서 선택된 값만 이동되는 것은 아니고다중 선택
속성이 통체로 복사됩니다. - 즉,
다중 선택
에A
,B
,C
,D
가 정의되어 있고 이동하려는 페이지는A
,B
만 선택되어 있더라도 옮기기 시다중 선택
의A
,B
,C
,D
값이 모두 이동됩니다.
- 깡통 DB에 부어넣어서 달성할 수 있는데 아쉽게도
A DB
의 페이지를B DB
로옮기기
시B DB
에 없는 이름의 속성만 추가됨A DB
→B DB
로 이동 시B DB
에A DB
와 동일한 이름의 속성이 있으면B DB
에 정의된 한정해서 표시됨 그렇기에A DB
에 있는 값이 옮겨졌다는 이유로B DB
에 추가되지는 않음- 즉,
이전 DB
에서A
,B
,C
를 정의 및 선택하고이동하려는 DB
에A
,B
만 정의되어 있다면 옮기기 후A
,B
만 보일 것입니다.
속성 데이터가 지저분하면
CSV
로 뽑아서 가공해서 보는 방법이 있음- 헷갈리면 안 되는 것이
CSV
는데이터 스키마
에 해당하는 껍데기이므로 가공 후import
하더라도 페이지에는 내용이 없음으로CSV
로 가공 후 모든 것을 할 수 있다는 생각은 주의하기
- 헷갈리면 안 되는 것이
속성이 너무 많아진다 싶으면
보기
별로export
해서아카이브 처리
하는 방법도 있을 것
마치며
이런 고민을 통해 데이터 설계, 관리 방법에 대해 생각할 수 있었다.
단순한 해결 방법 중 하나지만 누군가는 Notion
을 사용하며 나와 같은 고민을 했을 수 있다.
이번 글을 통하여 해당 방법으로 해결하여 실제 사용 중인 사람이 있구나 공유되기를 바란다.