작성
·
426
답변 1
2
안녕하세요. 김태경님, 공식 서포터즈 David입니다.
optional 속성이 false일 경우 연관된 엔티티가 반드시 존재해야 합니다.
일대일 연관관계를 잘 생각해보면 A1 - BB, A2 - CC와 같이 각각 하나의 엔티티만 바라보아야 합니다.
만약 A1 - BB , A2 - BB 와 같이 엔티티가 중복 참조되고 있다면 일대일 관계가 아니게 됩니다.
따라서, false의 경우 연관된 엔티티가 반드시 존재해야 하고, 이때 엔티티가 중복 참조되면 안되므로 유니크 제약조건을 추가하게 되는 것입니다.
일대일 관계를 키워드로 검색하셔서 학습하시면 좋을 것 같습니다:)
감사합니다.
optional 속성이 true라면 연관된 엔티티가 존재하지 않아도 됩니다. 그 반대인 false 값은 연관된 엔티티가 반드시 존재해야 합니다.
그렇다면 연관된 엔티티가 존재하지 않는 경우 null이 들어가게 될텐데, 유니크 제약조건의 경우 null 도 열(column)당 하나만 올 수 있습니다. (MSSQL 문서 참고) 이런 부분 때문에 optional이 true일 때 유니크 제약조건을 걸지 않도록 하는 것 같습니다.
MySQL의 경우 다수의 null 값을 허용하는군요. 저는 MSSQL 문서를 참고했습니다.
유니크 제약조건에 의해 NULL도 하나만 들어오게 한다면 아래 문서에 나타난 케이스의 경우 대응할 방법이 마땅치 않아 보이네요. 말씀하신 부분에 공감합니다. 저도 하나 더 배우고 갑니다:)
늦은 시간에 친절한 답변 감사합니다.
그럼 혹시 optional = true인 경우에는 어째서 UNIQUE 제약을 걸지 않는 걸까요? 말씀해주신 일대일 관계의 조건을 optional=true인 경우에도 지키도록 해야할텐데요.