본문 바로가기

관계 속성

관계 엔터티 설계 엔터티 간의 관계에서 생기는 관계 속성은 한 엔터티에 여러 개가 있을 수 있으며, 그 관계 속성 중에는 유사한 성격의 속성이 있을 수 있다. 이때 유사한 관계 속성이 두 개 이상이며, 추가될 가능성이 조금이라고 있다면 별도의 관계 엔터티로 설계한다. [그림1] 보험계약 엔터티에는 세 개의 관계 속성이 존재한다. [그림1] 보험을 계약한 고객과 보험의 피보험자 고객, 보험의 연대보증 고객이 누구인지를 관리하는 속성이 관계 속성이다. 따라서 계약고객번호/피보험고객번호/연대보증고객번호 속성은 관계 속성이며, 관계선이 세 개이므로 관계 속성과 마찬가지로 관계 명에도 역할(Role) 이름을 사용한 모델이다. 이미 세 개의 관계 속성이 존재하지만 연대 보증인의 경우에는 여러 명을 관리할 수도 있어서 관계 속성이 더.. 더보기
속성이란? 모델링의 3요소는 엔터티, 속성, 관계입니다. 엔터티 정의는 중요하기 때문에 어려운 반면, 속성 정의는 많은 개수 때문에 어려움을 겪습니다. 엔터티나 관계에 비해 압도적으로 많죠. 속성은 엔터티의 성격을 상세하게 기술하는 요소입니다. 속성을 모두 도출(정의)하면 해당 엔터티가 관리하는 데이터가 무엇인지 알기 쉽습니다. 속성은 데이터의 값을 저장하는 저장소입니다. 데이터를 저장하는 가장 작은, 독립된 저장 단위죠. 이렇게 저장된 데이터가 엔터티를 자세하게 묘사합니다. 속성을 모두 도출해야 엔터티가 온전해집니다. 속성이 채워지지 않는 한 모델링은 끝난 것이 아닙니다. 결국 속성을 상세하게 분석하는 시간이 많을수록 데이터 모델의 완성도는 높아집니다. 이를 역으로 표현하면 모델링 시간이 충분히 주어질수록 속성을.. 더보기
관계 엔터티의 장점 2 관계 엔터티의 장점에 대한 두 번째 글입니다. [그림1]과 같은 모델의 단점이 성능이 떨어지는 것이라고 생각하는 사람이 많은데요. 진짜인지 아닌지를 여기서 따지지는 않고요. ‘성능이 반드시 떨어진다’는 건 아니라는 전제하에 케이스별로 따지는 게 정답이라고 언급하고 글을 이어가겠습니다. [그림1] 만약 성능에 문제가 된다면 비정규형을 고려해야 됩니다. 관계 속성을 나열해서 사용하는 것도 비정규형이지만, 그쪽으로 한번 가면 되돌아오기 어렵고요. 업무가 복잡할수록 누더기가 된다고 보여집니다. [그림1]의 관계 엔터티에서 몇 가지 비정규형을 고려할 수 있습니다. 제 생각에는 [그림1]이 정규형이니까 모든 비정규형은 다 적용할 수 있다고 보는데요. 모든 경우를 장담할 수는 없겠죠. [그림2]와 같이 중복 관계(계.. 더보기
다수의 관계 속성 & 하나의 관계 엔터티 이전 글에서 밝혔듯이 저는 관계를 속성이라고 생각합니다. 다른 엔터티와 연관성을 알 수 있는 속성으로요. 속성이 존재해야 관계가 성립되는 것입니다. 관계 속성은 데이터 생성 순서 개념이 존재하는 것이 일반 속성과 다른 점입니다. 하위 엔터티 속성의 데이터는 상위 엔터티의 속성(주 식별자)에 존재해야 하기 때문에요. 그 외에는 그냥 속성하고 같다고 생각됩니다. 이런 관계 속성은 엔터티 간에 두 개 이상일 수 있습니다. 하지만 실무 모델에서는 관계선을 정확하게 도출하지 않아 엔터티 간에 관계선이 여러 개가 존재하는 엔터티를 찾아보기 어렵습니다. [그림1]은 보험 계약과 연관된 고객이 계약자, 피보험자, 연대보증인 등으로 세 명일 때의 모델입니다. 세 명이 전부라면 보험계약 엔터티에서 관계 속성으로 관리해도 .. 더보기