일부 사용자/역할 데이터베이스 테이블에 대한 디자인이 수용 가능한지 여부에 대한 질문은 여기에서 할 수 있지만 일부 조사 후에이 질문을 건너 왔습니다 :하나의 십진수로 데이터베이스에 저장된 여러 권한 유형 (역할)
What is the best way to handle multiple permission types?
그것은 혁신적인 접근 같은데 그래서 대신 대다 관계 users_to_roles 표 중, I는 십진수 (I 감히 int 데이터 형식)으로 정의 다수의 권한을 갖는다. 이는 단일 사용자에 대한 모든 권한이 한 행에 있음을 의미합니다. 다른 질문과 대답을 읽을 때까지는 아마 이해가 안 될 것입니다.
나는이 문제를 두려워하지 않습니다. 누군가 변환 과정을 설명해 주시겠습니까? "옳은"소리는 들리지만, DB에 들어가기 전에 역할을 십진수로 변환하는 방법을 얻지 못하고, DB에서 나오는 경우 어떻게 다시 변환되는지를 알 수 없습니다. 자바를 사용하고 있지만, 당신이 그것을 외면한다면 그것은 멋질 것이다. 에
는 "개인적으로, 나는 가끔 권한 플래그 열거 형을 사용하면 및 사용할 수있는이 방법, OR, NOT 및 XOR 비트 연산 :. 여기
은 다른 질문은 삭제됩니다 오프 기회에서 원래의 답변입니다 열거의 항목. 그런 다음[Flags]
public enum Permission
{
VIEWUSERS = 1, // 2^0 // 0000 0001
EDITUSERS = 2, // 2^1 // 0000 0010
VIEWPRODUCTS = 4, // 2^2 // 0000 0100
EDITPRODUCTS = 8, // 2^3 // 0000 1000
VIEWCLIENTS = 16, // 2^4 // 0001 0000
EDITCLIENTS = 32, // 2^5 // 0010 0000
DELETECLIENTS = 64, // 2^6 // 0100 0000
}
, 당신은 AND 비트 연산자를 사용하여 여러 가지 권한을 결합 할 수 있습니다. 예를 들어
, 사용자가 & 편집 사용자를 볼 수있는 경우, 작업의 진 결과를 0000 0011입니다. 십진수로 변환 된 값은 3입니다. 그러면 한 사용자의 권한을 데이터베이스의 단일 열에 저장할 수 있습니다 (이 경우 3입니다).
응용 프로그램 내부에서, 당신은 단지 사용자가 특정 권한이 아닌지 확인 (OR) 다른 비트 연산이 필요합니다. "
매우 유용한 질문 및 답변 ... –