티스토리 뷰

엔티티 상세화

 

1.   식별자(UID, Unique Identifier) 확정

가.  본질 식별자

엔티티 상세화 단계에서 저으이되어질 핵심, 액션(하위) 엔티티에 대한 본질 식별자를 정의한다.

본질 식별자를 정의하는 방법은 키 엔티티와 행위 엔티티가 서로 다르다. 행위 엔티티를 정의하는 방법에는 상황에 따라 하향식과 상향식으로 접근하는 방식을 적용할 수 있다. 키 엔티티는 부모가 없이 창조된 집합이므로 식별자 또한 창조시켜 주어야 한다. 그러나 행위엔티티는 항상 부모가 누구인지를 확인하는 방식으로 진행된다.

 

1)     키 엔티티의 본질 식별자

2)     절대 종속/상대 종속 의미
절대 종속과 상대 종속은 나를 태어나게 하는 데 절대적인 영향을 주었는지, 그렇지 않는지를 따지는 것이다.

3)     직접 종속/간접 종속 의미
부모 엔티티와의 관계가 1촌이면 직접 종속이고, 1촌 이상이면 간접 종속이라고 볼 수 있다.

4)     행위 엔티티의 본질 식별자
절대 종속이면서도 직접 종속인 것을 찾고자하는 것이며, 결국은 자신을 태어나게 한 근본을 찾는 것이다.


 

나.  후보 식별자 도출

하나의 엔티티 내에는 식별자로 사용할 수 있는 하나 이상의 식별자가 있다. 이 중에서 하나가 식별자로 선택되게 된다. 나머지 식별자들을 후보 식별자(Candidate UID, 방법론에 따라서는 CK 혹은 Candidate Key 라고도 하지만 현재 단계에서 Key라는 표현보다는 식별자라는 표현이 더 적절하다.)라고 한다.

 

-       후보 식별자들은 다음과 같은 조건을 만족해야 한다.

1)     각 인스턴스를 유일하게 식별할 수 있어야 한다.

2)     나머지 속성들을 직접 식별할 수 있어야 한다.

3)     NULL이 될 수 없다.

4)     후보 식별자로 속성을 집합을 선택하는 경우에는 개념적으로 유일해야 한다.

5)     후보 식별자의 데이터는 자주 변경되지 않는 것이어야 한다.

 

다.  대체(보조) 식별자

대체(보조) 식별자란 원래의 식별자를 대신할 수 있는 또 다른 속성들이나 관계(관계속성)를 말한다. 특히 대체(보조) 식별자는 여러 참조 엔티티 중에서 원래의 식별자 보다 대체(보조) 식별자로 연결을 맺는 것이 자신에게는 훨씬 유리한 경우에 의미가 있게 된다.

 

라.  인조 식별자 지정

인조 식별자란 식별자 확정 시 기존의 본질 식별자를 그대로 실질 식별자로 인정할 수 없는 여러 가지 상황이 발생했을 때, 전부 혹은 일부를 임의의 값을 가진 속성들로 대체하여 새롭게 구성한 식별자를 말한다.

 

-       인조 식별자는 다음과 같은 기준을 가지고 지정하는 것이 바람직하다.

1)     최대한 범용적인 값을 사용한다.

2)     유일한 값을 만들기 위한 인조 식별자를 사용한다.

3)     하나의 인조 식별자 속성으로 대체할 수 없는 형태를 주의한다.

4)     편의성 ∙ 단순성 확보를 위한 인조 식별자를 사용할 수 있다.

5)     의미의 체계화를 위한 인조 식별자를 사용할 수 있다.

6)     내부적으로만 사용하는 인조 식별자

 

마.  식별자 확정

1)    UID BARD의 두 가지 의미

가)   식별자로서의 역할
엔티티 자신의 입장에서 보았을 때 자신의 개체들을 다른 것들과 구별될 수 있도록 유일한 값을 만드는 데 일조를 한다는 의미이다.

나)   정보로서의 역할
참조하는 엔티티의 입장에서 보았을 때 상대방의 식별자를 상속 받았기 때문에 자신이 보유한 정보가 증가했다는 의미도 가지고 있다.

 

2)    UID 상속과 단절의 원리

식별자 확정이란 단지 자기 식별자의 형태를 결정한다는 단순한 의미로만 생각해서는 안된다. 데이터 모델이 복잡한 업무로 인해 어쩔 수 없이 복잡해지더라도 식별자 상속이 전략적으로 이루어진다면 나중에 데이터를 처리할 때의 실제 액세스 단계에서는 훨씬 간편하게 만들 수 있다.

즉, UID의 적절한 상속과 단절 전략은 실질적인 처리의 단순화를 가져다 줄 수 있으므로 그 전략적 가치를 가지고 있다.




 

3)    식별자 확정 절차

하향식(Top-down) 방식, 즉 상위 엔티티로부터 시작해 하위 엔티티로 순차적으로 결정해 가는 것이 좋다. 식별자 상속이란 상위에서 하위로 이루어지기 때문이다.

가)   키 엔티티 식별자 확정
부모를 가지지 않는 최상위 엔티티이므로 서로 독립적으로 식별자를 확정할 수 있다.

나)   메인 엔티티 식별자 확정
메인 엔티티는 해당 업무의 근본이 되는 엔티티라고 할 수 있으므로 자산이 하위에 거느리고 있는 수많은 엔티티의 상황을 종합적으로 감안한 전략적인 결정을 해야 할 것이다. 경우에 따라서는 전체를 대신하는 인조 식별자를 생성하기도 한다.

다)   하위 엔티티 식별자 확정
이런 부류의 엔티티는 가능하다면 인조 속성을 많이 사용하지 않는 것이 바람직하다.

 

2.   정규화(Normalization)

가.  정규화의 의미

n  잘 만들어진 데이터 모델이라고 해도 엔티티에 데이터를 삽입, 수정, 삭제할 때 오류가 발생할 개연성을 가지고 있다. 이러한 것들을 통칭해 변경 이상(Modification Anomaly)이라 한다. 여기에는 구체적으로 삽입 이상(Insertion Anomaly), 수정 이상(Update Anomaly), 삭제 이상(Dele-tion Anomaly) 등이 있다.

n  변경 이상이 발생하는 엔티티를 그대로 운용하게 되면 데이터가 신뢰할 수 없는 값들로 채워질 가능성이 있다. 즉, 데이터의 일관성, 무결성을 해칠 가능성이 있다.

n  정규화 과정을 통해서 변경 이상의 엔티티를 정규화된 엔티티로 변환하게 된다.


1)     입력 이상
별도의 사실이 발생하기 전까지 원하는 데이터를 삽입할 수 없음. 어떤 데이터를 삽입하려고 할 때 불필요하게 원하지 않는 데이터도 함께 삽입된다.

2)     삭제 이상
일부 정보를 삭제함으로써 유지되어야 할 정보까지도 삭제되는 연대 삭제가 발생한다.

3)     갱신 이상
일부 속성 값을 갱신 함으로써 원하지 않는 정보의 이상 현상(무결성 파괴, 정보의 모순성)이 발생한다.

 

나.  정규화의 장점

1)     중복 값이 줄어든다.

2)     NULL 값이 줄어든다.

3)     복잡한 코드로 데이터 모델을 보완할 필요가 없다.

4)     새로운 요구사항의 발견 과정을 돕는다.

5)     업무 규칙의 정밀한 포착을 보증한다.

6)     데이터 구조의 안정성을 최대화한다.

 

다.  정규화 단계

1)    1차 정규형(1NF, First Normal Form)

가)   정의

n  모든 속성은 반드시 하나의 값을 가져야 한다. 즉, 반복 형태가 있어서는 안된다.

n  각 속성의 모든 값은 동일한 형식이어야 한다.

n  각 속성들은 유일한 이름을 가져야 한다.

n  레코드들은 서로 간에 식별 가능해야 한다.

나)   정규화 작업



n  고객 엔티티의 계약일 속성의 값이 여러 건이 된다면 1차 정규형을 위배하는 것이 된다.

n  어떤 속성의 다수의 값을 가지고 있다면 M:1 관계의 새로운 엔티티를 추가한다.

n  관계형 모델에서는 관계(Relation) 정의상 한 속성이 하나의 값만을 가져야 한다. 그러므로 비정규형 관계는 엄밀히 말하면 관계로 간주할 수 없다.

n  비정규형 관계가 관계로서의 모습을 갖추기 위해선 여러 개의 복합적인 의미를 가지고 있는 속성이 분해되어 하나의 의미만을 표현하는 소성들로 분해되어야 한다. 즉, 속성의 수가 늘어나야 한다.

n  비정규형 관계가 관계로서의 모습을 갖추기 위해선 하나의 속성이 하나의 값을 가질 수 있어야 하며, 이 조건을 만족시키기 위해선 로우(Row)가 늘어나야 한다. 또는 다른 관계로 분리되어야 한다.

n  분석 또는 모델링 진행 과정에서 발생하며, 최종적인 모델링 완성 단계에서는 나올 수 없다. 그러나 분석(모델링) 초기 단계에는 상세히 분해된 속성보다는 위와 같은 레벨의 속성 추출이 복잡도를 줄일 수 있으므로 실전에서는 효율적이고 유리하게 이용될 수도 있다.

 

2)    2차 정규형(2NF, Second Normal Form)

가)   정의

n  식별자가 아닌 모든 속성을 식별자 전체 속성에 완전 종속되어야 한다.

n  이것을 물리 데이터 모델의 테이블로 말하면 기본키가 아닌 모든 칼럼이 기본키에 종속적이어야 2차 정규형을 만족할 수 있다는 것이다.

나)   정규화 작업



n  식별자가 학번+코스코드로 이루어진 학과등록 엔티티에서 학번 속성에 평가코드, 평가내역 속성들이 종속적이다. 그렇기 때문에 이것은 2차 정규형을 위반하고 있는 것이다.

n  식별자가 학번+코스코드로 이루어진 학과등록 엔티티에서 코스코드 속성에 코스명, 기간 속성들이 종속적이다. 그렇기 때문에 이 또한 2차 정규형을 위반하고 있는 것이다.

n  의미상의 주어, 즉 본질식별자를 알아야 식별자 부분 종속인지를 구분할 수 있다.

n  속성의 의미가 명확해야 종속성을 비교할 수 있다.

n  어떤 속성 식별자 전체에 종속되어 있지 않으면 잘못된 위치이며 새로운 엔티티, 즉 상위 부모 엔티티를 생성하고 UID BAR를 상속받게 된다,

 

3)    3차 정규형(3NF, Third Normal Form)

가)   정의

n  2차 정규형을 만족하고 식별자를 제외한 나머지속성들 간의 종속이 존재하면 안된다. 이것이 3차 정규형을 만족하는 것이다.

나)   정규화 작업



n  학과등록 엔티티에서 평가코드, 평가내역 속성들이 서로 간에 종속적이다. 즉, 평가내역 속성은 평가코드 속성에 종속적이다. 그렇기 때문에 이것은 3차 정규형을 위반하고 있는 것이다.

n  3차 정규형을 위반하고 있을 때에는 평가항목 엔티티처럼 부모 엔티티가 생성되고 그 부모 엔티티로부터 UID Bar가 없는 관계를 상속받게 된다.

 

4)    BCNF 정규형

가)   정의

n  모든 결정자가 키인 릴레이션이 BCNF이다. 반대로 어떠한 결정자 하나라도키가 아닌 릴레이션이라면 BCNF가 될 수 없다.

n  기존의 2차 정규형과 3차 정규형을 보완하려는 목적으로 만들어졌다. 즉, 부분 종석이나 이행 종속이 없는 3차 정규형도 변경 이상 현상이 나타날 수 있기 때문이고, 이것은 어떤 Non-Key속성이 결정자로 동작하기 때문에 발생한다.

나)   3차 정규형의 문제점

n  한 릴레이션에 여러 개의 후보키(Candidate Key)가 있으며,

n  모든 후보키가 적어도 둘 이상의 속성으로 이루어지는 복합(Composite)키 이며,

n  모든 후보키가 적어도 하나 이상의 공통 속성이 포함되는 경우이다.


다)   3차 정규형을 만족하고 BCNF가 아닌 경우

n  각 속성이 단 하나의 값으로 구성된 경우(1차 정규형)

n  Non-Key 속성인 D는 후보키(Candidate Key)인 A+B또는 B+C에 완전 함수 종속이므로 2차 정규형에 속한다.

n  또한 Non-Key 속성이 D 하나뿐이므로 Non-Key 속성 간의 종속 관계가 존재하지 않으므로 3차 정규형을 만족한다.

 

3.   M:M 관계 해소

가.  M:M 관계의 의미

M:M관계는 논리데이터 모델링 과정에서 많이 나타난다. 이러한 관계는 데이터 모델이 아직 덜 완성된 모습이라고 할 수 있다. 그래서 M:M관계는 최종적으로 완성된 데이터 모델에는 존재할 수 없는 형태라고 할 수 있다.

n  실제 업무 중 대부분은 M:M 관계이다. 즉, 기업이 관리하고 있는 많은 데이터 중에서 기업의 업무 내용에 해당하는 데이터가 이러한 M:M 관계로 표현되고 향후에 모델링이 더 진행됨에 따라 이것이 해소된다.

n  키 엔티티와 키 엔티티 간에는 대부분 M:M 관계이다. 그래서 데이터 모델 상세화 단계에서 이러한 M:M 관계가 해소되면서 액션 엔티티가 새롭게 도출되기도 한다.

n  지속적으로 발생되는 대다수의 엔티티는 M:M 관계이다. 즉, 기업의 업무 내용을 관리하는 데이터는 대부분 이러한 관계에 의해서 생겨난 엔티티라고 볼 수 있다.

 

나.  M:M 관계 해소의 의의

M:M 관계는 불특정 관계로도 알려져 있으며, 데이터 구조에 있어서 어떠한 실제적 방법으로도 구현이 불가능하다. 이것이 이 관계를 해결하는 데 충분한 이유지만 데이터 모델 구축작업 초기에 그렇게 하는 데에는 또 다른 동기가 있다.

n  M:M 릴레이션십은 새로운 릴레이션 엔티티를 추가하여 M:1 관계로 변경한다.

n  연관 실체(Associative) 엔티티는 M:M 관계 미결 시 간과해 버렸을 추가 업무 규칙 또는 업무 논리를 내포할 수 있다. 특히 업무 규칙이 정밀하게 정의됨에 따라 하위 유형(Subtype)계층 구조가 연관 실체로부터 나타나기 쉽다는 점, 분석 초기에 M:M 관계가 해결되지 않은 모델에서 이들이 간과된다는 점이다.

n  M:M 관계는 데이터 종속성에 대한 결정을 어렵게 하여, 모델의 논리적 완성과 부분 집합 식별 능력을 제한한다.

n  M:M 관계 해결 시까지 모델은 불안정 상태에 머물 것이다. 모델은 정규화되지 못하고, 모델에 대한 문서화 작업도 완비되지 못할 것이다.



n  제품 엔티티와 공급자 엔티티 간에는 M:M 관계가 존재한다. 이 관계는 제품 공급이라는 업무 내용에 의해서 두 엔티티 간에 생겨난 M:M 관계이다.

n  이 관계가 해소된 결과로 공급제품목록이라는 새로운 엔티티가 만들어지고, 또한 각각의 두 엔티티(즉, 제품, 공급자)와 1:M의 관계를 부모로서 가지게 된다.

 

4.   참조 무결성 규칙 정의

n  관계 테이블의 모든 외부 식별자 값은 관련 있는 관계 테이블의 모든 주 식별자 값이 존재해야 한다.

n  실체의 주 식별자(PK)와 마찬가지로 외부 식별자(FK)도 데이터 무결성에 관한 업무 규칙을 내포하고 있다.

n  데이터베이스 설계 관점에서 선택하지 말고, 사용자의 업무 규칙에 따라 적절한 규칙을 선택한다.

 

입력 규칙

삭제 규칙

Dependent

대응되는 부모 실체에 인스턴스가 있는 경우에만 자식 실체에 입력을 허용한다.

-

Restrict

-

대응되는 자식 실체의 인스턴스가 없는 경우에만 부모 실체 인스턴스를 자동 삭제한다.

Automatic

자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 이를 자동 생성한다.

-

Cascade

-

부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스를 자동 삭제한다.

Nullify

자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 자식 실체의 참조키(FK)를 Null 값으로 처리한다.

부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면 그것의 참조키(FK)를 Null 값으로 수정한다.

Default

자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 자식 실체의 참조키(FK)를 기본 값으로 수정한다.

부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면 그것의 참조키(FK)를 기본 값으로 수정한다.

Customized

특정한 검증 조건이 만족되는 경우에만 자식실체 인스턴스의 입력을 허용한다.

특정한 검증 조건이 만족되는 경우에만 부모 실체 인스턴스의 삭제를 허용한다.

No Effect

자식 실체 인스턴스의 입력을 조건 없이 허용한다.

부모 실체 인스턴스 삭제를 조건 없이 허용한다.

 

반응형
LIST
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함