본문 바로가기

데이터 Story/모델링 매뉴얼

배타 서브타입 설계 서브타입을 설계할 때는 특정 시점을 기준으로 설계하기 때문에 변경이력 데이터를 포함시키지 않고 현재 시점의 데이터로 판단한다. 서브타입이 배타 서브타입인지 중복 서브타입인지는 특정 시점을 기준으로 판단한다. 특정 시점에 어느 하나의 서브타입에만 속하는지(배타 서브타입) 여러 서브타입에 속할 수 있는지(중복 서브타입)에 따라 서브타입의 유형이 정해진다. 따라서 과거 데이터인 변경이력 데이터는 제외하고 현재 시점을 기준으로 판단해서 서브타입 유형을 설계한다. 데이터 성격이나 업무 요건은 서브타입 간에 중복 데이터가 없어야 하는데 변경이력 데이터로 인해 중복된 것처럼 보이는 경우가 있기 때문에 주의해야 한다. 사원은 정규직이거나 임시직이어야 한다는 업무 요건이 있다면, 아래 모델처럼 배타 서브타입으로 설계해야.. 더보기
실체 엔터티 설계 보이거나 만질 수 있는 실제의 물체(物體)를 나타내는 데이터는 실체 엔터티로 설계한다. 엔터티를 정의할 때 엔터티에서 관리하는 데이터가 실제로 존재하는 물체인지, 만질 수 있는 물건인지를 가장 먼저 따져서 실체를 나타낸다면 실체 엔터티로 설계한다. 실체 엔터티는 엔터티 명에 ‘실체’ 접미어를 붙인다. [그림1] 서적실체 엔터티는 만질 수 있는 실체인 책을 관리하는 엔터티다. [그림1] 서적실체 엔터티는 실체 엔터티이기 때문에 엔터티 명에 ‘실체’ 접미어를 붙인다. 책을 한 권씩 개별적으로 다룬다면 서적실체 엔터티가 필요하다. 바코드 정보가 있어 해당 책을 관리할 수 있다. 하지만 서적실체 엔터티에는 책에 대한 이름이나 저자 등과 같은 기본 정보가 없다. 이런 정보는 책을 상징하는 정보로서 실체 정보는 아.. 더보기
종속 엔터티의 엔터티 명 엔터티에 속한 속성이 많을 때, 성능이나 관리 측면에서 좋지 않은 영향을 미친다면 일부 속성을 별도의 엔터티로 분리할 수 있다. 이때 속성 성격에 따른 분리가 아닌 사용 빈도에 따른 분리일 경우, 즉 유사한 성격의 속성으로 분리할 수 없고 자주 사용되는 않는 속성, 덜 중요한 속성으로 분리할 때는 엔터티 명을 ‘상위 엔터티 명+상세(Suffix)’ 형식으로 정한다. 이런 속성으로 구성된 엔터티는 특별한 데이터 성격이 없기 때문에 엔터티 명을 정하기가 어렵다. 이때는 상위 엔터티 명에 ‘상세’라는 접미어를 붙어서 정한다. [그림1] 고객 엔터티에 속성이 많아 일부 속성을 별도의 엔터티로 분리해야 한다고 가정한다. [그림1] 엔터티를 속성 기준으로 수직 분리할 때는 유사한 성격의 속성을 분리하는 것이 바람직.. 더보기
기준 엔터티의 엔터티 명 기준 엔터티는 기준 데이터임을 명확하게 구분하기 위해서 엔터티 명에 ‘기준’이라는 단어를 접미어(Suffix)로 붙인다. 그리고 접미어 앞에는 데이터 성격을 나타내는 명사형의 단어를 사용하며, 필요 시 명사형 단어 앞에 수식어를 사용한다. [그림1] 환율기준 엔터티는 기준 정보로서 환율 데이터를 관리하는 엔터티다. [그림1] 기준 데이터로 관리하려는 대상이 환율이기 때문에 ‘환율’은 데이터의 성격을 나타내는 명사형의 단어다. 데이터 성격은 기본 속성을 보면 알 수 있다. 기본 속성이 환율을 의미하기 때문에 데이터 성격을 나타내는 명사형의 단어는 ‘환율’이다. 그리고 명사형의 단어 앞에 수식어가 필요 없기 때문에 접미어인 ‘~기준’을 사용해 ‘환율기준’이라고 붙인다. [그림2] 고객수수료율기준 엔터티는 고.. 더보기
역할 엔터티의 엔터티 명 실체의 본질적인 성격이나 특성을 관리하는 엔터티가 아닌, 실체가 하는 역할을 관리하는 엔터티의 이름은 ‘대상 실체 엔터티 명+역할 의미+담당 실체 엔터티 명’ 형식으로 정한다. 즉 양쪽 실체 엔터티 명(실체라는 접미어를 제외한 명)과 실체가 하는 역할을 의미하는 단어를 사용해서 엔터티 명을 정한다. 이 엔터티는 실체 자체를 의미하지 않으므로 엔터티 명에 접미어 ‘실체’를 붙이지 않는다. [그림1] 계좌관리사원 엔터티는 계좌를 관리하는 역할을 하는 사원을 관리하는 엔터티다.[그림1] 계좌를 관리하는 사원이든, 사원에게 관리되는 계좌이든 실체 자체를 의미하지 않고, 실체의 역할을 의미한다. 역할을 담당한 실체는 사원이기 때문에 ‘~사원’처럼 엔터티 명을 정하며 ‘관리’라는 역할의 대상은 ‘계좌’다. 따라서 .. 더보기
소속 엔터티의 엔터티 명 실체 자체를 관리하는 엔터티가 아닌, 실체의 소속 데이터를 관리하는 엔터티의 이름은 ‘대상 실체 엔터티 명+소속 실체 엔터티 명’ 형식으로 정한다. 엔터티 명 앞에는 어디에 소속됐는지를 의미하는 대상 엔터티를 사용하고, 뒤에는 소속된 엔터티를 사용해서 정한다. 위와 같이 소속을 나타내는 데이터는 실체 엔터티가 아니기 때문에 ‘실체’ 접미어는 붙이지 않는다. [그림 도서관직원] 도서관직원 엔터티는 도서관에 소속된 직원을 관리하는 엔터티다. [그림 도서관직원] 도서관직원 엔터티에서 관리하려고 하는 데이터는 직원 데이터인데, 도서관에 소속된 직원이다. 따라서 소속된 실체는 직원이고 어디에 소속됐는지를 의미하는 대상은 도서관이므로 엔터티 명은 ‘도서관직원’으로 정한다. [그림 예산부서사원] 예산부서사원 엔터티는.. 더보기
실체 엔터티의 엔터티 명 실체 엔터티는 실체 엔터티임을 명확하게 구분하기 위해서 엔터티 명에 ‘실체’라는 단어를 접미어(Suffix)로 붙인다. 그리고 접미어 앞에는 엔터티 성격을 나타내는 명사형의 단어를 사용한다. [그림 실체엔터티명] 장비실체 엔터티는 장비를 관리하는 엔터티다. [그림 실체엔터티명] 장비실체 엔터티는 장비라는 만질 수 있는(Tangible) 실제의 물체(物體)를 관리하는 엔터티로 실체 엔터티다. 명사형인 ‘장비’와 접미어인 ‘실체’를 붙여 ‘장비실체’로 엔터티 명을 정한다. 명사형과 동사형의 단어를 구분하는 방법은 ‘~했음’을 붙여 자연스러우면 명사형이 아니라 동사형이다. ‘장비’라는 단어는 명사형이기 때문에 ‘~했음’을 붙이면 의미가 통하지 않는다. ‘~했음’을 붙여 의미가 통하는 동사형의 단어는 행위 엔터.. 더보기
주 식별자 설계 원칙-변경되지 않는 속성 엔터티의 주 식별자는 다른 엔터티의 외래 식별자(Foreign Identifier)가 되며, 외래 식별자 값에는 주 식별자에 존재하는 값을 사용해야 한다. 따라서 만약 주 식별자 속성 값이 바뀌면 그 값을 사용한 하위 엔터티의 외래 식별자 속성 값도 바꿔야 한다. 그래야 참조 무결성이 지켜진다. 하지만 외래 식별자 속성 값을 바꿔주는 것은 쉽지 않다. 대상 엔터티가 한없이 늘어날 수 있으며, 해당 엔터티의 인스턴스도 정확히 지정해야 하기 때문에 쉽지 않은 작업이다. 잘못된 설계로 인해 불가피하게 외래 식별자 속성 값을 바꿔주는 작업을 하는 경우는 있지만, 그렇게 하도록 설계하는 것은 그 자체로 잘못된 설계다. 주 식별자 속성 값이 바뀌지 않도록 주 식별자를 선정하는 것은 주 식별자 선정의 중요한 원칙이다.. 더보기
사원 엔터티의 업무 식별자 사원 엔터티의 업무 식별자는 주민등록번호 속성만이 되도록 설계한다. 그래서 퇴사한 후 재입사하더라고 같은 식별자를 사용하기 때문에 다른 사원이 되지 않도록 한다. 만약 퇴사한 사원이 재입사했을 때 다른 사원으로 인식한다면, 즉 사원번호가 달라진다면 사원 엔터티의 업무 식별자는 ‘주민등록번호+입사일자’가 된다. [그림1] 릴레이션이 이를 나타낸다. [사원] #사원번호 사원명 주민등록번호 입사일자 퇴사일자 12345 홍길동 1234567890123 2045-05-01 {null} 23456 김길동 2345678901234 2025-01-30 {null} 34567 이길동 6789012345678 2027-10-15 {null} [사원이력] 더보기
업무가 변경될 가능성이 있을 때는 이를 감안해서 인조 식별자를 사용 업무가 변경될 가능성이 있을 때는 이를 대비해서 모델을 유연하게 만드는 인조 식별자를 주 식별자로 설계한다. [그림1] 계좌 엔터티의 주 식별자인 세 개 속성을 붙여서 계좌번호로 사용한다. [그림1] 현재 업무에 의해서 계좌번호는 10자리 번호이며, 이를 3-2-5 체계로 구성해서 주 식별자를 세 개의 속성으로 설계했지만 향후에 계좌번호 체계가 3-8 등으로 바뀔 수 있으며, 상품번호 자체가 3자리로 변경될 수 있다면 [그림1] 계좌 엔터티로는 대처하기 어렵다. 위와 같이 업무가 바뀜으로써 주 식별자까지 변경되는 상황을 방지하기 위한 방법 중 하나가 [그림2] 계좌 엔터티처럼 인조 식별자를 사용하는 것이다. [그림2] [그림2] 계좌 엔터티와 같이 인조 식별자를 사용하면, 체계가 3-2-5에서 3-8 정.. 더보기