본문 바로가기
기타/소프트웨어분석설계

Chapter 11. 관계형 DB 설계 과정

by hyun-am 2019. 6. 10.

엔티티 정의

 

1. 엔티티의 개념과 조건

 

업무 수행을 위해 기업이 알아야할 대상이 되는 사람, 장소, 사물, 사건 및 개념을 말합니다.

 

엔티티의 충족 조건

 

업무에 유용한 정보를 제공해야 함

명확한 속성 유형이 하나 이상 존재해야 함

각각의 인스턴스를 구분할 수 있어야 함

엔티티는 최소한 하나 이상의 다른 엔티티와 관계를 가져야함 

 

2. 엔티티 추출

 

엔티티로 추출될 수 있는 대상 데이터의 범위

 

정보전략계획의 산출물인 전사 데이터, 정보수집 공정의 산출물, 사용 장표 및 각종 서식, 정보시스템의 구조 분석 결과  

 

엔티티 추출 기준

 

현업에서 사용하는 명사형 어휘를 추출하고 엔티티 조건의 충족 여부를 기준으로 판단하고 상상력으로 창조는 하면 안됨

 

엔티티 추출 시 주의사항

 

상상력을 동원한 엔티티 X, 존재 여부를 확인한 후 추출, 엔티티를 분리(데이터베이스, 그룹웨어, 패키지)

엔티티의 적정성 검증 : 유용성 식별자, 속성 존재여부, 엔티티 간의 식별 가능 및 관계 존재여부

 

3. 엔티티 정의

 

엔티티명 정의 시 규칙

 

현업용어(업무적인 용어)를 사용 : 추상적인 용어는 사용하지 않는다. 

단수명사 사용, 약어 사용 금지, 유일한 명칭 사용(하나의 엔티티에는 하나의 엔티티명만 동일)

필요시 수식어 사용 가능 : ex) 고객을 '응모한 고객', '당첨된 고객' 으로 바꾼다. 

 

엔티티를 정의할 때 포함해야 할 사항 

 

엔티티명 : 현업 사용자 어휘를 사용하여 모델에서 유일한 엔티티명을 사용

 

엔티티 종류 설계 

독립 엔티티 : 스스로 정보를 제공할 수 있는 엔티티

종속 엔티티 : 다른 독립 엔티티에 종속되어 정보를 제공하는 엔티티

 

엔티티 정의 : 왜 이러한 정보가 필요한지 식별, 이해도 증진, 중복을 피하기 위해 반드시 정의

 

관계 정의

 

1. 관계의 개념과 추출

 

관계 : 두 엔티티를 연결하고자 하는 업무적인 이유, 업무 규칙, 제약, 둘 사이를 연결하는 논리적인 연결 관계

 

 

관계의 추출

 

현업에서 사용하는 동사형 어휘 추출 

한 장표에 나타나는 엔티티들 : 이 둘 사이에는 서로 관련성이 있기 때문에 이것을 분석하면 관계 식별 가능 

 

2. 관계의 방향성, 관계요소, 명명 기준 

 

방향성 : 두 엔티티들 중 주체로 참여하는 엔티티 입장에서 능동형 동사를 사용, 상대수동형 동사

 

관계요소 : 하나의 관계는 양방향의 관계요소로 구성

 

명명기준 : 두 개의 관계요소명으로 표기, 사용자 용어, 현재 시제 동사, 방향성 고려 및 시계방향 표현

 

3. 관계의 종류 

 

식별관계(Identifying Relationship)

 

부모 엔티티의 식별자는 자동으로 자식엔티티로 이주

자식은 자신의 각 인스턴스를 식별하기 위해 부모에 종속적

부모 없이 존재할수 없음

 

 

비식별관계(Non-Identifying Relationship)

 

비식별 종속관계

부모의 주 식별자는 자식의 non-key 영역으로 이주

자식은 자신의 각 인스턴스의 식별을 위해 부모 엔티티에 독립적

부모 없이는 존재할 수 없음

 

 

비식별 비종속관계

부모의 주 식별자는 자식의 non-key 영역으로 이주

자식은 자신의 각 인스턴스의 식별을 위해 부모 엔티티에 독립적

부모 없이 존재할 수도 있음  : 비식별 종속관계와의 차이점 입니다. 

 

 

4. 관계의 속성

 

기수성 : 관계에 참여하는 각 엔티티가 얼마나 많이 참여할 수 있는가의 관계 비율

 

종류 

(1: 0, 1, M), (1: 1,M), (1: 0, 1), (1:N)

 

선택성 : 관계되는 엔티티 전재조건으로 관계연결의 여부가 미치는 영향의 표현 방법(항상, 때때로)

 

 

5. 엔티티 관계도 작성

 

엔티티 표기 - 엔티티의 배열 - 관계의 연결 - 관계명 표기 - 관계의 기수성 결합 - 관계의 선택성 결합

 

식별자 정의

 

1. 식별자의 개념과 종류

 

식별자의 개념 : 한 엔티티 내의 특정 인스턴스를 구분할 수 있는 단일속성 또는 속성 그룹

 

식별자 종류

 

후보키(후보 식별자) : 엔티티의 각 인스턴스를 유일하게 식별하기 위해 제공되는 속성이나 그룹(주요키, 대체키로 나뉨)

 

주요키(주 식별자) 

엔티티의 각 인스턴스를 유일하게 식별하는 데 가장 적합한 것

효율적(짧고 간결)해야 합니다, Null 값을 포함할 수 없습니다, 정적으로 유지되어야 합니다

업무적으로 활용도가 높아야 합니다(다른 엔티티와 관계를 맺으며 수시로 각 엔티티를 식별하기 위해서 입니다)

 

대체키(부 식별자) : 후보 식별자 가운데 주 식별자로 선택되지 않은 식별자 입니다.

대리키(대리 식별자) : 긴 복합 식별자를 주 식별자로 사용할 경우, 이를 대체하는 인위적이고 단순한 단일 속성

 

역 엔트리

하나 또는 그 이상의 속성이 하나 또는 그 이상의 엔티티의 인스턴스에 접근하는 데 자주 사용될 때 선택

역 엔트리로 선택된 속성이 반드시 유일할 필요는 없음

 

2. 식별자 업무 규칙

 

식별자 업무 규칙

 

입력 규칙 : 자식 엔티티에 한 건의 인스턴스가 입력 시 적용하는 업무 규칙

옵션명 내용
Dependent 대응되는 주 실체가 있는 경우에만 종 실체 입력을 허용한다
Automatic 대응되는 주 실체가 없는 경우에도 종 실체 입력을 허용하며 주 실체를 종 실체와 같은 값으로 생성한다.
Nullity 대응되는 주 실체가 없는 경우에도 종 실체를 입력하며 주 실체를 NULL 값으로 생성한다
Customized 특정한 입력조건에 맞는 경우에만 종 실체 입력을 허용한다.
No Effect 종 실체 입력을 언제나 허용하며 아무런 영향이 없다.
Defuault 대응되는 주 실체가 없는 경우에 종 실체의 외부 식별자를 디폴트 값으로 세팅한다.

삭제 규칙 : 부모 엔티티에 한 건의 인스턴스가 삭제 시 적용하는 업무 규칙 

옵션명 내용
Restrict 대응되는 종 실체가 없을 경우에만 주 실체 삭제를 허용한다.
Cascade 주 실체와 대응되는 종 실체를 모두 삭제한다.
Nullity 주 실체의 삭제를 언제나 허용하며 대응되는 종 실체의 외부 식별자를 NULL 값으로 생성한다
Customized 특정한 삭제 조건에 맞는 경우에만 주 실체 삭제를 허용한다.
No Effect 주 실체 삭제를 언제나 허용하며 아무런 영향이 없다.
Default 주 실체 삭제를 언제나 허용하며 대응되는 종 실체의 외부 식별자를 디폴트 값으로 세팅한다. 

 

속성정의

 

1. 속성의 기본 개념

 

엔티티의 특징을 나타내기 위한 요소입니다.

식별자 역할을 하는 key 영역의 속성과 key를 제외한 정보를 담고있는 non-key 영역의 속성으로 구분

 

속성의 도출

 

'그것(엔티티)에 대해 무엇을 알고 싶습니까?' 라는 질문에 대한 답을 찾음(상호명, 주소, 연락처, 대표자 등)

수집된 사용 장표의 항목들을 찾음 : ex) 거래명세서(거래일자, 거래품목, 거래금액, 거래처명)

기존 시스템의 항목들을 분석 

 

속성의 명명

 

현업의 표준용어를 사용 : 누구나 쉽게 이해 가능하도록

속성을 명명하는 표준형태는 '엔티티명_수식어(필요시)_영역명'과 같이 명명 

소유격 사용을 배제, 약어 사용 배제, 핵심 단어로 구성, 모델에서 유일한 속성 이름을 갖도록 명명

 

속성 영역(도메인)

 

속성이 가질 수 있는 값의 범위 ex)

(명(또는 이름), 주소), (번호, 금액, 길이, 무게, 속도 부피, 수량, 비율), (일자, 시각, 기간, 요일)

 

2. 속성의 정의 방법 

 

속성의 유형

 

기초 속성(Basic Attribute)

 

외부로부터 정보가 제공되어야만 유지

데이터 요구 분석 명세서에 포함되어 있으며, 현업에서 제공해야 속성이 유지 가능

ex) 상품명, 가격, 주문수량 등

 

설계 속성(Designed Attribute)

 

기존 속성으로부터 가공 처리를 통해 생성 및 유지, 속성의 정의 시 추출 알고리즘을 기록해야 합니다. 

원래 존재하지는 않지만 필요에 따라 설계자가 추가한 속성

ex) 주문번호, 예약번호, 고객번호, 상품코드

 

추출(파생)(유도) 속성(Derived Attribute) 

 

시스템의 효율성을 도모하기 위해 설계자가 임의로 부여하는 속성이다. 

기본 속성으로부터 계산 등의 가공 처리를 통해서 생성된 속성

중복의 의미가 있어서 대개 개념적 모델링 단계에서 식별하지 않습니다.

ex) 나이(생년월일 속성에서 유도됨), 근무기간(입사일 속성에서 유도됨) 등 

 

복수 값 속성의 분할 

 

특정 엔티티에 대한 속성 값이 둘 이상 나타나는 경우 이 속성을 분할, 다른 엔티티로 독립

 

ex) 사원이라는 엔티티의 속성 가운데 구사언어 라는 속성이 있을 경우, 사원이 구사언어가 둘 이상인 경우가 있음.

구사 언어언어라는 별개의 엔티티로 독립시킨 뒤 사원 엔티티와의 관계를 통해 연결시킵니다. 

 

속성의 중복 배제

 

속성은 모형 내에서 오직 하나의 엔티티에 속해야 함

특히 엔티티 간의 관계 설정을 위해 다른 엔티티로부터 가져온 속성은 중복되지 않도록 재명명한다.

 

 

정규화

DataBase : 데이터의 집합, 논리적으로 연관된 자료의 모음 + 구조화, (실시간 접근, 지속적 변화, 동시 공유)

 

※ 함수적 종속

 

함수적 종속이란 어떤 릴레이션 R이 있을때 X와 Y를 각각 속성의 부분집합이라고 가정해봅니다. 여기서 X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의 값이 달라질때 Y는 X에 함수적 종속이라고 합니다.

이 경우 X를 결정자, Y를 종속자라고 합니다. 기호로 표기하면 X→Y 입니다.

이런 함수적 종속관계에는 완전 함수적 종속부분 함수적 종속이행적 함수종속이 있습니다. 

 

완전 함수적 종속 : 종속자가 기본키에만 종속, 여러 속성으로 구성되어 있을경우 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속

부분 함수적 종속 : 릴레이션에서 종속자가 기본키가 아닌 다른 속성에 종속되거나 기본키가 여러 속성으로 구성되어 있을경우 기본키를 구성하는 속성 중 일부만 종속

이행적 함수 종속 : X, Y, Z라는 3개의 속성이 있을때 X→Y, Y→Z 이란 종속 관계가 있을경우 X→Z가 성립

 

1. 정규화의 목적 

 

정규화

 

복잡한 데이터 구조를 단순화시켜 안정적인 구조로 변환하는 과정입니다.

함수적 종속성이라는 이론에 근거하여 진행됩니다. 

 

정규화의 목적

 

정보의 중복을 최소화, 정보의 일관성 확보, 무결성 극대화, 정보구조의 안정성 최대화, 정보모형 단순화, 신뢰도 증대 

 

정규화 단계

 

1차 정규화 : 반복되는 속성을 분할, 제거하는 과정입니다.

2차 정규화 : 주 식별자(주 식별자가 복합 속성인 경우) 전체에 종속되지 않는 속성을 분할을 제거하는 과정입니다.

3차 정규화 : 비식별자 속성에 종속하는 속성을 분할, 제거하는 과정이다. 

비정규화 : 데이터 모델링 규칙에 얽매이지 않고 시스템이 물리적으로 구현됐을 때 성능이 향상 될 수 있도록 한다.

 

제 1 정규형

 

자료 저장소의 모든 속성들이 원자값(더 이상 분할되지 않는 값)을 가진 것 입니다.

1. A의 주식별자 '학번'에 빈값이 존재 : 주 식별자는 빈 값이 없어야 합니다.

2. '과목 학점'이라는 속성은 원자값을 갖지 않으므로 A는 제1정규형 상태가 아닙니다.

여기서 발생하는 3가지 이상

삭제이상 : B에서 175번 학생이 C과목을 수강취소하면 이창주 교수님의 정보가 사라진다.

삽입이상 : 만약 김규한 교수가 COBOL이라는 과목을 개설하고자 하더라도 이것을 듣는 학생이 없으면 삽입 X

갱신이상 : FORTRAN 강사가 김규한 교수로 바뀌었다면 FORTRAN 레코드 전체를 갱신해야 합니다. 

 

이러한 이상이 발생하는 이유 : 주 식별자가 아닌 속성들이 주 식별자에 대해 완전히 함수적으로 종속 X이기 때문

 

B의 주 식별자 → '학번', '과목'의 조합키 : '학점'과 '교수'를 유일하게 식별가능 따라서 완전 함수적으로 종속 

 

문제점 : 기존 '수강철'이라는 하나의 자료저장소에 '수강' 및 '교과목' 이라는 관계와 객체가 혼합된 형태

속성들 간의 종속관계를 분석하여 여러개의 관계(릴레이션)으로 분해합니다.

수강철 = {학번 + 과목 + 학점 + 교수} 이것을 수강철 = {학번 + 과목 + 학점}, 교과목 = {과목 + 교수} 로 나눈다.

 

제 2 정규형

 

자료저장소가 제 1정규형이고 모든 속성들이 주 식별자에 대해 완전 함수적 종속을 가집니다.

 

문제점 

삭제이상 : 주 식별자가 아닌 속성이 주 식별자에 대해 이행적으로 종속성을 갖기 때문

 

예시)

주식별자는 '학번' 입니다. 근데 주 식별자가 아닌 속성 '과목'과 '수강료'가 주 식별자인 '학번'에 대해 완전 함수적으로 종속되어 있습니다.(제 2정규형 상태)

 

문제 : 만약 150번 학생이 수강을 취소한다면 수학이 15,000원에 개설되었다는 정보가 상실됩니다.

 

원인은 주 식별자가 아닌 속성(수강료)가 주 식별자(학번)에 대해서 직접적으로 함수적 종속을 갖지 않고 이행적으로 종속성을 갖기 때문입니다.

 

'과목'이 '학번'에 종속 되어있고, '수강료'는 과목에 종속되어 있기 때문에, '수강료'는 이행적으로 주 식별자인 '학번'에 종속 입니다. '학번'과 '수강료'는 의미 관계가 없습니다.(과목 때문에 종속 관계 갖게됨)

 

따라서 수강철={학번 + 과목 + 수강료} 에서 수강철(1) = {학번 + 과목}, 수강철(2) = {과목 + 수강료} 으로 수정합니다.

이행적 종속 관계를 갖는 학번과 수강료를 각각 다른 저장소에 분리했습니다. 

 

제 3정규형

 

자료저장소가 제 2정규형

모든 속성들이 주 식별자에 대해 비이행적으로 함수적 종속성을 가짐

 

비정규형 

 

데이터 모델링 규칙에 얽매이지 않고 성능 향상을 목적으로 구축 

 


 

본문 내용은 아래 책을 참고하여 작성하였습니다.

https://book.naver.com/bookdb/book_detail.nhn?bid=9910113

 

시스템 분석과 설계

[시스템 분석과 설계]는 비즈니스 시스템을 개발하는 데 필요한 요구 분석 및 설계 방법론을 다룬 책으로, 기업의 정보시스템 개발 과정 및 개발에 참여하는 사람들의 역할, 개발에 사용되는 설계 및 분석 도구, 개발 후 품질관리까지의 전 과정을 간결하게 설명한다. 구조적 방법론, 정보공학 방법론, 객체지향 방법론의 주요 개념과 원리를 살펴본 후 미니 프로젝트로 해당 방법론의 적용 사례를 보여주어 원론적인 내용 이해에 그치지 않고 실제적인 지식이 될 수 있도록

book.naver.com

 

 

댓글