Foreign Key와 Nullable

Eunho Bae·2022년 7월 1일
0

복습

[Table("Item")]
    public class Item
    {
        public int ItemId { get; set; }
        public int TemplateId { get; set; }
        public DateTime CreateDate { get; set; }

        [ForeignKey("OwnerId")]
        public Player Owner { get; set; } 
    }

    [Table("Player")]
    public class Player
    {
        public int PlayerId { get; set; } 
        public string Name { get; set; }

        public Item Item { get; set; }
    }

Principal Entity

위 DataModel에서 Item이 Player를 외래키로서 가리키고 있는 상태이다. 따라서 이런 entity를 주 entity라고 한다.

Dependent Entity

외래 키 속성을 포함하는 Entity이다. 관계에서 '자식'이라고도 한다.

Microsoft Docs 관계 - EF Core

Dependent 데이터가 Principal 없이 존재할 수 있는가?

아이템이 자신이 어느 플레이어한테 속해있는지에 대한 정보가 없이 존재할 수 있을까? (주인이 없는 아이템)
개발자 마음, 즉 정책을 어떻게 정하냐에 따라 달라지긴 하는데, 주인이 없는 아이템도 가능하도록 한다면 Nullable하게 정하면 된다.
즉 위 코드에서 Owner를 Nullable하게 설정하면 된다.

외래키가 Nullable이 아닌 경우

Player를 지우면 외래키로 해당 Player를 참조하는 Item도 같이 삭제된다.

외래키가 Nullable인 경우

item은 그대로 남고 null로 세팅이 된다.

profile
개인 공부 정리

0개의 댓글