1. RDB이란?
버블의 데이터베이스는 RDB으로 작동합니다. RDB이란 Relational Database의 약자로, 관계형 데이터 모델에 기반하는 데이터베이스를 뜻합니다. 사실 이렇게 말해도 비개발자라면 “관계형”의 의미를 잘 모를 수 있습니다. 가볍게 관계형 데이터베이스의 개념을 알아봅시다.
관계형 DB… 그게 뭐죠…?
예시를 통해 관계형 데이터베이스를 알아봅시다. 상품 주문을 접수하는 서비스가 있다고 합시다. 해당 서비스를 위해선 주문 데이터를 저장하는 주문 테이블이 존재해야 합니다. 테이블에는 언제 구매를 했고, 결제 금액은 얼마이며, 어떤 사람이 주문을 했는지를 저장해야 합니다. 대략 아래와 같은 모습입니다.
근데 앞선 이미지를 보면, 3개의 레코드가 존재하고, 모두 버블박스라는 유저가 주문한 걸 알 수 있습니다. 즉, 버블박스라는 사람이 3번의 주문을 한 걸 알 수 있습니다. 여기서 보면 버블박스 유저의 이름, 전화번호, 이메일 값이 주문 테이블에서 중복되게 존재합니다. 만약 해당 유저가 주문을 100번 했다면, 똑같은 데이터가 100번 저장이 되는 셈입니다.
중복되게 저장되는 유저의 이름, 전화번호와 이메일은 아래처럼 유저 테이블에 이미 존재합니다.
주문 테이블에 중복을 막으려면, 주문 테이블에 유저 데이터를 저장하지 않고, 유저 테이블의 해당 유저 데이터를 연결시켜주면됩니다. 이렇게 서로 다른 테이블을 이어서 관리하는 데이터베이스를 관계형 데이터베이스라고 합니다. “관계”라고 불리는 이유는 서로 다른 테이블이 관계를 맺고 있다고 말하기 때문입니다.
앞선 이미지를 관계형 데이터베이스에서는 아래처럼 보여집니다. 보면 유저에 대한 정보를 유저 테이블과 연결시켜서 확인합니다. 주문 테이블에는 유저 Id 필드가 존재하며, 해당 필드에는 유저 테이블의 Id 값이 저장됩니다. 만약 주문 유저를 확인하고 싶다면, 주문 테이블에서 유저 Id를 확인합니다. 그리고 해당 Id 값을 지닌 유저 값을 유저테이블에서 찾는 방식입니다. 이렇게 다른 테이블에 존재하는 레코드의 id 값을 저장해서 테이블 간 연결성을 보여주는 필드를 관계형 필드라고 부릅니다.
2. 버블에서 다른 테이블의 관계를 맺는 법
버블에서 테이블에 특정 필드를 추가할 때, 해당 필드의 데이터 타입을 선택합니다. 이때, [DATA TYPES] 카테고리에는 현재 버블에 존재하는 테이블을 보여줍니다.
이를 선택하면, 해당 테이블의 데이터를 저장하는 필드가 생성됩니다. 이미 눈치 챘듯이, RDB의 관계형 필드가 생성된 것입니다.
이렇게 생성한 관계형 필드에 저장되는 값을 확인해보면, 다른 테이블에 존재하는 unique Id 값이 저장된 걸 볼 수 있습니다.
3. id 값이 너무 복잡해요…
버블에서 데이터를 직접 조회 및 수정할 때, 관계형 필드가 답답하게 느껴질 수 있습니다. 앞서 봤듯이, 관계형 필드는 연결된 테이블의 id 값을 저장합니다. 다만, Id 값이 너무 길고 복잡한 숫자로 이어져있습니다.
그래서 현재 레코드가 다른 테이블의 어떤 레코드와 이어져 있는지 쉽게 파악할 수 없습니다. 데이터베이스를 구성하는 테이블이 많고, 관계형 필드가 많아질수록 더 복잡해집니다…
4. Primary field 사용하기
버블에선 놀랍게도 레코드의 연결을 확인할 때, id 값이 아니라 다른 값을 보여줄 수 있습니다. 다음 이미지를 보면 앞선 이미지와 다르게, 유저의 이름을 확인해 파악하는 걸 볼 수 있습니다. 이는 Primray field를 변경했기 때문입니다.
버블 데이터베이스에 저장된 데이터를 보여주는 [App data] 탭에서 [Primary fields]를 클릭합니다.
그러면 관계형 필드에서 보여지는 값을 연결된 테이블의 id 필드 값이 아니라, 다른 필드 값으로 선택할 수 있습니다. 다음 이미지를 보면 User 테이블 필드를 사용할 때, 보여지는 필드 값을 택하고 있습니다.
위 선택지에서 [name]로 선택한다면, 다음처럼 관계형 필드에 [name] 필드 값이 보여집니다.
반대로 [email]을 선택한다면, 다음처럼 관계형 필드에 [email] 필드 값이 보여집니다.
참고로 Primary field는 [App data]에서 보여지는 필드 값을 설정하는 것 뿐입니다. 실제로 DB에서 저장되거나, Dynamic expression으로 사용하는 필드 값은 unique id 값입니다. 즉, Primray field는 [App data]에서 서로 다른 테이블 간의 데이터를 더 쉽게 조회하기 위한 설정이라고 생각하면 됩니다.
Primary field는 DB 관리를 더 쉽게 하기 위해 보여주는 필드일 뿐, 서비스에서 실제로 사용하는 필드 값이 아닙니다.
버블박스가 버블을 주제로 책을 발행할 예정입니다. 출간 알림을 등록하면 추후에 안내 드릴게요!
+ 알림 신청자 중 일부에게 책을 무료로 드릴 예정입니다.
필요한 플러그인이 있다면, 버블박스에게 요청해주세요
햇갈리거나 잘 모르는 이론 및 개념이 있다면 아래에 남겨주세요.
버블 크레딧으로 더 저렴하게 시작하기
버블박스 l BubbleBox