저번 포스트인 노션의 핵심 데이터베이스 에서는 데이터베이스에 대해 전체적으로 훑어봤다.
어떤 기능이 있고, 어떻게 사용하는지 정도를 봤는데 아직 본격적으로 사용하기에는 무리가 있지 않을까하고 생각했다.
사실 기초적으로, 그저 데이터를 담기 위해 데이터베이스를 사용하는 거라면 속성에 대해 깊이 알 필요는 없다.
어쩌면 데이터베이스라는 것 자체도 그냥 보이는 대로 집어다가 사용하면 될 수 도 있다.
그런데 데이터베이스가 심화되고, 한 데이터베이스에 담는 내용들이 많아지면 조금 곤란한 상황이 발생할 수도 있다.
마치 코드처럼 어설픈 설계로 규모를 키우면 코드 전체가 꼬여버리는 것 처럼 말이다.
그래서 이번에는 직관적인 속성보다는 약간 추상적이고 복잡한 속성들에 대해 배워보겠다.
관계형
첫번째로 볼 속성은 관계형 속성이다.
관계형은 두 데이터베이스를 연결해주는 것으로 생각하시면 편하다.
특정 데이터베이스에 다른 데이터베이스의 아이템 자체를 연결하고 싶을때가 생길것이다.
캘린더에 회의록을 연결하고 싶다거나,
해당 문서와 연관된 문서라거나,
특정 페이지에 대한 기능 명세서를 작성했는데, 페이지 데이터베이스가 별도로 있어 둘을 연결하고 싶을 때가 있을 것이다.
그런데 페이지 링크를 속성으로 넣기에는 직관적이지도 않고, 매번 일일히 데이터베이스에 찾아가서 해야하는 번거로움이 생긴다.
그럴 때 관계형을 사용하여 둘을 연결할 수 있다. ▼
그런데 옵션 중에 B에 표시라는 옵션이 있는게 보일것이다.
이를 조금 쉽게 설명하면 아래와 같이 설명할 수 있다.
B에 표시 옵션을 키게 되면, A와 B가 서로 아는 상태가 된다.
이렇게 서로 알게되면 A와 B 양쪽에 속성으로 서로가 추가된다. ▼
그런데 B에 표시 옵션을 키지 않게 되면 A만 일방적으로 B를 알게 된다.
이렇게 되면 A에만 B에 대한 내용이 속성으로 추가되고, B에는 추가되지 않는다. ▼
반대로 B가 기본 데이터베이스가 되고, B에서 A를 일방적으로 알고 있다면, A에는 B의 아이템이 추가되지 않고 B에만 A의 아이템이 속성으로 추가된다. ▼
롤업
다음은 롤업 속성이다.
롤업의 기능을 한 문장으로 설명하자면, ‘관계형으로 연결된 데이터베이스의 속성을 가져오는 것’ 이다.
한 문장으로 설명한 것에 나와있듯, 롤업은 관계형에 기반한다. ▼
위의 예시를 다시 가져다 사용하면, 비둘기가 고라니에 대해 잘 알고 있다면(관계형으로 연결되어있다면) 고라니의 속성을 통째로 사용할 수 있는 것이다.▼
아래의 영상과 같이, A와 B 데이터베이스가 있고, A에 B가 관계형으로 연결이 되어있다면 A는 B의 속성인 태그를 사용할 수 있습니다.
지금은 B에 알파카 태그가 있고, A에서는 이를 가져와 사용했기에 원래라면 A에는 없을 알파카 태그를 사용할 수 있게 됩니다. ▼
조금 더 실용적인 예시를 들어보겠다.
멤버와 회의록과 같은 정보는 같은 데이터베이스에 들어가있으면 데이터 관리가 어려워지기 때문에 데이터베이스를 분할해서 만들곤 한다.
그러나 멤버와 회의록에서 의외로 같은 태그를 사용할 때가 많다.
예를 들면, 프론트엔드
와 백엔드
와 같은 팀 분류 태그다.
이렇게 팀 분류 태그의 수 2개정도로 적으면 따로 만들어도 되지만, 그 수가 많아지면 각 데이터베이스에 따로 만드는 것이 일이 된다.
그리고 어찌저찌 각 데이터베이스 별로 태그를 따로 만들었다고 해도, 태그 수정이 필요하게 되면 각 데이터베이스에 가서 일일히 수정을 해야하는 문제가 생긴다. ▼
이런 경우 태그만 관리하는 데이터베이스를 하나 만들고, 이를 롤업으로 공유하여 사용하면 편하다.
아래의 영상에서 사슴류와 사슴류2의 데이터베이스에서 같은 태그를 사용하고 있다.
여기서 태그 데이터베이스를 별도로 만들어 태그 정보만 넣은 후, 태그를 관계형으로 넣은 후 롤업을 통해 태그의 태그 속성만 가져오면 태그 데이터베이스만 수정해도 전체 데이터베이스의 태그가 자동으로 수정된다. ▼
한 눈에 보면 이런 구조가 되는 것이다. ▼
어떻게 보면 코드의 재사용, 모듈화를 해놓은 것과 같다.
데이터베이스도 이런식으로 모듈화를 해놓으면 사용하기 편리해진다.
수식
엑셀은 함수라는 기능을 제공한다.
저희가 직접 프로그래밍해서 사용하는 것은 아니고, 엑셀에서 제작한 함수들을 제공받아 사용한다.
간단한 함수부터, 고차원적인 함수까지 상당히 많은 부분들을 제공한다. ▼
갑자기 엑셀 이야기를 꺼낸 이유는 노션의 수식이란 기능이 엑셀에서 제공하는 함수와 상당히 유사하기 때문이다.
노션도 엑셀과 같이 기본적인 수식, 함수들을 제공하고 이를 사용자가 받아서 사용할 수 있다.
‘노션은 데이터베이스를 굉장히 밀어주고 있던데, 노션이 더 많은 걸 할 수 있겠죠?’
아쉽게도 노션은 엑셀의 함수를 따라가려면 멀었다.
엑셀에서 제공하는 함수의 종류는 무궁무진한데다가, 최근에 아나콘다를 연결하여 직접 파이썬 프로그래밍도 할 수 있게 되었기 때문이다. ▼
애초에 1980년대부터 무려 40년간 개발되어온 대규모 프로그램인 엑셀을 노션팀에서 뛰어넘기엔 시간이 많이 모자른다.
노션 팀에게 시간과 충분한 자본이 있다면 가능하다고 생각되지만, 아무래도 거대기업 마이크로소프트를 이기기엔 그 자본이 부족하다. ▼
그럼에도 노션으로 많은것을 할 수 있다.
엑셀에 비해 지원되는 항목이 적은 것 뿐이고, 사실 엑셀이 엄청나게 많은걸 지원하는거라 비교대상으로 두면 안될거 같다는 생각이다.
노션팀 화이팅이다. ▼
다시 본론으로 돌아와서, 노션에서 제공하는 수식은 보시면 아시겠지만 엄청나게 많다. ▼
그러나 여기에 있는 기능들이 전부라서 만약에 구현하고 싶은 기능이 있으면 이 기능들을 조합해서 사용해야한다.
노션은 아직 엑셀과는 다르게 사용자 코드를 지원하지 않기 때문이다.
그럼에도 노션에서 프로그래밍 언어에서 기본적으로 제공하는 요소들을 대부분 제공하기에 코드를 짜는 것과 같이 기능을 구현할 수 있다.
예시를 하나 보고 넘어가면, 노션에서는 prop(”속성이름”)
의 형태로 속성의 값을 받아올 수 있다.
아래와 같이 prop(”이름”)으로 작성하면 현재 선택된 아이템의 이름이라는 속성의 값을 가져오게 된다. ▼
아래는 1D1S의 노션페이지에 적용된 수식이다.
원하는 목표일수와 현재 스트릭 정보를 받아와 이를 텍스트 형태의 progress bar로 보여주게 된다. ▼
이렇게 수식을 잘만 사용하면 생각하는 대부분의 기능을 구현할 수 있다.
마치며
이번 포스트에서는 데이터베이스에서 사용하기 까다로운 3가지 속성에 대해서 봤다.
약간 수박 겉핥기 느낌으로 빠르게 본거 같은 감도 있다.
사실 이 3가지 속성은 어떻게 활용하냐에 따라 사용성이 천차만별인데, 각 활용에 대해 다루게 되면 끝이 없어지게 되어 어떤 속성이고 어떻게 사용하는지에 대해 알아보았다.
조금 더 자세한 설명에 대해서는 실습을 하며 보는게 좋을거 같아 실습 영상으로 찾아오겠다.
화이팅이다~
'NOTION' 카테고리의 다른 글
[노션 강의] 4. 노션의 핵심 데이터 베이스 (0) | 2024.03.08 |
---|---|
[노션강의] 3. 블록 소개 (0) | 2024.02.27 |
[노션 강의] 2. 노션의 기본 구조와 사용 (0) | 2024.02.23 |
[노션 강의] 1. 노션이란? (0) | 2024.02.21 |