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 을 사용하며 나와 같은 고민을 했을 수 있다.
이번 글을 통하여 해당 방법으로 해결하여 실제 사용 중인 사람이 있구나 공유되기를 바란다.