본문 바로가기

데이터 Story/모델링 이론

속성 분류법 –기초 속성(Basic Attributes) 저는 속성을 아래와 같이 분류합니다. - 기초(Basic) 속성 - 관계(Relationship) 속성 - 추출(Derived) 속성 - 시스템(System) 속성 이는 실제 엔터티에 존재하는 속성을 분류한 것입니다. 즉 순수하게 업무에서 필요한 논리적인 구분이 아니라 물리적인 구분입니다. 기초 속성(Basic Attribute)부터 차례로 설명하겠습니다. 엔터티의 본질을 설명하는 속성이 기초 속성입니다. 이 기초 속성을 보면 엔터티의 정의를 알 수 있습니다. 엔터티에 반드시 존재해야 하는 업무 식별자와 후보 식별자, 엔터티의 특성을 설명하는 속성 등이 이에 해당합니다. [그림1] 주문 엔터티의 주문번호·고객번호·주문일자·배송요청일자·배송지주소 속성이 기초 속성입니다. [그림1] 기초 속성은 오너십(Ow.. 더보기
식별자 종류 – 대리 식별자 대리 식별자(Alternate Identifier)는 주 식별자(Primary Identifier)로 선택되지 않은 후보 식별자입니다. 대체 식별자라고도 하고요. Primary Identifier에 대한 의미로써 Secondary Identifier라고도 합니다. [그림1] 릴레이션에서 후보 식별자는 사원주민번호·휴대폰번호·이메일주소·고객번호 속성입니다. [사원] 더보기
식별자 종류 – 주 식별자 주 식별자(Primary Identifier)는 엔터티에 하나만 존재하는 대표 식별자입니다. 업무 식별자나 후보 식별자와 달리 물리적인 개념이 강해 PK(Primary Key)라고 생각해도 될 거 같습니다. 주 식별자 역할은 두 가지 관점으로 생각할 수 있습니다. 하나는 자신의 엔터티를 바라보는 관점이고요. 다른 하나는 다른 엔터티에서 바라보는 관점입니다. 전자는 자신의 엔터티 내에서 인스턴스를 식별하는 PK 역할이고요. 후자는 다른 엔터티에서 바라볼 때 그 엔터티와의 관계를 식별하는 FK(Foreign Key) 역할입니다. 주 식별자는 물리적으로 인스턴스를 대표하는 역할을 하기 때문에 인스턴스를 조회할 때 사용하고요. 또한 다른 엔터티와 조인(Join)할 때도 주 식별자를 사용합니다. 주 식별자를 선정.. 더보기
판다곰과 원숭이 그리고 바나나 “판다곰과 원숭이와 바나나가 있습니다. 이중 두 가지를 묶는다면 어떤 것을 묶으시겠습니까?” 책을 읽다보면 모델링과 연관해서 생각할 때가 종종 있습니다. 일종의 직업병이죠. 생각하고 싶지 않은데 저절로 생각이 흐르니까 좋지 않은 병입니다. ㅎ 서양과 동양의 차이를 설명한 책을 읽었는데1), 한 부분을 제가 이해한 방식으로 소개하겠습니다. 아리스토텔레스로 대표되는 서양 사람은 사물의 본질을 잘 파악한다고 합니다. 성격 그대로 생각하는 것이죠. 데이터 본질이 생각나더라고요. 반면, 공자로 대표되는 동양 사람에게는 사물의 본질과 함께 관계가 지대한 영향을 미친다고 합니다. ‘관시(관계)’라는 중국어를 강조하던 선배가 생각났고요. 모델링 관계가 생각났습니다. 서양 사람은 자기 자신을 잘 파악해서 개인주의 성향이.. 더보기
식별자(Key) 속성 & 비식별자(Non-Key) 속성 식별자 속성이란 엔터티에 존재하는 인스턴스의 유일성을 보장해 주는 속성이나 속성 집합입니다. 엔터티의 인스턴스마다 서로 다른 값을 가지는 속성이 식별자입니다. 같은 값이 하나라도 존재하면 식별자가 아닙니다. 흔히 말하는 PK는 테이블에 지정된 물리적인 제약(Constraints)입니다. 임의의 속성을 하나 추가하거나 여러 속성을 묶어서 PK 역할을 하도록 만들 수 있기 때문에, PK가 업무 식별자나 후보 식별자와 동일한 개념은 아닙니다. 업무(후보) 식별자는 논리적으로 인스턴스를 구별하는 속성입니다. 식별자를 지칭하는 용어는 여러 가지가 있습니다. 업무 식별자, 후보 식별자, 주 식별자, 대리 식별자, 인조 식별자, 외래 식별자, 슈퍼 식별자 등이 있는데요. 자세한 설명은 곧이어 할 것입니다. 이중에 하.. 더보기
속성이란? 모델링의 3요소는 엔터티, 속성, 관계입니다. 엔터티 정의는 중요하기 때문에 어려운 반면, 속성 정의는 많은 개수 때문에 어려움을 겪습니다. 엔터티나 관계에 비해 압도적으로 많죠. 속성은 엔터티의 성격을 상세하게 기술하는 요소입니다. 속성을 모두 도출(정의)하면 해당 엔터티가 관리하는 데이터가 무엇인지 알기 쉽습니다. 속성은 데이터의 값을 저장하는 저장소입니다. 데이터를 저장하는 가장 작은, 독립된 저장 단위죠. 이렇게 저장된 데이터가 엔터티를 자세하게 묘사합니다. 속성을 모두 도출해야 엔터티가 온전해집니다. 속성이 채워지지 않는 한 모델링은 끝난 것이 아닙니다. 결국 속성을 상세하게 분석하는 시간이 많을수록 데이터 모델의 완성도는 높아집니다. 이를 역으로 표현하면 모델링 시간이 충분히 주어질수록 속성을.. 더보기
완전(Complete) 서브타입 & 불완전(Incomplete) 서브타입 지난 번에 서브타입을 구분하는 방법으로 배타(Exclusive)·중복(Inclusive) 서브타입을 설명했습니다. 이번에는 완전(Complete) 서브타입과 불완전(Incomplete) 서브타입을 설명하겠습니다. 완전(Complete) 서브타입은 슈퍼타입의 모든 인스턴스가 최소한 하나의 서브타입 인스턴스와 관계가 존재하는 서브타입입니다. 반면에 불완전(Incomplete) 서브타입은 슈퍼타입에만 인스턴스가 존재하고 서브타입에는 인스턴스가 존재하지 않는 서브타입입니다. 즉 고유 속성이 존재하지 않는 서브타입입니다. 이렇게 슈퍼타입 인스턴스와 서브타입 인스턴스의 관계를 인스턴스 제약(Instance Constraints)이라고 합니다. 인스턴스 제약에 따라 완전(Complete) 서브타입과 불완전(Incom.. 더보기
배타 서브타입 & 중복 서브타입 서브타입은 크게 배타 서브타입과 중복 서브타입으로 구분할 수 있습니다. 배타(Exclusive 또는 Disjoint) 서브타입은 서브타입 부분 집합 간에 공통 부분을 갖지 않는 서브타입입니다. [그림1]은 배타(Exclusive) 서브타입입니다. [그림1] 하나의 슈퍼타입 인스턴스는 단 하나의 서브타입과 관계(일대일 관계)가 존재합니다. 따라서 고객은 개인 고객이거나 사원 둘 중 하나입니다. 서브타입 간에 상호 배타적이므로 일반적으로 전체 서브타입의 합은 슈퍼타입이 됩니다. 즉 개인 고객과 사원을 합치면 전체 고객이 됩니다. [그림2]는 정보 공학(Information Engineering) 표기법의 배타 서브타입입니다. 서브타입 기호에 X 표시가 있습니다. [그림2] [그림3]은 중복(Inclusive.. 더보기
정규화에 대한 주절거림 블로그에 서브타입에 대한 글을 쓰고 있는데요. 변화를 위해 다양한 주제의 글을 올리겠습니다. 나이를 먹을수록 확실히 체력의 부담을 느낍니다. 일주일에 하나씩은 올리려는 생각이 한 달에 두 개로 줄고... 실제는 하나만 올라가기도 하고요. 최근에 정규화에 대해 다시 생각하고 있습니다. 지나치게 사적인 얘기지만 저는 모델링이 자신 있는데요. 남들이 뭐라하든... ㅎㅎ 오래 전부터 해 오던 훈련 때문입니다. 속성의 종속 관계를 파악해서 엔터티를 도출하는 훈련인데요. 쉽게 말해 속성이 엔터티에 속하는 게 옳은지를 판단하는 것입니다. 이 훈련의 핵심은 식별자와 종속성입니다. 엔터티를 대표하는 속성(업무 식별자)을 찾아야 하고요. 그 속성을 기준으로 대상 속성이 종속됐는지 여부를 판단합니다. 종속성이 없다면 다른 .. 더보기
서브타입은 어떻게 도출하는가? 서브타입을 도출하는 방법은 크게 두 가지입니다. 두 개 이상의 유사한 엔터티에서 공통 속성을 분류하는 방법과, 복잡한 엔터티에서 유사한 속성끼리 분류하는 방법이 있습니다. 전자는 엔터티를 통합(Generalization)하는 행위이고, 후자는 엔터티를 상세화(Specialization) 또는 논리화(Logicalization)하는 행위입니다. 모든 엔터티가 서브타입이 존재하는 것은 아닙니다. 서브타입이 도출되는 엔터티는 소수인데요. 통합할 수 있고 상세화할 수 있는 엔터티에서는 서브타입을 반드시 도출해야 합니다. 물리 모델링 단계에서 다시 하나의 엔터티로 통합되더라도 과정 중에는 도출해야 합니다. 모델링은 과정을 의미하니까요. [그림1] 모델에는 유사한 엔터티가 있습니다. 두 개 이상의 엔터티가 유사하다.. 더보기