인프런 커뮤니티 질문&답변
39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.
작성
·
32
0
MemberDetail 테이블의 UK_MEMBER_DETAIL_PROFILE_ADDRESS 유니크 제약 조건과 관련해서 질문이 있습니다.
39장 강의 마지막 부분에서, 해당 프로파일 주소(profile_address)를 빈 문자열로 바꿔 삭제할 수 있는 부분 테스트를 추가 하셨는데, 그런데 이렇게 되면 여러 사용자가 프로필 주소를 빈값으로 변경 할 경우 제약 조건에 충돌이 발생할 수 있을 것 같습니다.
profile_address 값을 빈값으로 설정할 수 없도록 테스트를 조정하는게 더 맞아 보이는데 제가 생각한게 맞을까요?
답변 2
0
안녕하세요. 말씀하신 대로 unique 제약 조건이 있는 경우 NULL 값은 상관없지만 빈 문자열은 중복 문제가 생길 수 있습니다. 강의 때는 그 부분을 체크 못했네요. 이전에 같은 질문을 주신 분이 계셔서 해결 방법을 이야기했습니다. 빈 문자열로 세팅하더라도, 값을 NULL로 등록되도록 조정을 하는 방법을 사용해야 합니다. 해당 질문은 다시 찾아보겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 지수님!
프로필 주소를 빈 값으로 바꿀 때 발생할 수 있는 제약 조건 문제에 대해 잘 짚어 주셨습니다. 이러한 문제는 데이터베이스에서 unique 제약 조건을 충족해야 하기 때문에 실제로 사용해보면 빈 문자열이 중복되는 상황으로 인해 오류가 발생할 수 있습니다.
해결 방안
현재 프로필 주소를 “빈 값”으로 바꾸면 데이터베이스의 유니크 제약 조건(unique constraint)에 위배될 가능성이 큽니다. 따라서 다음과 같은 방법으로 이 문제를 해결할 수 있습니다:
NULL 값으로 취급하기: 빈 문자열을 저장하는 대신, 프로필 주소가 제거될 때 실제로는 NULL로 저장하여 제약 조건 위반을 방지할 수 있습니다. 이 방법은 많은 시스템에서 옵션 필드를 처리하는 일반적인 방법 중 하나입니다.
디폴트 값 사용: 빈 문자열을 디폴트(non-unique) 값으로 설정하여, 유니크 제약 조건을 피할 수 있지만, 이는 엄밀히 말하면 ‘빈 값’으로 처리되는 것이 아니기에 고려해볼 다른 방법이 될 수 있습니다.
이와 관련해서 유사한 질문과 답변을 참조하시면 도움이 될 것 같습니다. 아래 링크에서 추가적인 논의를 확인해보실 수 있습니다:
이 답변이 문제 해결에 도움이 되었기를 바랍니다. 질문자님의 더 나은 이해를 위해 기존 답변을 참고하여 링크를 추천해드리고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





답변 감사합니다!