2011-12-21 3 views
4

나는 가장 좋은 방법은이 같은 데이터 모델을 처리하는 것입니다 궁금해 :모범 사례 : 양방향 관계를 피해야합니까?

  • 역할
  • 사용자
  • 권한

: Simple security model

우리는 3 개체가 엔티티는 Java 클래스로 표현되며 최대 절전 모드를 통해 데이터베이스에 매핑됩니다. 어쨌든 저는 생각합니다. 이 기술에 대한 지식이 없어도 문제는 해결 될 수 있습니다.

Role & User 사이 Permission & Role 사이에 다 대다 관계가있다.

여기에 양방향 관계가 있습니까? 그래서 Role에게 모든 회원을 제공하고 User에게 모든 역할을 요청할 수 있습니다.

두 엔티티 모두 요청할 수 있다는 것은 매우 편안하지만 한 가지 단점은 관계를 제거 할 때마다 두 엔티티를 모두 관리해야한다는 것입니다.

예. User에서 Role을 삭제하면 Role에서 User도 삭제해야합니다. 이러한 관계가 많은 경우 이것은 매우 성가시 수 있습니다. 그러므로 나는 최선의 관행이 무엇인지를 원합니다.

+2

주제가 투표에서 제외 된 이유를 알 수 없습니다. 데이터 모델링은 SQL 데이터베이스에 관한 것이 아니라 프로그래머가 수행하는 것입니다. – Kos

답변

4

양방향 관계를 피하려고합니다. 대신 한 방향을 DAO/저장소의 명시 적 쿼리로 바꿉니다. 모델을 더 간단하게 유지하고 인터페이스를 통해 올바르게 수행 된 경우 응용 프로그램에서 순환 의존성을 제거합니다.

+1

하나의 방향성 관계가 더 쉽게 관리됩니다. 명시 적 조회/찾아보기가 성능. 제 점이 _ 생하면 양 f 향 관계로 가야 할 수도 있습니다. – ahoffer

1

여기에 양방향 관계가 있습니까? 그래서, 당신은 모든 회원에게 당신에게 모든 역할을 부여하고 당신에게 모든 역할을 제공하도록 역할을 요청할 수 있습니다.

예. 실제로 두 가지 방법 모두에서 탐색 기능이 필요한 경우 가능한 한 가장 간단한 방법으로 탐색하지 못하게 할 필요가 없습니다.

한 가지 단점은 관계를 제거 할 때마다 두 항목을 모두 관리해야한다는 것입니다.

이것은 구현에 따라 달라지며 두 "끝"을 동기화하는 방식으로 데이터 모델을 구현할 수 있습니다.