본문 바로가기

데이터 Story/모델링 이론

관계 엔터티 선택 기준 [그림1]은 다수의 관계 속성을 사용하는 방식과 관계 엔터티를 사용하는 방식의 특징을 설명한 표입니다. [그림1] 일견 정규형 엔터티 방법이 일방적으로 좋아 보이나 앞서 밝혔듯이 가장 기본적인 판단 기준은 반복 속성의 개수와 속성이 늘어날 가능성을 염두에 두는 것입니다. 반복 속성도 적고 업무가 변경될 가능성이 없어 속성이 더는 늘어나지 않으며 성능 이슈가 존재하면, 정규형 엔터티를 채택하는 것이 바람직하지 않을 수 있습니다. 물론 일반적으로 관계형 데이터베이스에서는 반복 속성을 채택하는 방법보다 정규형 엔터티를 채택하는 것이 효율적입니다 또 다른 기준은 조회 요건입니다. 엔터티가 화면에 종속되는 것은 바람직하지 않지만 중요한 화면이 어떻게 구성됐는지에 따라 선택이 달라질 수 있습니다. 보험계약 당사자가.. 더보기
관계 엔터티의 장점 2 관계 엔터티의 장점에 대한 두 번째 글입니다. [그림1]과 같은 모델의 단점이 성능이 떨어지는 것이라고 생각하는 사람이 많은데요. 진짜인지 아닌지를 여기서 따지지는 않고요. ‘성능이 반드시 떨어진다’는 건 아니라는 전제하에 케이스별로 따지는 게 정답이라고 언급하고 글을 이어가겠습니다. [그림1] 만약 성능에 문제가 된다면 비정규형을 고려해야 됩니다. 관계 속성을 나열해서 사용하는 것도 비정규형이지만, 그쪽으로 한번 가면 되돌아오기 어렵고요. 업무가 복잡할수록 누더기가 된다고 보여집니다. [그림1]의 관계 엔터티에서 몇 가지 비정규형을 고려할 수 있습니다. 제 생각에는 [그림1]이 정규형이니까 모든 비정규형은 다 적용할 수 있다고 보는데요. 모든 경우를 장담할 수는 없겠죠. [그림2]와 같이 중복 관계(계.. 더보기
관계 엔터티의 장점 1 관계 엔터티의 장점은 유연하다는 것입니다. 반면에 다수의 관계 속성을 사용하는 방식의 단점은 유연하지 않다는 것입니다. 이전 글에서 설명했듯이 관계 속성을 사용하다 당사자 유형 중에서 연대보증인이 늘어날 때, 보험료 납부자와 같은 당사자 유형(서브타입) 자체가 늘어날 때 난감해집니다. 관계 엔터티를 사용하면 당사자구분코드에 ‘납부자’를 추가하면 약간의 수정이 발생할 뿐이죠. 어플리케이션이나 SQL의 수정을 최소화시키는 유연한 모델이 되는 것입니다. 관계 엔터티에서는 다른 속성(부가 데이터)을 관리하기 수월해집니다. [그림1] 모델과 같이 관계 엔터티도 고유의 속성을 가지게 될 때가 있습니다. 계약자와 피보험자의 신용정보 활용에 대한 동의 데이터를 관리할 수 있습니다. [그림1] 만약 관계 속성을 사용하면.. 더보기
다수의 관계 속성 & 하나의 관계 엔터티 이전 글에서 밝혔듯이 저는 관계를 속성이라고 생각합니다. 다른 엔터티와 연관성을 알 수 있는 속성으로요. 속성이 존재해야 관계가 성립되는 것입니다. 관계 속성은 데이터 생성 순서 개념이 존재하는 것이 일반 속성과 다른 점입니다. 하위 엔터티 속성의 데이터는 상위 엔터티의 속성(주 식별자)에 존재해야 하기 때문에요. 그 외에는 그냥 속성하고 같다고 생각됩니다. 이런 관계 속성은 엔터티 간에 두 개 이상일 수 있습니다. 하지만 실무 모델에서는 관계선을 정확하게 도출하지 않아 엔터티 간에 관계선이 여러 개가 존재하는 엔터티를 찾아보기 어렵습니다. [그림1]은 보험 계약과 연관된 고객이 계약자, 피보험자, 연대보증인 등으로 세 명일 때의 모델입니다. 세 명이 전부라면 보험계약 엔터티에서 관계 속성으로 관리해도 .. 더보기
관계가 쉬워진 Turning Point 이번 글은 쉬어가는 글인데요. 관계와 관련된 개인적인 경험담입니다. 저는 관계도 속성이라는 것을 알고부터 관계에 대한 의문이 풀렸습니다. 사실 별 거 아닌데요. 당연한 건데 이상하게 그 얘기를 듣는 순간(정말 순간적으로) 관계라는 것이 아주 쉬워졌어요. 그 전에는 추상적인 선 정도로 생각했던 거 같아요. 그때도 관계를 정의하는 건 자신 있었지만, 관계를 생각할 때 마다 눈 앞에 뿌연 게 있는 것처럼 왠지 허전했었는데요. 관계를 단지 속성으로 인지할 수 있도록 알려주신 분이 오픈메이드컨설팅 최영철사장님입니다. 이 사실 하나만으로도 상당히 고마워하고 있습니다. 5년 정도 지난 거 같은데 아직 그 순간을 기억하고 있어요. 아마도 모델러로서 한 단계 성장하는 순간이었을 거에요. 이 글을 읽는 여러분도 이런 경험.. 더보기
잘못 표현된 관계선 2 - 속성으로 관리하려는 관계 - 참조 무결성 제약 Referencial Integrity Constraints - 바로 상위의 1촌 관계 계속 강조하고 있는 위의 요소는 사실 참조 무결성 제약이 존재할 때만 관계선으로 표현해야 한다는 것으로 간단히 설명할 수 있습니다. 이번 글은 잘못 표현된 관계를 RI 관점에서 살펴보도록 하겠습니다. [그림1] 모델에서 외국인 고객은 고객 엔터티에 통합되지 않고 별개로 관리되고 있습니다. 이 모델에서 외국인거래 엔터티는 외국인이 거래한 데이터를 관리하는 엔터티이므로 b관계는 꼭 필요한 맞는 관계입니다. 1촌 관계이고요. [그림1] 그런데 b관계로 표현하지 않고 a관계로 표현하면 잘못된 관계입니다. 식별자(PK)가 같아서 무심코 표현한 것이죠. 고객 엔터티와 외국인거래 .. 더보기
잘못 표현된 관계선 1 관계선을 잘못 표현하는 유형은 크게 두 가지가 있습니다. 엔터티 간에 연관성이 존재하는데도 관계를 표현하지 않는 예가 있으며, 연관성이 없는데도 관계를 표현하는 예가 있습니다. 모델링을 수행할 때 가장 부족한 부분이 엔터티의 정의(엔터티 설명을 의미하는 것이 아님)와 관계선의 표현인데요. 아래 세 가지 정도를 항상 염두에 두면서 관계를 도출하면 좋을 거 같습니다. - 속성으로 관리하려는 관계 - 참조 무결성 제약 Referencial Integrity Constraints - 바로 상위의 1촌 관계 이전 글에서도 설명한 위의 세 가지 요소를 기준으로 해당 사항이 없으면 관계선으로 표현하면 안 됩니다. 보통 엔터티 간의 연관성이 조금이라도 보이면 관계선을 표현할 때가 많습니다. 흔한 예가 식별자가 유사할 .. 더보기
관계 도출 시 핵심 요소 아래는 관계를 도출할 때 반드시 염두에 두어야 하는 내용입니다. 첫째. 속성으로 관리하려는 관계 둘째. 참조 무결성 관계 Referencial Integrity Relationship 셋째. 바로 상위의 1촌 관계 당연한 얘기지만 관계선을 표현할 때 최우선으로 고려해야 할 것이 관리하고자 하는 관계인지를 따져야 한다는 것입니다. 간혹 관리하지 않아도 무관한 관계선을 표현하는 예가 있습니다. 이는 업무에 관한 얘기이기도 합니다. 데이터로 업무가 틀렸음을 판단할 수 있는 경우가 있습니다. 더 나아가 효율적인 업무도 데이터를 보고 만들 수 있습니다(물론 모델러가 업무의 잘잘못을 따지는 것은 바람직하지 않다고 보며 이와 관련된 논쟁은 약간 소모적인 논쟁이 됩니다). 어쨌든 틀리거나 무의미한 업무에 대해서 검증은.. 더보기
관계선이 의미하는 것 관계선(Relationship Line)에는 여러 가지 의미가 포함돼 있습니다. 그으면 멋있을 거 같아서 관계선을 표현하진 않죠. 가장 중요한 의미는 관계선을 보고 업무 규칙을 알 수 있다는 것입니다. 관계를 정확히 표현했다면 관계선은 어떤 식으로든 두 엔터티 간의 업무 규칙을 보여줍니다. 그 업무 규칙은 기본적으로 종속 관계나 참조 관계냐로 구분할 수 있습니다. 종속 관계라면 두 엔터티는 뗄래야 뗄 수 없는 한 몸과 같은 관계이고요. 참조 관계는 없으면 그냥 허전한 관계입니다. 중요한 정보가 비는 거죠. 툴에서 이 둘을 구분하도록 해 주는 것도 의미가 있을 거 같습니다. 현재는 식별 관계냐 비식별 관계냐로 구분하는데 좀 부족한 거 같습니다. 업무 프로세스에 의해 발생되는 데이터면 관계선이 업무의 흐름을.. 더보기
종속 관계와 참조 관계 [그림1]은 종속 관계입니다. 상품가격 데이터는 상품이 존재하지 않으면 존재할 수 없으므로(존재 존속됐으므로) 두 엔터티의 관계는 완전한 종속 관계입니다. [그림1] 두 엔터티가 종속 관계면 엔터티명도 보통 유사합니다. 그리고 보통 부모 엔터티의 식별자는 자식 엔터티의 식별자로 상속됩니다. [그림2]도 종속 관계이지만 팀은 특정 리그에 속해 있어야 한다는 요건이 있어야 종속 관계로 도출할 수 있습니다. 만약 일반적인 요건이라면 리그와 팀은 별개로 존재할 수 있습니다. [그림2] 팀이 생기면 한 리그에만 속해야 한다는 요건에 따라 종속 관계로 도출됐고 식별자로서 상속했는데요. [그림1] 모델과 약간 다른 면이 있습니다. 요건이 바뀔 가능성이 있다는 것이고요. 팀 엔터티는 실체 엔터티라 식별자를 단순하게 만.. 더보기