안녕하세요..
새로운 프로젝트 진행 중에 디비 설계를 해야 하는데요.
데이터 구조가 대충 이렇습니다.
-------------------------------------------------------------------------------
회사 / 부서 / 팀장 / 사원
회사 필요 컬럼 : 고유코드, 이름, 전화번호
부서 필요 컬럼 : 고유코드, 이름, 전화번호, 상위 회사코드
팀장 필요 컬럼 : 고유코드, 이름, 전화번호, 상위 회사코드, 상위 부서코드
사원 필요 컬럼 : 고유코드, 이름, 전화번호, 상위 회사코드, 상위 부서코드, 상위 팀장 코드
--------------------------------------------------------------------------------------------------------------------------
이런 형태입니다.
원래 생각했던 테이블은
-------------------------------------------------------------------------
회사 테이블 : 고유코드, 이름, 전화번호
부서 테이블 : 고유코드, 이름, 전화번호, 상위 회사 코드
팀장 테이블 : 고유코드, 이름, 전화번호, 상위 회사코드, 상위 팀장 코드
사원 테이블 : 고유코드, 이름, 전화번호, 상위 회사코드, 상위 팀장코드
유저 테이블 : 고유코드, pass, 회원 구분(여기에 로긴사용자가 회사냐 부서냐 사원이냐 유저냐 구분), relation_idx(회사면 회사테이블 코드, 부서면 부서테이블 코드 등등),
---------------------------------------------------------------------------------------------------
이렇게 나눴습니다만 하나로 그냥 합칠까 생각중입니다.
-------------------------------------------------------------------------------------
하나의 사용자 테이블에
고유코드, 이름, 전화번호, 상위 회사코드, 상위 팀장코드, 상위 사원코드, id, pass로 놔두고 그냥 이거 하나로 쓸까 생각중인데요.
사원 입장에서는 사용자 테이블의 모든 컬럼(상위 회사/부서/팀장코드)를 다 쓰지만
회사 회원일 경우는 상위 회사코드/부서/팀장 컬럼은 필요하지 않아서 영원히 안 쓰게 됩니다.
각 회원별 테이블로 나눈다면 로그인 체크 후 로그인한 level을 찾아서 level에 따라 1이면 회사테이블로 가서 relation_idx를 가지고 회사정보를 가져오고
2면 부서 테이블로 가서 relation_idx를 가지고 부서정보를 가져오고 식입니다.
하나의 테이블로 합칠 경우 편리함이 더 많을 거 같긴 한데요. 그런데 바로 이렇게 안하는 이유는 지금은 생각치 못하는 다른 문제가 생길지 몰라서..
혹시 이와 비슷한 경우에 어떻게 고수분들은 쓰시는지 궁금합니다.
이런 경우는 흔할 거 같아서..
보통 유저별로 나누나요? 그렇다면 유저 테이블에 회원 구분 컬럼(level)과 해당 테이블의 고유 릴레이선 코드(회사면 회사코드, 부서면 부서코드 등등)의 두 필드는 필수로 있어야 할거 같은데. 그런가요?
고견 좀 부탁 드려요.. 몇일 째 고민 중이라 이젠 결정을 해야 할 거 같습니다.
|