티스토리 뷰

database/모델링

#4.개념적 데이터 모델링

그루아트 2021. 10. 1. 18:54

데이터베이스 모델링 작업에 있어 가장 기본이 되는 일은

업무적으로 필요한 데이터가 무엇이며, 어떤 데이터를 데이터베이스에 담아야 하는지에 대한

충분한 분석이다.

이런것들은 업무분석과 사용자 요구 분석등을 통하여 얻어지며,

수집된 현실 세계의 정보들을 사람들이 이해할수 있는 명확한 형태로 표현해야만 하는데 ,

이 단계를 개념적 데이터 모델링(Conceptual Data Modeling) 이라고 한다.

즉, 개념적 데이터 모델링의 목적은 업무를 일반화(=추상화) 시키는 것이다.

 

 

1. 실체-관계 모델(E-R: Entity-Relationship Model)

실체-관계 모델

개념적 데이터 모델링은 

실체와 속성 그리고 실체들 간의 관계를 중심으로 현실세계를 표현하며, 다양한 방법이 고안되었으며

그중에서 가장 널리 쓰이는 것이 실체-관계 모델이다.

이러한 실체-관계 모델을 통해서 표현된 결과물을 E-R Diagram 이라고 한다.

 

개념적 데이터 모델링 단계에서 정의해야 할 가장 중요한 요소는 실체(엔티티: Entity) 속성(Attribute)

그리고 관계(Relation) 이다. 

 

 

2. 실체(Entity)

현실 세계에서 다른 모든 것들과 구분되는 유형, 무형의 것을 실체라고 정의하며

실체는 학생, 교수, 강의실 등과 같이 물리적으로 존재하는 것일수도 있고, 과목, 학과, 판매 등과 같이 개념적으로 존재

하는 것일 수도 있다. 

이러한 실체를 추출할 때에는 데이터로 관리되어야 하는 항목,

즉, 정보의 단위로써 존재하는 개념등을 실체로 정의한다고 생각하면 훨씬 더 쉽게 실체를 파악하고 추출해 낼수 있을

것이다.

실체(Entity) 정의

 

3. 실체 파악 요령

실체를 파악하는데 있어서 가장 중요한 점은 관련 업무에 대한 정확한 이해를 전제로 한다는 점이다.

업무에 대한 내용을 잘 이해하고 있고, 실체에 대한 개념을 정확히 알고 있다면 실체를 추출하는 작업은 

그리 어렵지 않을 것이다.

실체명을 부여할때는 현업에서 사용되고 있는 용어나 단수 명사 혹은 유일한 명칭을 사용하여

누구나 실체명을 보고 빠르고 정확하게 인식할 수 있도록 해야만 한다.

 

문서를 중심으로 파악한다.

문서에는 현재 업무상 데이터로 관리되고 있는 항목들이 모두 정의되어 있다.

그러므로 문서를 중심으로 실체를 추출하는 일은 실질적으로 효과가 매우 높은 방법이라 얘기할 수 있다.

 

분석된 내용을 토대로 명사 위주로 파악한다.

관련된 업무를 정의하고 있는 것이 분명하게 문서로 정의되어 있다면 문서를 분석해서 실체를 추출하면 되지만,

그렇지 않을 경우 관련된 내용을 서술하고 그 내용에서 명사 위주로 실체를 추출하면 마찬가지로 효율적으로

실체를 정의할 수 있다.

ex)학원에서 학생들의  출결상태성적 등을 과목별로 관리하기를 원하고 있다.

실체(Entity): 학원, 학생, 출결상태, 성적, 과목

 

담당자와의 인터뷰를 통해서 파악한다.

위의 ①, ②을 통해서 주요한 실체를 추출했다면,

이제는 현업의 실무 담당자와의 인터뷰를 통해서 업무 프로세스에 대한 명확한 검증작업을 통해 아직 드러나지 않은

실체가 존재하는지를 살펴보아야만 한다.

 

현업의 담당자는

일반적으로 업무에 관해서는 잘 알고 있지만, 전산에 대한 이해가 부족한 경우가 많으므로 인터뷰를 할 때는 어떠한

내용을 어떻게, 어디까지 설명해야 하는지에 관해서 제대로 알고 있지 못하며, 대부분의 경우 개발자가 질문을 하면

그와 관련된 여러가지 정황이나 업무적인 내용들만을 설명해 주는 정도가 될것이다.

 

그러므로 개발자는 상식과 논리, 그리고 관찰력과 경험을 최대한 동원해서 발생할 수 있는 여러가지 경우의 수를

현업 담당자를 통해 확인해야 하며, 이 단계에서 아무리 지엽적이라 하더라도 업무와 관련한 내용을 놓치고 지나가게

되면 그에 관한 문제는 결과물을 확인하는 단계 즉, 테스트 단계에서 문제로 드러나게 된다.

 

 

4. 속성(Attribute)

실체(Entiry) 정보를 저장하기 위한 기본 단위라고 한다면, 속성(Attribute)이란 정보의 요소로써 관리되는 항목

말한다.

즉, 속성실체의 성질, 분류, 수량, 상태, 특성 등을 나타내는 세부적인 항목이다.

 

속성을 정의할 때 기억해야 할 세가지

①한 실체에서 정의되는 속성의 갯수는 10개 내외로 정의하는 것이 바람직 하다.

②속성에 대한 명칭을 정의할 때는 가독성이 높은 용어를 사용해야 한다.

③가급적이면 속성을 세분화해서 정의해야 한다.(주소를 문자열로 저장하는것과 각각의 항목으로 저장하는것)

 

 

5. 속성(Attribute)의 유형

속성의 유형 의 미
기본 속성 해당 실체가 원래 가지고 있는 속성
추출 속성 기본 속성의 가공 처리를 통해서 얻을수 있는 속성
설계 속성 시스템의 효율성을 위해 임의로 추가되는 속성

①기본 속성은 해당 실체가 원래 가지고 있는 속성으로

업무를 분석할 때 기본적으로 쉽게 추출될 수 있으며, 속성들 중에서도 당연히 가장 많은 비중을 차지한다.

 

②추출 속성은 기본 속성들을 가공 처리해서 얻을 수 있는 속성을 말하는데,

예를 들어서 [판매 테이블]에서 판매금액이란 속성은 판매수량과 판매단가를 곱해서 얻어지는 속성이다.

 

③설계 속성은 개발자의 의지에 따라서 좀 더 효율적인 프로세스의 처리를 위해서 임의적으로 추가되는 속성을 말한다.

이 속성은 반드시 필요한 것은 아니지만 프로세스를 원활하게 처리하는데 있어서 상당히 많은 도움을 줄 수 있다.

 

 

6. 식별자(Identifier)

하나의 실체(Entity) 내에서 각각의 인스턴스(Row: 행)를 유일(Unique)하게 구분해 낼 수 있는 단일 속성 또는

속성 그룹을 말하며, 하나의 실체(Entiry)는 최소한 하나 이상의 식별자를 반드시 보유하고 있어야만 한다. = KEY

모든 실체가 반드시 식별자를 가지고 있어야 하는 이유는

식별자를 통해서 각각의 인스턴스(Row: 행)를 궁극적으로 구분해 낼 수 있기 때문이다.

 

 

7. 식별자(Identifier)의 유형

①후보 식별자(Candidate Identifier)

실체 내에 존재하는 모든 식별자들을 통칭하는 말로써, 주 식별자가 될 수 있는 후보들이란 개념에서 정의된 용어이다.

 

②주 식별자(Primary Identifier) (PK)

실체에서 각각의 인스턴스를 유일하게 구별하는데 가장 적합한 식별자로서, 앞에서 정의한 후보 식별자들 중에서

주 식별자를 선정한다

 

후보 식별자들 중에서 주 식별자를 선정 시 고려 사항들

ⓐ실체(Entity)를 대표할 수 있을것

ⓑ업무적으로 활용도가 높을것

길이가 짧을것

 

③대체 식별자(Alternate Identifier)

후보 식별자 중에서 주 식별자로 선정되지 않은 나머지 식별자를 말한다.

 

※후보 식별자 > 주 식별자 vs 대체 식별자

식별자들 간의 관계

④복합 식별자(Composite Identifier)

실체 내에서 하나의 속성으로는 식별자가 될 수 없지만 하나 이상의 속성들을 묶어서 식별자로 정의할 수 있을때

이를 복합 식별자라고 한다.

복합 식별자를 정의할 때 고려해야 하는 사항은

여러 속성들 중에서 보다 더 자주 사용되는 컬럼을 먼저 기술해야 한다는 점이다.

 

⑤대리 식별자(Surrogate Identifier)

주 식별자가 너무 길거나 여러 개의 속성으로 구성되어 있는 경우,

기존의 주 식별자를 대신해서 새롭게 주 식별자의 역할을 할 수 있는 길이가 짧은 속성을 인위적으로 추가한

식별자를  말한다.

 

⑥외래 식별자(Foreign Identifier) = FK

관계를 통하여 다른 실체에서 정의된 식별자를 가져온 것으로,

그 식별자의 값들은 다른 실체의 인스턴스를 참조하기 위해 사용된다.

 

 

8. 관계(Relationship)

실체(Entity) 사이에 대응되는 연관성을 정의하는 것으로

두 실체 간의 업무적인 연관성이라고 정의 할 수 있으며, 이러한 관계를 정의할 때에는 동사구로 관계를 정의하게 된다.

 

※E-R Diagram으로 관계를 설정하는 순서

두 실체간에 업무적으로 관련이 있는 방식(동사)을 중심으로 관계를 정의하는 것이다.

①관계가 있는 두 실체를 실선으로 연결하고 관계를 부여

②관계 차수를 표현

③선택성을 표시

관계 정의

 

 

9. 관계의 차수성 정의

서로 관계가 정의된 실체들 간에 각 실체의 인스턴스가 다른 실체의 인스턴스와 어떻게 대응되는지를 정의 하는것이다.

①일 대 일

관계를 맺고 있는 두 실체의 인스턴스가 서로 하나씩 대응되는 관계이다.

일대일 관계 정의

②일 대 다

관계를 맺고 있는 두 실체에서 하나의 인스턴스가 다른 실체의 여러 인스턴스와 대응되는 관계로 가장 일반적인

유형이라고 할 수 있다.

일대다 관계 정의

③다 대 다

관계를 맺고 있는 각 실체 상호간에 인스턴스가 서로 여러개씩 대응되는 관계이다.

다대다 관계 정의

 

 

10. 선택성

관계 정의에 있어서 선택성이란

관계를 맺고 있는 두 실체에 각 인스턴스가 서로 대응될 때

반드시 대응되어야만 하는지, 아니면 대응될 수도 있고, 그렇지 않을수도 있는지에 대한 상황을 정의하는 것이다.

선택성 표현 방법

한 실체의 모든 인스턴스가 반드시 대응되어야 하는 상황을 Mandatory(의무적) 이라 하고,

그렇지 않아도 되는 상황을 Optional(선택적)이라고 정의한다.

즉, 사원은 반드시 어떤 부서에는 소속되어야 하지만, 한 부서에는 사원이 없을수도 있는 것을 표현한 것이다.

 

개념적 데이터 모델링

설계 단계의 첫 단계로써 분석된 내용을 일반화(추상화) 시켜서 누구나 알기 쉬운  형식으로 표현하는것,

관계형 데이터베이스 이론이 적용되는 단계가 아니라 분석된 내용을 실체-관계 모델(Entity-Relationship Model)을

통해서 E-R Diagram으로 표현 하는 단계이며,

이후의 설계 과정 즉, 논리적 데이터 모델링의 기초가 되는 것이므로 건물을 지을때 설계도를 그리는 것처럼 매우

신중하게 하나 하나씩의 업무를 정확하게 정의해야만 한다.

'database > 모델링' 카테고리의 다른 글

#10.물리적 데이터 모델링  (0) 2021.10.26
#5.관계형 데이터베이스  (0) 2021.10.09
#3.데이터베이스 모델링  (0) 2021.10.01
#2.시스템 구축  (0) 2021.10.01
#1.데이터베이스 시스템  (0) 2021.10.01
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함