programing

관리자 사용자를 프론트엔드 사용자와 동일한 테이블에 두는 것이 좋은 데이터베이스 설계입니까?

lastcode 2023. 10. 14. 10:16
반응형

관리자 사용자를 프론트엔드 사용자와 동일한 테이블에 두는 것이 좋은 데이터베이스 설계입니까?

프론트엔드 페이지에서 로그인할 수 있는 사용자와 관리자 페이지에서 로그인할 수 있는 관리자가 있습니다.

사용자와 관리자 모두 역할이 다른 "사용자"여야 합니까, 아니면 서로 다른 테이블로 나누어야 합니까?

역할은 시간이 지남에 따라 승진(또는 강등)될 수 있으므로 사용자 계정과 별도로 추적해야 합니다.그런 상황에서 두 개의 다른 사용자 계정을 두 개의 다른 테이블에 두는 것이 말이 됩니까?전 그렇지 않다고 생각해요.

제가 사용할 기본 구조는 이렇습니다.

사용자

  • user_id (기본 키)
  • user_name

역할들

  • role_id(기본 키)
  • role_name

USER_ROLES

  • user_id(기본 키, USER.user_id에 대한 외부 키)
  • role_id(기본 키, ROLES.role_id에 대한 외부 키)

예, 모든 사용자가 사용자 테이블에 속합니다.또한 역할 테이블이 있어야 하고 둘 사이에 FK가 있어야 합니다.

사용자가 실수로 관리 사용자가 되는 위험은 사용자가 실수로 다른 사용자가 되는 위험보다 커져서는 안 되며, 이 또한 발생하지 않아야 합니다.

별도의 테이블에 일반 사용자와 관리 사용자가 있는 경우 일반 사용자 테이블에 관리 사용자 ID와 일치하는 사용자 ID가 있습니다.한 유형의 사용자 ID가 다른 유형으로 실수로 사용되지 않도록 해야 합니다.사용자 ID가 다른 사용자 ID로 변경될 수 있는 것을 발견하는 것보다 그러한 문제를 발견하는 것이 더 어렵습니다.

관리자와 사용자가 필드를 공유하는 경우 구조가 중복되지 않도록 동일한 테이블로 이동해야 할 것으로 보입니다.둘 다 이름과 성을 가지고 있습니다.둘 다 현실 세계에서는 인간입니다.아마 이렇게 되어야 할 것입니다.

하지만 다른 한편으로는 주와 도시 둘 다 이름이 있습니다.그리고 둘 다 장소입니다.그들은 항상 같은 테이블에 있어야 합니까?때로는 재귀적 모델로 적용되기도 합니다.때때로 그들은 별개입니다.

제 생각에는... 관리자가 시스템에서 "유형"의 사용자로 간주됩니까?아니면 "사용자" 유형의 어떤 것도 적용되지 않는 것이 진정으로 다른 것입니다.관리자가 시스템에서 실제로 무엇을 의미하는지에 따라 달라집니다.공유 구조물이 도시/주 경계를 따라 있습니까?아니면 "당신은 TYPE 사용자입니다"의 선에 따른 공유 구조입니까?

하지만 의심스러운 경우에는 관리자가 정말로 별개인지 의심되기 때문에 사용자 테이블에 관리자를 배치하는 것이 좋습니다.둘 다에 대한 인증 시스템을 공유하는 것이 좋을 것입니다.두 가지 모두에 대해 계정 생성을 공유하는 것이 좋을 것입니다.개발자들만 백엔드로 사용하는 특별한 기능이 관리자가 아니라면 말입니다.

저는 당신의 질문에 절대적인 진실은 없다고 생각합니다. 그것은 당신의 신청에 달려있습니다.

사용자 유형이 다른 테이블에 있을 수 있는 두 가지 이유는 다음과 같습니다.

  • 종류는 데이터 구조(상세/주소 등)가 다릅니다.
  • 잘 자요.FK 값을 수동으로 편집하는 경우(사용자를 가리킴), 어떤 것이든 프론트 엔드 사용자에게 가리킬 위험을 피할 수 있습니다.

저는 개인적으로 "사용자"를 한 테이블에 보관하고 싶습니다.역할을 표현하는 방법(예: User 테이블 자체의 정적 비트로 또는 고급 RBAC 권한을 통해)은 시스템이 얼마나 복잡한지에 따라 달라집니다.하지만 사용자는 사용자입니다.

별도의 Roles 테이블과 별도의 User_Roles 테이블을 만듭니다.첫 번째 역할 정의에서, 두 번째 역할에서 사용자를 각자의 역할에 합류시킵니다(사용자가 둘 이상일 수도 있습니까?).

사용자를 유지하는 데 문제가 없어야 하며, 해당 정보에 액세스하는 페이지\방법만 문제가 될 수 있습니다.

데이터 유형이 동일하므로 둘 다 동일한 테이블에 두는 것이 더 나을 것입니다.

데이터의 관점에서 관리자는 각기 다른 역할을 가진 사용자라는 것이 타당합니다.각 사용자 권한에 대한 표가 있을 수 있으며, 사용자와 역할의 상관 관계가 있을 수 있습니다.사용자는 여러 역할을 수행할 수 있지만 결국 관리자는 사용자입니다.

언급URL : https://stackoverflow.com/questions/4169893/is-it-good-database-design-to-have-admin-users-in-the-same-table-as-front-end-us

반응형