내 응용 프로그램 사용자는 청소년, 개인 또는 조직의 구성원의 세 가지 유형 중 하나 일 수 있습니다. 내 사용자 테이블에서 부울 필드 십대 (null이 아님)과 외래 키 organization_id (null)이 있습니다.여러 유형의 사용자를 어떻게 처리합니까?
teen가 true이고 organization_id가 null 인 경우 사용자는 십대입니다. 십대들은 조직에 속할 수 없습니다.
teen가 false이고 organization_id가 null 인 경우 사용자는 개인입니다.
teen가 false이고 organization_id가 null이 아닌 경우 사용자는 조직의 구성원입니다.
이렇게하는 더 좋은 방법이 있습니다. 나는 십대가 사실이고 organization_id가 null이 아닌 경우가 있다는 것을 좋아하지 않습니다.
새 테이블 인 organizations_users를 추가하고 사용자 테이블에서 organization_id 외래 키를 제거하는 것이 더 좋습니까? 필자가 보게되는 단점은 사용자가 개인인지 또는 조직인지 여부를 판단하는 데 더 오래 걸리고 적절한 경우 데이터를 가져 오는 것입니다.
더 좋은 방법이 있습니까?
+1 : 나는 다음을 제안합니다. – JNK
사용자가 조직의 구성원 인 경우 조직 테이블의 데이터를 어떻게 검색합니까? – birderic
@birderic의 경우 조회가 변경되지 않습니다. 회원의 조직 데이터는 계속 저장됩니다. 이러한 값 중 일부를 계산할 수 있다는 사실을 고려하면 약간의 중복성이 있지만 중복성은 설계 및 코드를 단순화하고 동시에 유연성을 구축합니다. 그런데 사람들이 여러 역할을 할 수 있기 시작하면 다른 테이블을 사용하여 사용자와 역할 간의 관계를 일대 다 (one to many)로 전환하게됩니다. –