관계형 데이터 모델링 노트 : 04 속성 이야기
Chapter 4 : 속성 이야기
서론
- “관계형 데이터 모델링 노트” 책을 통해 진행한 이론 스터디 네번째 시간이다.
이제 부터 하는것은 상세 논리 모델링이라고 할 수 있다. 엔티티를 상세화하여 관리하고자 하는 속성을 도출하는 단계이다.
속성에 대한 서설
- 모델링의 3요소는 엔티티와 속성 그리고 관계이다.
-
엔티티를 설계하는 것은 중요하기 때문에 어려운 반면, 속성은 많은 개수 때문에 어려움을 겪는다.
-
속성은 엔티티의 성격을 상세하게 기술하는 요소(특성)이다. 속성을 모두 도출(설계)하면 해당 엔티티가 관리하는 데이터가 무엇인지 알게 된다.
-
속성은 데이터를 저장하는 가장 작은, 독립된 저장 단위이다.
-
속성을 모두 도출해야 엔티티가 온전해진다.
-
- 속성 분류법
- 식별자 속성과 비식별자 속성
- 기초, 관계, 추출, 시스템 속성
- 원본 속성과 추출 속성
- 단일 값 속성과 다가 속성
- 단순 속성과 복합 속성
- 필수 속성과 선택 속성
- 코드 속성과 비 코드 속성
식별자 속성과 비식별자 속성
- 식별자 속성이란 엔티티에 존재하는 인스턴스의 유일성을 보장해주는 속성이나 속성 집합이다. 반면에 비식별자 속성은 일반 속성으로서, 식별자 속성에 따른 특성을 설명하는 속성으로 인스턴스 마다 같은 값을 가질 수 있다.
식별자 종류 - 후보 식별자
- 후보 식별자는 주 식별자가 될 가능성이 있는 식별자를 의미한다. 모든 식별자는 주 식별자가 될 수 있는 후보이므로, 식별자와 후보 식별자는 사실상 동일어다.
식별자 종류 - 주 식별자
-
주 식별자는 엔티티에 하나만 존재하는 대표 식별자다. 흔히 주 식별자와 주키라는 용어는 동일하게 사용한다.
- 주 식별자의 역할 두가지
- 자신의 엔티티를 식별하는 PK 역할
- 타 엔티티에서 해당 엔티티와의 관계를 식별하는 FK 역할
- 주식별자를 선정하는 두가지 방법
- 하나 또는 여러 개의 후보 식별자 중에서 대표를 지정.
- 적당한 후보 식별자가 없다면 인조 식별자를 만들어서 사용.
- 주 식별자의 특성
- 엔티티에는 반드시 주 식별자가 존재해야 한다.
- 주 식별자는 하나만 존재해야 한다.
- 정규화의 기본이 되는 속성.
- 엔티티의 성격을 대변할 수 있는 기초 속성.
주 식별자가 바뀌는 현상
-
엔티티 정의가 불명확할 때
-
데이터 분석이 미흡할 때
-
이력 데이터를 고려하지 않았을 때
-
업무가 변경될 때
어떤 속성을 주식별자로 선택해야 하는가?
- 주 식별자 속성의 값이 변경되지 않도록 선정
- 일반 속성에 종속되지 않도록 선정
- 인조 식별자에는 의미를 부여하지 않도록 설정
- 주 식별자 속성에 논리적으로 널 값이 존재하지 않도록 선정
- 최소한의 속성이 포함되도록 설정
- 업무적으로 활용도가 높은 속성으로 선정
- 수퍼 식별자가 되지 않도록 선정
- 최소 길이가 되도록 선정
- 주 식별자가 속성 값은 가능한 고정 길이가 되도록 선정
- 주 식별자가 속성은 전사에서 한번만 사용하도록 선정
- 암호화 대상 속성이 포함되지 않도록 선정
- 업무를 대표할 수 있는 속성으로 선정
주 식별자를 단순하게 설계해야 하는 이유
- 주 식별자를 구성하는 속성의 수는 가능한 적을수록 좋다.
- 주 식별자에 속한 속성이 많으면 무엇보다 가독성이 떨어진다.
- 주 식별자를 단독 속성으로 간략하게 만들면 하위 엔티티에 미치는 영향을 최소화된다.
주 식별자 선정 절차
복잡한 주 식별자
-
주 식별자가 복잡해지는 가장 큰 원인은 업무 식별자가 복잡하기 때문이다.
-
주 식별자가 복잡해지는 이유
-
기존 데이터를 관리할 때 (하위 엔티티가 없는 특성이 있음)
-
집계 데이터를 관리할 때
-
인스턴스를 생성하는 기준이 복잡할 때
-
교차 엔티티일 때
-
슈퍼 식별자가 사용될 때
-
주식별자 상속이 지속적으로 이루어질 때
-
교차 엔티티의 주 식별자
-
교차 엔티티의 주 식별자를 결정하는 방법은 네가지 유형이 있다.
-
상위(부모) 엔티티의 주 식별자가 복잡한 경우는 인조키를 사용하는 것이 일반적이다.
식별자 종류 - 인조 식별자
-
인조 식별자는 임의로 생성한 식별자를 의미한ㄴ다. 후보 식별자 중에서 주 식별자로 사용할 마땅한 후보가 없을때, 순번 성격의 속성을 추가해서 식별자로 사용한다.
-
인조 식별자를 오용하는 대표적으로 두가지 있다. 가장 커다란 오용은 무분별한 인조 식별자 사용이다. 그리고 또 다른 오용은 인조 식별자의 의미를 부여하는 것이다.
-
인조 식별자를 사용되기 까지의 과정
1) 후보(업무) 식별자 도출
2) 도출된 후보(업무) 식별자 중에 주 식별자로 적당한 후보가 있는지 검토
3) 적당한 후보가 없다면 인조 식별자 사용
인조 식별자를 사용해야 좋을 때
- 주 식별자가 복잡하면서 하위 엔티티가 다수 일 때.
- 업무를 직관적으로 만들어 주는 번호를 사용할 때.
- 모델을 유연하게 설계해야 할 때.
업무 식별자와 인조 식별자의 혼합
- 둘을 혼합해서 사용하면 안되는 이유
- 요건을 알기 어려워 가독성이 떨어짐.
- 엔티티 성격이 모호해짐.
- 모델을 관리하기 복잡해짐.
부분 인조 식별자를 사용할 수 있는 경우
- 성능상 이슈가 있는 경우
- 상위 엔티티 하나에 종속적일 때
식별자 종류 - 대리 식별자
- 대리 식별자(Alternate Identifier)는 주 식별자로 선택되지 못한 후보 식별자이다. 대체 식별자라고도 한다.
- 대리 식별자는 인스턴스가 생성되는 기준이 되기 때문에 더욱 유니크 인덱스로 관리해야 한다.
식별자 종류 - 슈퍼 식별자
-
슈퍼 식별자는 주 식별자에 다른 속성을 추가해서 만든 식별자를 의미한다. 따라서 엔티티에서 슈퍼 식별자는 많이 존재할 수 있다.
-
슈퍼 식별자를 구성하고 있는 속성 중에서 새로운 인스턴스를 생성하는데 영향을 미치지 않는 속성을 제외하면 후보 식별자가 된다. 최소 속성으로 이루어진 슈퍼 식별자가 후보 식별다.
-
단지 인덱스 수를 줄이기 위해서 슈퍼 식별자를 구성하여 사용하는 경우가 있는데 이를 지양해야 한다.
-
슈퍼 식벼자를 사용하면 엔티티 성격이 불분명 해진다. 인스턴스를 발생시키는 기준, 즉 업무 식별자가 명확해야 엔티티의 성격이 분명해진다.
속성 분류
- 기초 속성
- 관계 속성
- 추출 속성
- 시스템 속성
속성 종류 - 기초 속성
-
엔티티의 본질을 설명하는 속성이 기초 속성이다. 이 기초 속성을 보면 엔티티의 정의를 알 수 있다.
-
기초 속성의 값은 사용자의 입력으로 생성된다.
속성 종류 - 관계 속성
-
관계도 속성이다. 관계나 관계선을 따라다니는 용어가 관계 속성이다. 관계 속성은 타 엔티티와의 관계를 알기 위해 사용하는 외래 식별자 속성이다.
-
관계 속성은 두 가지로 나눌 수 있다. 하나는 존재 종속 관계일때는 관계 속성은 엔티티의 본질을 의미하므로 기초 속성이기도 하며, 두번째는 단지 참조 관계라면 관계 속성은 기초 속성이 아니다.
속성 종류 - 추출 속성
- 추출 속성(Derived Attribute)은 이미 존재하는 속성(원본 속성)으로 재생할 수 있는 속성이다.
- 추출 속성은 기존에 존재하는 원본 속성의 값을 연산해서 생성할 수 있는 속성이다.
- 추출 속성은 원본 속성에 종속되어 있는 이를 파생 속성이고도 한다.
- 추출 속성을 사용하는 가장 큰 목적은 데이터 조회 시간을 단축하기 위함이다.
- 성능 문제가 아니라면 추출 속성을 사용하지 않는 것이 원칙이다. 왜냐하면 정합성이 떨어질 수 있기 때문이다.
속성 종류 - 시스템 속성
- 시스템 속성은 데이터(인스턴스)에 대한 추적, 감시를 위해 사용하는 속성이다. 해당 인스턴스를 누가 생성하고 언제 생성했는지, 누가 언제 수정했는지를 관리하는 속성이다.
- 시스템 속성은 데이터를 추적할 수 있는 용도로만 사용하는 것이 바람직하다. 시스템 속성에 업무적인 의미를 부여해 업무적으로 사용하지 않는 것이 좋다.
단일 값 속성과 다가 속성
-
단일 값 속성은 한 시점에 하나의 값만 가지는 속성이다. 이는 데이터는 원자 값이어야 한다는 원칙을 지킨 정상적인 속성이다.
-
다가 속성은 유사한 성격의 값을 복수로 가지고 있는 속성을 의미한다. 다가 속성은 대개 1정규화를 한다.
단순 속성과 복합 속성
-
단순 속성은 일반적인 정상 속성이다. 더 이상 분해될 수 없는 원자 값으로 이뤄져야 한다는 RDB의 기본 원칙에 부합되는 속성이다. 이때 원자 값은 논리적으로 의미가 있어야 한다.
-
복합 속성은 여러 의미를 가지는 속성이다.따라서 두 개 이상의 의미 있는 단순 속성으로 분해할 수 있는 속성을 말한다. 1 정규화 대상이다.
-
복합 속성을 판단하는 기준은 두 가지가 있다. 하나는 나눠서 의미가 있느냐 이고, 또 다른 하나는 업무에서 사용하는가 이다.
필수 속성과 선택 속성
- 속성은 값이 반드시 필요한 필수 속성과 값이 없을 수 있는 선택 속성으로 구분할 수 있다.
- 속성의 널 값 허용 여부를 분석하는 것은 속성에 대한 거의 마지막 결정이다.
베타 속성
- 베타 속성은 베타 관계와 유사한 개념으로 여러 속성에 저장된 값들이 상호 베타적일 때 또는 한 속성에 저장된 값이 어떤 기준을 ㅗ대하여 서로 베타적일때 이 속성을 베타 속서이라고 한다.
댓글남기기