open:da-sharp

DA

엔터티 이름만으로도 해당 엔터티가 어떤 집합인지 최대한 표현하고, 나머지 미진한 부분은 엔터티 정의에서 구체적으로 기술되어야 합니다. 엔터티 편집창에 대한 설명입니다.

  • 엔터티 : 엔터티의 이름(동일 편집창 내에서는 엔터티명의 중복을 허용 안 함)
  • 동의어 : 엔터티명을 대신하여 동일한 의미로 사용될 수 있는 Alias Name
  • 테이블 : 물리 테이블명
  • 보조명 : 엔터티의 보조명
  • 분류 : 엔터티에 대한 분류를 정의
    • Key : 최초부터 창조된 엔터티, 주로 데이터 발생의 주체나 목적어
    • Main : 업무의 주요 행위 데이터를 발생시키는 주체
    • Action : 실제 발생하는 내역 업무
  • Level : 엔터티의 분류 별 등급을 다시 정의하는 Level 로 분류를 정의하면 Level의 기본은 [1]로 설정 되며 엔터티의 분류를 정의하지 않으면 Level을 선택할 수 없음.
  • 단계 : 엔터티가 정의된 모델링의 단계를 선택. 엔터티 정의 시 기본적으로 [본질적] 단계를 설정
  • 유형 : 일반적인 엔터티의 유형은 Normal 이며, Pseudo, Additional, Export, Drop 중 해당되는 엔터티의 유형
  • 공유 : 엔터티에 대한 공유여부를 선택하며, 선택된 엔터티의 해당 모델이 A/R에 저장(Export)되는 이후부터 다른 모델 또는 사용자가 해당 엔터티를 공유할 수 있음
  • 표준화 : 표준화 대상 여부 체크(대상, 비대상, 상속)
  • 상태 : 엔터티 분석에 대한 작업의 진행 상태를 의미하며, 상태 코드는 사용자가 직접 추가하거나 삭제
  • 정의(Tab1) : 엔터티의 본질에 대한 설명
  • 데이터 처리형태(Tab2) : 엔터티의 생성, 삭제, 수정 규칙 등
  • 특이사항(Tab3) : 엔터티에 대한 특별한 내용ㅅ
  • Note(Tab4) : 엔터티 분석 과정상에서 엔터티 별로 Memo가 필요한 경우 내용
  • UDP(Tab5) : 각 개체 별로 기본 항목 이외에 필요한 항목을 사용자가 미리 정의
  • 발생주기 : 엔터티의 데이터 발생 주기를 선택
  • 월간발생량 : 매월 발생되는 엔터티의 평균 건수를 입력
  • 보존기한(월) : 엔터티의 데이터를 관리해야 하는 기간(월)을 입력
  • 총 건수 : 보존기한 내에서 발생될 수 있는 엔터티의 최대건수를 입려갛며, 월간 발생량과 보존 기한을 입력하면 자동으로 총 건수가 생성됩니다. 자동 생성된 건수는 직접 편집하여 수정해도 무방
  • 저장 : 엔터티에 대한 편집 내용을 저장
  • 취소 : 편집 내용을 취소하고 원래의 상태로 복원
  • 종료 : 편집 화면을 닫음
  • 서브타입 : 엔터티에 서브타입을 정의할 수 있는 서브타입 편집화면이 나타남
  • Auto Save :편집 내용 자동 저장
  • 처리 구분 : 삭제할 엔터티의 식별자에 대한 처리 방법을 선택
  • 대체 엔터티 : 처리구분이 대체 엔터티를 지정한 후 대상엔터티 삭제인 경우에 한해 선택이가까능하며, 삭제할 엔터티의 관계를 대체 또는 대신 할 수 있는 엔터티를 선택
  • 처리 : 부모 엔터티의 삭제 시 [처리구분]에서 선택한 방법에 의해 부모 엔터티의 식별자를 자신에게 상속/비상속 또는 대체 엔터티로 관계를 변경하고자 하는 엔터티는 체크 박스를 선택

데이터 모델 구성 3요소 중 하나로 엔터티 간의 업무적 연관성을 관계성(Relationship), 기수성(Cardinality), 선택성(Optionality)으로 표현하며 데이터의 참조 무결성을 보장하기 위해 매우 중요한 업무 규칙입니다.

  • 관계명 : 관계 명칭(3자 입장)
  • 부모 엔터티 기준 : 엔터티명을 대신하여 동일한 의미로 사용될 수 있는 Alias Name
  • 자식 엔터티 기준 : 자식 엔터티 기준으로 부모 엔터티의 관계 정의
  • 식별자 상속 : 부모 엔터티 식별자의 상속 여부를 정의
  • 관계 정의 시 마다 편집창 나타내기 : 관계 정의 시 마다 편집창 나타내기
  • 관계선 숨기기 : 관계를 숨기기
  • 유형 : 관계 유형
  • 정의(Tab1): 관계에 대한 정의(관계명 및 동사 정의 등)
  • 특이사항(Tab2): 관계에 대한 특별한 내용
  • 노트(Tab3): 관계별로 Memo가 필요한 경우 내용
  • 식별자지정(Tab4): 관계의 식별자 속성 리스트 정보
  • UDP(Tab5): 각 관계별로 기본 항목 이외에 필요한 항목을 사용자가 미리 정의
  • 확인 : 관계 편집 내용을 저장하며 창을 닫음
  • 취소 : 관계 편집 내용을 취소하고 원래의 상태로 복원
  • 관계 옵션 변경 : 관계 정의 시 색상 및 관계명/관계 동사의 위치 등을 변경

데이터 모델 구성 3요소 중 하나로 특정한 엔터티의 본질을 이루는 고유한 특성이나 성질이며 엔터티 내에서 관리하고자 하는 정보 항목들을 의미합니다. 그리고 속성도 일종의 집합이고 관계도 일종의 속성이기도 합니다.

속성 편집창에서 속성명 입력 후 정의 항목들을 체크박스로 선택 시 모델에 아래와 같은 기호가 표시됩니다.

  • $ : 식별자 비상속
  • # : 실질 식별자(PK)
  • * : 반드시 값이 존재해야 하는 (Mandatory) 속성
  • (#) : 보조 식별자
  • 0 : 값을 반드시 가지지 않을 수 있는(Optional) 속성
  • 속성명 : 속성의 이름을 입력하는 항목이며, 한 엔터티에는 동일한 속성명의 중복 입력은 허용되지 않음
참고
한 엔터티에는 동일한 속성명의 중복 입력이 되지 않습니다.
  • 방향키 : [속성명]란에 존재하는 삼각형의 방향키 두 개는 속성의 위치를 이동시킬 때 사용하는 버튼이며, 순서를 바꾸고자 하는 속성(들)을 선택 후 방향키 버튼을 클릭하면 순서가 변경
  • 컬럼명 : 컬럼의 이름을 입력하는 항목이며, 한 엔터티에는 동일한 컬럼명의 중복 입력은 허용되지 않음.
  • 본질 식별자 : 논리모델의 본질적 모델링 단계에서 본질적인 엔터티의 유일성을 나타내주는 속성인 경우 선택
  • 실질 식별자 : 논리모델의 실용적 모델링 단계에서 실질적인 엔터티의 유일성을 보장해주는 속성인 경우 선택
  • 표준화 대상 : 표준 대상 여부를 선택(대상, 비대상, 상속)
  • 동기화 : Wordict을 통해 표준화 했을 경우 체크박스가 선택이 되어짐(입력 항목 아님)
  • 도메인 : Wordict을 통해 표준화 했을 경우 도메인 정보가 보여짐(입력 항목 아님)
  • Not Null: 속성의 값이 Null을 허용하지 않는 속성인 경우 선택하며, 실질 식별자 속성인 경우는 자동 체크됨
  • 비상속 : 실질 식별자 속성(관계)인 경우만 선택이 가능하며, 선택한 식별자는 자식 엔터티에게 식별자를 상속 시키지 않음
  • 유형 : 속성의 유형을 선택하며, Derived 를 선택하면 Derive 내용을 정의할 수 있는 편집화면이 나타나고 내용을 반드시 정의한 경우만 Derived 속성으로 표현이 가능
  • 보조 식별자 : 식별자의 역할을 대신할 수 있는 속성인 경우 선택하며, 관계 속성인 경우는 선택을 허용하지 않음
  • 핵심 : 핵심 속성으로 관리하고자 하는 경우 선택
  • 비고 : 리버스 모델인 경우 관계 유형 및 Derive 엔터티명 등을 보여줌(입력 항목 아님)

5. 상세 논리 모델

데이터 모델 정규화란 이상 현상을 야기하는 속성 간의 종속 관계를 제거하기 위해 엔터티를 작은 여러 엔터티로 손실 없이 분해하는 과정을 의미합니다. 이러한 정규화 절차를 통해 상세 논리 데이터 모델링 할 때 속성의 일부가 다른 엔터티로 독립되는 순간 독립된 엔터티에 대한 식별자 선택 및 정규활르 지원합니다.

속성의 구조화(계층)는 속성의 표현과 그 속성에 대한 Detail 표현을 가능하게 합니다. 구조화는 점선(Inclusive)과 실선(Exclusive)으로 표현되며, 그 표현 자체가 구조화 타입을 나타냅니다.

서브타입 표현 시 다 차원/다 계층으로 표현이 가능합니다. 즉 하나의 서브타입을 계층적 구성 및 입체적으로 표현하여 비즈니스 규칙을 정밀하게 표현할 수 있습니다.

  • 서브타입 구분 속성명 : 서브타입의 구분을 위해 사요하는 속성을 입력
  • 서브타입 명 : 서브타입 엔터티의 이름을 입력
  • 구분값 : 서브타입을 특정 값으로 치환 시에 사용되는 값을 입력
  • 감춤 : 정의한 서브타입을 편집창에 나타내지 않고자 할 경우 선택
  • Inclusive : 선언하는 서브 타입간 교집합이 존재하는 경우는 선택
  • Subtype Set Hide : 엔터티에서 1차 서브타입이 2차 이상의 하위 서브타입을 가지는 경우 서브타입 Set을 표시하지 않을 때 선택
  • 설명 : 서브타입 Set에 대한 내용을 설명
  • 삽입 : 그리드에서 사용자가 원하는 위치에 칸 벌림 하여 서브타입을 입력
  • 삭제 : 선택된 행(들ㅇ)의 서브타입을 삭제
  • 확인 : 서브타입에 대한 편집 내용을 저장
  • 취소 : 편집된 내용을 취소 시킨 후 편집화면을 다음

과거 계층 구조 서브타입이 제공되기 전에 작성한 것들을 하나의 계층으로 통합할 수 있는 기능입니다. 별도로 정의되어 있던 서브타입을 하나로 통합합니다.

6. 물리 모델

완성한 논리 모델을 기반으로 물리 모델을 진행합니다. 이러한 변환 과정은 따로 필요한 것은 아니며 마우스 오른쪽 메뉴를 선택함으로써 물리 모델로 변환이 가능합니다. 이 때, 물리 모델 변환 시 물리 모델링에서 필요한 메뉴가 활성화되며 하나의 논리적 집합(엔터티 혹은 서브타입)은 다양한 물리 모델을 생성할 수 있습니다.

서브타입의 테이블 전환 방법
- 하나의 테이블로 통합(Roll up)
- 서브타입 단위 테이블 생성(Roll Down)
- 슈퍼/서브타입 각각 테이블 생성

물리 모델 전환 시 하나의 논리적 집합(엔터티 혹은 서브타입)이 슈퍼/서브타입 단위 테이블로 생성되는 방법입니다.

주의
반드시 하나의 테이블로 통합되어 생성되는 물리 모데롤 변환 후(즉, 물리 모델을 생성 후) 변환시킬 논리 모델의 Object인 엔터티를 선택해야 분할 아이콘이 활성화되면 절차에 따라 진행이 가능합니다.

물리 모델에서 논리 모델의 엔터티가 테이블로 변환됩니다. 즉, 기본적으로 논리 모델의 정보를 물리 모델로 가져옵니다.

  • 엔터티 : 논리모델에서 작성한 엔터티의 이름
  • 동의어 : 엔터티명을 대신하여 동일한 의미로 사용될 수 있는 Alias Name로 논리모델에서 작성
  • 테이블 : 물리 테이블명(동일 편집창 내에서는 테이블명의 중복을 허용 안 함)

무결성 설계 목적은 데이터의 정확성, 유효성, 일관성, 신뢰성을 위해 무효 갱신으로부터 데이터를 보호하기 위함입니다. 즉, 데이터가 테이블에 입력, 삭제, 수정될 때 자식 또는 부모 테이블의 처리에 대한 규칙을 정의하는 기능으로 물리적 스키마의 생성은 삭제 규칙에 한해 선택하는 경우만 스키마를 지원합니다. RI Rule를 Setting 하지 않으면 Default 로 설정 해 놓은 Rule이 적용됩니다.

입력 규칙 목록

항목 설명
Dependent 대응되는 부모 엔터티에 레코드가 있는 경우에만 자식 엔터티에 입력을 허용
Automatic 자식 엔터티 레코드의 입력을 항상 허용, 대응되는 부모 건이 없는 경우 이를 자동 생성
Default 자식 엔터티 레코드의 입력을 항상 허용, 대응되는 부모 건이 없는 경우 참조키(FK)를 지정된 기본 값으로 처리
Customized 특정한 검증 조건이 만족되는 경우에만 자식 엔터티 레코드의 입력을 허용
No Effect 자식 엔터티 레코드의 입력을 조건 없이 허용

삭제/수정 규칙 목록

항목 설명
Restrict 대응되는 자식 엔터티의 레코드가 없는 경우에만 부모 엔터티 레코드 삭제를 허용
Cascade 부모 엔터티 레코드의 삭제를 항상 허용하고, 대응되는 자식 엔터티의 레코드를 자동 삭제
Nullify 부모 엔터티 레코드의 삭제를 항상 허용, 대응되는 부모 엔터티의 레코드가 존재하면, 그것의 참조키(FK)를 NULL로 수정
Default 부모 엔터티 레코드의 삭제를 항상 허용, 대응되는 자식 엔터티의 레코드가 존재하면, 그것의 참조키(FK)를 지정된 기본 값으로 수정
Customized 특정한 검증 조건이 만족되는 경우에만 부모 엔터티 레코드의 삭제를 허용
No Effect 부모 엔터티 레코드의 삭제를 조건 없이 허용

각 모델당 공통적으로 테이블에 쓰이는 시스템 컬럼들을 추가하는 기능을 지원합니다. 추가된 시스템 컬럼들은 자동으로 논리 영역에 가상 엔터티로 생성이 됩니다.

7. Reverse 및 Forward

현재 운영중인 데이터베이스의 스키마가 존재하지 않거나 기존에 가지고 있던 다이어그램의 버전이 너무 오래되어 의미가 없을 경우 운영중인 데이터베이스의 스키마 정보를 DA#에서 그대로 가지고 와서 기존 모델에 대한 분석을 통하여 TO-BE 에 활용할 수 있습니다.

참고
파티션을 도입하게 된 배경과 파티션의 기본적인 역할은 무엇인가?
대용량의 Table을 Partition이라는 보다 작은 단위로 나눔으로써 데이터 액세스 작업의 성능향상을 유도하고 데이터 관리를 보다 수월하게 하고자 하는 개념입니다. 물론 무조건 파티션만 한다고 파티션이 가지고 있는 이점을 모두 취할 수 있는 것은 아닙니다. 잘못된 인덱스가 오히려 처리 속도에 나쁜 영향을 미치듯이 파티션 키를 어떻게 구성하느냐에 따라 많은 비효율을 초래할 수도 있기 때문에 파티션 키의 선정은 다음과 같은 기준에 따라 전략적인 관점의 세심한 판단이 요구됩니다. 

첫째, 성능 향상을 위하여 어떤 부분을 고려해야 하는가?
데이터를 처리하는 방법은 크게 인덱스를 경유하는 Random Access 방법과 인덱스를 경유하지 않고 전체 데이터를 scan하는 두 가지 방법이 있습니다. 데이터의 분포도가 좋아서 인덱스를 사용할 수 있는 상황이라면 문제될 것이 없지만 분포도가 나빠서 인덱스를 사용할 수 없다면 인덱스를 사용하지 않고도 필요한 부분만 액세스를 할 수 있도록 Partitioning 이 이루어져야 합니다. 또한 결합 파티션 키인 경우에는 구성 대상 컬럼의 선정 및 컬럼들간의 결합순서도 고려하여야 합니다. 즉, 액세스 유형에 따라 Partitioning이 이루어질 수 있도록 파티션 키를 선정해야 합니다.

둘째, 데이터 관리의 용이성을 위하여 어떤 부분을 고려 해야 하는가?
이력을 관리하는 데이터는 데이터 관리 전략 및 업무규칙에 따라 그 수명이 다하게 되면, 별도의 저장장치에 기록되고 데이터베이스에서 삭제되게 됩니다. 이력 데이터는 활용가치에 따라 생성주기와 소멸주기가 결정되게 되고 그 주기에 따라 데이터베이스를 정리해야만 합니다. 만약 사용자가 사용하지 않는 데이터를 삭제해야 되는데 그 데이터가 여러 파티션에 분산되어 있다면, 그 데이터를 추출하여 삭제하는데 많은 노력과 시간이 필요할 것입니다. 하지만 파티션이 데이터의 생성주기 또는 소멸주기와 일치한다면 파티션을 대상으로 작업이 이루어져 관리가 용이하게 됩니다. 즉, 이력 데이터의 경우에는 생성주기 또는 소멸주기가 파티션과 일치하여야 합니다. 
참고
인덱스와 클러스터 정의?
인덱스와 클러스터는 데이터 검색에 대한 처리 속도를 향상시키기 위한 물리적 객체입니다. 일반적으로 인덱스는 해당 인덱스 컬럼의 value 의 분포도에 따라서 고밀도 인덱스(dense index)와 저밀도 인덱스(sparse index)으로 구분됩니다. 대표적인 고밀도 인덱스는 B-Tree 인덱스로서 여기서 언급하는 인덱스를 의미하며 저밀도 인덱스는 클러스터 인덱스를 의미합니다. B-Tree 인덱스와 클러스터는 다음과 같은 개념 및 활용의 차이가 있습니다.

B-Tree 인덱스의 특징?
인덱스는 별도의 저장 공간을 가지며 인덱스 컬럼의 값(value)과 해당 테이블의 논리적 주소(rowid)로 구성 됩니다. 인덱스와 실제 데이터가 저장된 테이블이 분리되어 있으므로 인덱스를 경유한 데이터 검색 시에는 랜덤 액세스가 발생하며 다량 데이터 검색시의 빈번한 랜덤 액세스는 성능 부하의 주요원인이 됩니다. 데이터의 밀집도(clustering factor)는 인덱스의 랜덤 액세스에 지대한 영향을 미치며 밀집도가 양호한 경우에는 그렇지 않은 경우에 비해서 랜덤 액세스의 부담이 감소합니다. 그리하여 주로 소량 범위의 데이터를 검색할 때 또는 검색 조건에 해당하는 전체 데이터의 일부분만 검색하여 운반단위만 채우면 추출하는 부분 범위 처리시에 사용합니다.

클러스터의 특징?
클러스터는 검색 속도 개선을 위해 데이터의 밀집도가 양호하도록 동일 값(value)을 클러스터 키에 의해 동일 공간에 저장하는 물리적 저장개념입니다. 동일 공간에 데이터를 저장하기 위하여 정의한 테이블의 컬럼을 클러스터 키라고 하며 클러스터 인덱스는 클러스터 키에 대해서 생성됩니다. 입력되는 데이터는 클러스터 키에 의해 해당 클러스터의 위치에 저장되므로 데이터의 검색/저장 등 모든 데이터 처리 작업은 클러스터 인덱스를 경우하게 됩니다. 클러스터에 저장되는 테이블은 1개 이상이 가능하며 2개 이상의 테이블이 저장될 경우에는 해당 테이블간의 연결고리 컬럼이 클러스터 키가 됩니다. 클러스터 키는 저장공간에 별도로 저장되지 않으므로 전체적인 저장공간이 절약됩니다. 클러스터는 인덱스와는 달리 랜덤 액세스의 부가가 없으므로 주로 다량 데이터 검색 시에 사용 됩니다. 

8. 개체 유형 활용

실전에서 활용 가능한 유형별 엔터티입니다.

bpcny9

  • 제거(Drop): 삭제(할) 엔터티, 비활성 엔터티, 미사용 엔터티
  • 외부(External): 타사(외부) 제공 정보 엔터티, 타 시스템 엔터티, 이기종 환경 소속 엔터티
  • 가상(Pseudo): 가상의 논리적인 집합, 논리적인 통합 표현 시 사용, 존재하지 않는 가상 집합
  • 추가(Additional): 탄생중인 에터티, AS-IS에 추가할 엔터티, ERP 패키지에 추가한 엔터티
    ```

관계선 단순활르 위해 사용되는 엔터티 유형으로 관계에 의해 데이터 모델이 매우 복잡한 경우 모델의 가독성을 높이기 위해 주로 사용됩니다. 이는 동일 편집창 즉 동일 주제영역 내에서만 생성이 가능합니다.

  • 다른 엔터티와의 관계 정의 시 자식 엔터티로 정의 될 수 없으며 오로지 부모 엔터티로 정의 됨
  • Recursive 관계는 정의 할 수 없음
  • 직접 서브타입을 정의할 수 없으며 서브타입을 해지/추가하는 것도 불가능함
  • 팀 모델링을 위해 생성해 놓은 공유 서버로 엔터티의 내용을 Export 할 수 없음
  • 편집이 가능하나 편집을 하게 되면 복제본을 생성시킨 원본 엔터티도 동일하게 내용이 편집됨

대체 엔터티의 원본이 될 엔터티와 대체 엔터티로 선언할 엔터티간에 관계를 정의합니다 .이때 정의한 관계는 아무런 관계 정보를 정의하지 않습니다. 두 엔터티간의 관계는 관계로서의 의미는 없고 대체 엔터티로 선언하기 위한 사전 행위에 불과합니다. 또한 대체 엔터티는 원본엔터티가 가지고 있는 관계를 전혀 상속 받거나 상속 시켜줄 수 없으므로, 대체 엔터티 별로 필요한 관계를 모두 정의해야 합니다.

실전에서 활용 가능한 유형별 관계입니다.

0mdp3N

  • Between: 1:1 이든 1:n 이든 값과 값의 “=” 조인이 아닌 Between 조인 일 경우
  • Like: 1:1 이든 1:n 이든 값과 값의 “=” 조인이 아닌 Like 조인 일 경우
  • 가상(Pseudo): 가상의 논리적인 집합
  • Derived: SUM, COUNT, MAX 등의 성격을 가진 추출 관계
  • Primary Child: Primary Child 관계
  • Drop: 제거(할) 관계
  • Abnormal: Abnormal 관계
  • Substitute: 하나의 부모 개체에 대해 대체가 되는 관계

실전에서 활용 가능한 유형별 속성입니다.

UEUdcx

11. 표준화 적용

11.1 표준대상 선택

표준화 적용 시 표준 정보를 적용할 대상을 선택합니다. 주제영역, 엔터티, 속성, 컬럼 단위로 표준 대상을 설정하여 표준 동기화를 할 때 활용됩니다. 표준 대상의 종류는 상속/대상/비대상 3가지 종류로 구분됩니다.

표준 사전을 구축 시 정책, 표준, 지침 및 절차에 따라 표준 분류 체계를 한 개 이상 설정하여 데이터 표준화를 구축할 수 있습니다.


  • open/da-sharp.txt
  • 마지막으로 수정됨: 2020/06/02 09:25
  • 저자 127.0.0.1