서비스 설계할 때 가장 처음에 만들었던 테이블들은 user, device였다. 타이핑의 압박감으로 철자를 줄여서 user -> usr, device -> dvc 등으로 사용하곤 하였다. 사용자와 단말의 관계는 기획자와 개발자의 반복된 회의 도중에 도출되는 경우가 많다. 회의 내용을 엿들어보자.
- 우리 서비스는 가입자가 1억은 될 거예요.
- 요즘 사용자 1명이 여러 단말을 가지는 경우는 흔하잖아요. 스마트폰, 태블릿, PC, TV, ... 그래서 multi-device 지원이 반드시 고려되어야 해요.
- 반대의 경우도 있어요. 예를 들어 태블릿의 경우 한 가족 구성이 공용으로 사용하잖아요. 그리고 소규모 머천트에서도 직원들끼리 공유하는 경우가 많아요. 그래서 1 단말 당 복수 유저의 경우가 고려되어야 해요.
그래서 사용자:단말은 M:N 관계가 되고 데이터베이스에 표현하려면 각각 1:N 관계인 usr, usr-dvc, dvc 테이블들을 만들게 된다.
개념적 모델에서는 user:device=M:N의 관계이고, 사용자는 반드시 단말을 갖고 있고, 단말은 반드시 소유자가 있다고 가정한다.
M:N 관계는 개념상 존재하는 엔터티 사이의 관계이고 실제 물리적인 DB에 표현하려면, usr, dvc 테이블 사이에 관계테이블 usr_dvc을 새로 추가해서 1:N,M:1이 되도록 만들어야 한다. 이렇게 되면 usr는 하나 또는 복수의 usr_dvc를 가지게 되고 반대로 usr_dvc는 단 하나의 usr만 가지게 된다.
Top comments (0)