양다리? 관계 설정

아래와 같은 경우, 두 엔티티 간의 관계를 어떻게 설정해야 할까요?

class Team
{
    public Worker? Supervisor;
    public IEnumerable<Worker> Members;
}

class Worker
{
    public Team Team;
}

팀-팀장의 관계에서는 Many-to-One(Zero) 인 거 같고,

팀-팀원의 관계에서는 One-to-Many 인 것 같은데 말이죠.

똘똘말이해서 Many-to-Many 인가요?

Worker는 하나의 Team만 가지나요?

멤버로서는 하나의 팀에 소속되어 있지만,
팀장으로서는 여러 팀을 지휘할 수 있습니다.

팀장은 멤버 역할을 할 수도 아닐 수도 있습니다.

그냥 이렇게 하면 될 듯 한데요? ^^

image

1개의 좋아요

그러면, teamId-supervisorId 를 위한 관계 테이블이 필요한 데,
이 경우, 팀-팀장이 Many-to-Many 관계가 되지 않나요?
그리고, 팀-팀원에 대한 관계 설정은 빠지게 되는 것 같습니다.

다 대 다의 관계는 식별관계에서만 그렇게 말하기 때문에 비식별의 경우 여러 관계가 있다고 하면 될 것 같아요.

1개의 좋아요

위의 테이블로 표현이 됩니다.

Team : Teamid(팀 (들))은 - 하나의 SupervisorId(팀장)을 갖는다.
Worker: WorkerId(팀원 (들))은 - 하나의 TeamId(팀)을 갖는다.

덕분에 부드럽게 해결했습니다. ^^

Worker에서,

        public Team? Team { get; set; }
        public IEnumerable<Team> Supervisings { get; set; } = Array.Empty<Team>();

Team 에서,

        public Worker? Supervisor { get; set; }
        public virtual IEnumerable<Worker> Members { get; set; } = Array.Empty<Worker>(); 

Team의 모델 빌더

            builder.HasMany<Worker>(t => t.Members)
                .WithOne( w => w.Team);

            builder.HasOne<Worker>(t => t.Supervisor)
                .WithMany(w => w.Supervisings);              
1개의 좋아요