개발자

[DB테이블 설계] 권한 테이블 설계 시, 여러분은 어떤 방법을 사용하시나요?

2023년 09월 22일조회 1,139

안녕하세요 간단한 DB 테이블을 설계하던 도중, 나는 이렇게 권한 테이블을 만들면 좋을 것 같은데, 다른 개발자 분 들은 어떤 방향성으로 나아가실지 궁금해 글을 올리게 되었습니다. [주제] 1. 관리자는 사용자 그룹이 사용할 권한을 "범주" 및 "범주에 속한 각 세부 권한" 을 부여를 할 수 있다. 이때, 예시는 아래와 같습니다. 범주? 각 세부 권한이 모여 있는 상위 개념의 의미 범주에 속한 각 세부 권한? 범주 안에 나눠져 있는 세부적인 권한을 의미 이때, 범주는 A,B,C,D,E / 범주에 속한 각 세부 권한 A-1,A-2 || B-1,B-2 등등 2. 범주로 부여 시, 각 세부 권한은 설정 불가 3. 세부 권한 설정 시, 범주로 권한 부여 불가 저의 생각은 아래와 같습니다. (1안) A테이블 - 범주 B테이블 - 범주에 속한 각 세부 권한 두 개의 테이블을 만들고, 컬럼 구성은 A테이블 [사용자 그룹, 범주(코드로 들어감), 권한 부여 ID, 권한 부여 시각] B테이블 [사용자 그룹, 각 세부 권한(코드로 들어감), 권한 부여 ID, 권한 부여 시각] (2안) A테이블 - 부여된 권한을 저장할 테이블 A테이블 [사용자 그룹, 범주 및 각 세부권한, 권한 부여 ID, 권한 부여 타입, 권한 부여 시각] * 권한 부여 타입이란? 범주인지 범주에 속한 각 세부 권한을 부여할지 [예시] C0 : 범주 C1 : 세부 권한 이때, 데이터 관리는 정규화를 고려할 예정입니다. 귀한 시간 내주셔서 감사합니다. 또한 비슷한 경험이 있으면 이야기를 나누는 시간이 되었으면 좋겠습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

joseph님의 프로필 사진

저라면 "범주 - 세부권한"을 추상화해서 권한 level 개념을 정의할 것 같아요 테이블로 예를 들면, pk 사용자 그룹 id 권한 level 권한 code 등록자 id 등록 일시 범주는 권한 level = 1 이고 세부권한은 level = 2 같은 식으로요 보통 권한 관련 기능은 이력 관리가 필요한 케이스가 많으니 이런 필드를 추가할 수도 있구요 권한 삭제 여부 권한 삭제자 id 권한 삭제 일시 더 구체적인 논의는 다른 요구사항하고 맞물려 돌아갈테니 맥락을 알아야 할 듯..

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 09월 22일

안녕하세요, DB 테이블 설계에 대한 귀하의 질문에 대해 답변드립니다. 사실 그 방법은 특정한 정답이 있는 것이 아니라, 해당 시스템의 요구사항과 유지보수의 용이성 등을 고려하여 결정되어야 합니다. 그러나 귀하가 제시하신 두 가지 안 중에서 저는 2안을 더 선호합니다. 그 이유는 다음과 같습니다: - 첫번째로, 하나의 테이블을 사용하면 데이터베이스 구조가 단순화되어 관리하기 쉬워집니다. 호환성 문제를 최소화하고 시스템 전체 성능도 향상시킬 수 있습니다. - 두 번째로, 범주와 세부 권한간의 관계를 하나의 필드에서 나타낼 수 있기 때문에 이해하기 쉽고 가독성도 좋아집니다. 또한, 권한 부여 타입 필드를 두어 범주인지 세부 권한인지 분류하는 것은 우수한 아이디어라고 생각됩니다. 이렇게 함으로써 어떤 유형의 권한이 부여되었는지 쉽게 식별할 수 있게 됩니다. 만약 결국 두 테이블을 사용하게 된다면, A 테이블과 B 테이블 사이에 일련번호를 매핑하여 연결하는 것도 고려해볼 만한 방법일 것입니다. 이렇게 하면 범주와 세부 권한의 관계를 쉽게 파악할 수 있습니다. DB설계는 항상 유연성을 기억해야 하는 부분입니다. 현재의 요구사항뿐만 아니라 미래의 확장성까지 고려하여 작업하는 것이 중요합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!