그라가승훈
[데이터베이스 설계와 구축] - 논리설계 01. 데이터 모델링 주요 개념 본문
1. 데이터 모델링
데이터 모델링이란
정보화 시스템을 구축하기 위해 어떤 데이터가 존재하는지 또는 업무에 필요한 정보는 무엇인지 분석하는 방법
- 모델링에 3가지 중요한 요소
- 데이터 관점 - 업무가 어떤 데이터와 관련이 있는지, 데이터 간의 관계는 무엇인지에 대해서 모델링하는 방법(What, Data)
- 프로세스 관점 - 업무를 통해 어떤 일을 처리하는지, 무엇을 해야 하는지를 모델링하는 방법(How, Process)
- 데이터와 프로세스의 상관 관점 - 업무에서 일을 처리하는 방법에 따라 데이터가 어떻게 영향을 받는지 모델링하는 방법(Interaction)
- 데이터 모델링을 진행할 때 중요한 3가지 개념
- 업무가 관여하는 어떤 것 (Things) ex) 이주일, 심순애
- 업무가 관여하는 어떤 것간의 관계 (Relationship) ex) 사랑하는 사이
- 어떤 것의 성격 (Attributes) ex) 키 180cm, 친절, 세심, 활달함
개념 | 타입/클래스 | 어커런스/인스턴스 |
어떤 것 | 엔티티타입 | 엔티티 |
어떤 것간의 관계 | 관계 | 페어링 |
어떤 것의 성격 | 속성 | 속성값 |
2. 엔티티타입
- 엔티티타입의 개념
엔티티타입이란 "업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위"
엔티티 타입은 엔티티의 집합이라고 할 수 있고, 엔티티는 엔티티타입에 속한 인스턴스 하나에 해당한다.
엔티티타입 | 엔티티 |
강의실 | 101호 102호 |
과목 | J2EE DATA MODELING |
강사 | 이강사 김강사 |
- 엔티티타입의 특징
- 반드시 시스템을 구축하고자 하는 업무에서 필요하고 관리하고자 하는 정보여야 한다.
- 병원 -> 환자 O , 회사 -> 환자 X
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 엔티티의 집합이 되어야 한다.
- "한 개"가 아니라 "두 개 이상"이라는 집합 개념, 엔티티타입 하나는 여러 개의 엔티티를 포함한다.
- "한 개"가 아니라 "두 개 이상"이라는 집합 개념, 엔티티타입 하나는 여러 개의 엔티티를 포함한다.
- 업무 프로세스는 그 엔티티타입을 반드시 이용해야 한다.
- 엔티티타입에는 반드시 속성이 포함되어야 한다.
- 엔티티타입은 다른 엔티티타입과 최소 한 개 이상의 관계가 있어야 한다.
- 엔티티타입의 분류
엔티티타입은 그 자체의 성격에 따라 분류(유무형에 따른 분류) 하거나 업무를 구성하는 모습에 따라 구분(발생 시점에 따른 분류)한다.
- 유무형에 따른 분류
- 유형(Tangible) 엔티티타입
- 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔티티타입
- 사원, 물품, 강사 등
- 개념(Conceptual) 엔티티타입
- 물리적인 형태가 없고, 관리해야 할 개념적 정보로 구분되는 엔티티타입
- 조직, 상품, 장소 등
- 사건(Event) 엔티티타입
- 업무를 수행에 따라 발생되는 엔티티타입으로 각종 통계자료에 이용될 수 있다.(발생시점에 따른 분류와 전개방식 통일 권고)
- 주문, 청구, 미납 등
- 유형(Tangible) 엔티티타입
- 발생 시점에 따른 분류
- 기본 엔티티타입
- 업무에 원래 존재하는 정보로서 독립적으로 생성되며 다른 엔티티타입의 부모 역할을 한다.
- 중심 엔티티타입
- 기본 엔티티타입에서 발생되고 그 업무에서 중심적인 역할을 한다.
- 데이터양이 많으며 다른 엔티티타입과의 관계를 통해 많은 행위 엔티티타입을 생성한다.
- 행위 엔티티타입
- 두 개 이상의 부모 엔티티타입에서 발생되고 내용이 자주 바뀌거나 데이터양이 증가한다.
- 상세 설계 단계나 프로세스와 상관 모델링을 진행하면서 도출될 수 있다.
- 기본 엔티티타입
- 엔티티타입의 명명
- 가능하면 협업에서 사용하는 용어를 사용한다.
- 가능하면 약어를 사용하지 않는다.
- 단순 명사를 사용한다.
- 엔티티타입에 부여되는 이름은 유일해야 한다.
- 가급적 엔티티타입이 생성되는 의미에 따라 이름을 부여한다.
- 고객이 제품을 주문할 때 발생하는 행위 엔티티타입의 경우 고객 제품이라고 하기보다는 주문 제품 또는 주문 목록이 직관적이다.
3. 속성
- 속성의 개념
- 업무에 필요한 엔티티에서 관리하고자 하는, 더 이상 분리되지 않는 최소의 데이터 단위
- 엔티티타입(사원), 엔티티(홍길동), 속성(이름, 주소, 생년월일), 속성값(홍길동, 인천, 97년 01월 05일)
- 엔티티타입, 엔티티, 속성, 속성값에 대한 관계
- 규칙 1. 한 개의 엔티티타입은 두 개 이상의 엔티티 집합이어야 한다.
- 규직 2. 한 개의 엔티티는 두 개 이상의 속성을 갖는다.
- 규칙 3. 한 개의 속성은 한 개의 속성값을 갖는다.
- 속성의 분류
- 속성의 특성에 따른 분류
- 기본 속성
- 업무로부터 추출한 모든 속성에 해당하며, 엔티티타입에 가장 일반적이고 많은 속성을 차지한다.
- 설계 속성(코드성 데이터, 엔티티타입을 식별하기 위한 일련번호), 파생 속성(다른 속성을 계산하거나 영향을 받아 생성된 속성)을 제외한 모든 속성이다.
- 설계 속성
- 업무에 필요한 데이터 이외에 데이터 모델링을 위해 업무를 규칙화하려고 속성을 새로 만들거나 변형하여 정의하는 속성
- 코드 속성은 원래 속성을 업무의 필요에 의해 변형하여 만든 설계 속성
- 일련번호와 같은 속성은 Unique한 식별자를 부여하기 위해 모델에서 새로 정의하는 설계 속성
- 파생 속성
- 다른 속성에 영향을 받아 발생하는 속성으로서 보통 계산된 값이 이에 해당한다.
- 기본 속성
- 엔티티 구성방식에 따른 분류
- 엔티티를 식별할 수 있는 속성을 PK속성
- 다른 엔티티와의 관계에서 포함된 속성을 FK속성
- 엔티티에 포함되어 있고 PK, FK에 포함되지 않는 속성을 일반속성
- 속성의 명명
- 해당 업무에서 사용하는 이름을 부여한다.
- 속성명을 부여할 때는 현업에서 사용하는 이름을 부여하는 것이 가장 중요하다.
- 서술식 속성명은 사용하지 않는다.
- 일반적으로 서술식 속성명은 사용하지 말아야 한다. 명사형을 이용하고 수식어가 많이 붙지 않도록 유의
- 약어 사용은 가급적 자제한다.
- 업무에서 사용하지 않거나 공용화하지 않은 약어는 사용하지 않는 것이 좋다.
- 엔티티타입에서 유일하게 식별가능 하도록 지정한다.
- 가능하면 모든 속성의 이름은 유일하게 작성하는 것이 좋다.
4. 식별자
- 식별자 개념
식별자란 여러 개의 집합체를 담고 있는 하나의 엔티티타입에서 각가의 엔티티를 구분할 수 있는 결정자다.
- 식별자 특징
- 식별자에 의해 엔티티타입 내 모든 엔티티들이 유일하게 구분되어야 한다.
- 특정 엔티티타입에 식별자가 지정되면 그 식별자는 변하지 않아야 한다.
- 주 식별자의 경우 식별자가 지정되면 주 식별자 속성에 반드시 데이터값이 있어야 한다.
- 식별자 구분
대표성 여부 | 스스로 생성 여부 | 단일 속성 여부 | 대체 여부 |
주 식별자 / 보조 식별자 | 내부 식별자 / 외부 식별자 | 단일 식별자 / 복합 식별자 | 원조 식별자 / 대리 식별자 |
- 주 식별자 / 보조 식별자
- 주 식별자나 보조 식별자 모두 엔티티타입의 엔티티를 유일하게 식별할 수 있게하는 특징이 있다.
- 물리 테이블에서는 주 식별자가 PK역할을 하고 보조 식별자는 유니크 인덱스로 지정되어 사용한다.
- 엔티티타입에서 엔티티를 유일하게 식별할 수 있는 속성이 두 개 이상일 때 해당 업무에 적합한 속성을 주식별자로 두고, 다른 속성은 보조 식별자로 활용한다.
ex) 카드사의 고객 테이블에 고객의 카드번호, 주민등록번호 둘 중 카드사 특성상 카드번호를 주 식별자로 두고 주민등록번호를 보조 식별자로 활용할 수 있다.
- 내부 식별자 / 외부 식별자
- 내부 식별자는 자신의 엔티티타입 내에서 스스로 생성되어 존재하는 식별자를 말한다.
- 외부 식별자는 자신의 엔티티타입으로부터 다른 엔티티타입을 찾아가는 FK 역할을 한다.
- 단일 식별자 / 복합 식별자
- 주 식별자의 구성이 한 가지 속성으로만 이루어진 경우를 단일 식별자라고 하고, 두 개 이상의 속성으로 구성된 경우를 복합 식별자라고 한다.
- 주문 엔티티타입은 주문번호의 속성이 주 식별자 역할을 하므로 단일 식별자
- 주문 목록 엔티티타입은 주문번호와 제품번호 속성을 이용하여 하나의 유일한 식별자 역할을 하므로 복합 식별자
- 원조 식별자 / 대리 식별자
- 대리 식별자인 경우
- 주 식별자의 속성이 복합 식별자일 경우 여러 개의 속성을 묶어 하나의 속성으로 만들어 활용하는 경우
- 주 식별자 속성을 일반 속성으로 내리고, 일련번호 형태를 사용하는 경우
- 대리 식별자인 경우
5. 관계
- 관계의 개념
두 개의 엔티티타입 사이의 논리적인 관계, 즉 엔티티와 엔티티가 존재의 형태나 행위로서 서로에게 영향을 주는 것을 말한다.
- 존재에 의한 관계
- 사원은 부서에 소속된다. 이 것은 사원의 엔티티 자체가 어느 팀의 부서에 소속되어 있기 때문에 나타나는 관계로 존재 형태에 의한 관계가 된다.
- 엔티티타입 분류 방법 중 기본 엔티티타입 사이의 관계는 많은 경우 존재에 의한 관계가 형성된다.
- 행위에 의한 관계
- 고객 엔티티타입과 주문 엔티티타입에서 고객이 "주문한다" 라는 행위로 주문 엔티티타입에서 주문번호가 생성되기 때문에 두 엔티티타입 사이의 관계는 행위에 의한 관계가 된다.
- 엔티티타입 분류 방법 중 중심, 행위 엔티티타입의 경우 행위에 의한 관계가 많이 형성된다.
- 관계 패어링
각각의 엔티티들은 자신이 관련된 엔티티들과 관계의 어커런스로 참여하는 형태를 관계 패어링이라 한다.
- 관계의 명명
각각의 관계에는 두 개의 멤버십이 있다. 그리고 각각의 멤버십에 의해 두가지 관점으로 표현될 수 있다.
- 애매한 동사를 피하라
- '관계 된다.' '관련이 있다.' 등은 구체적이지 못하고 어떤 행위가 있는지 또는 두 참여자간 어떤 상태가 존재하는지 파악할 수 없다.
- 현재형으로 표현하라
- '수강을 신청했다.' '강의를 할 것이다.' 라는 표현이 아닌 '수강을 신청한다.' '강의를 한다.' 로 표현해야 한다.
- 관계의 카디낼리티
- 1:1 (One To One) 관계를 표시하는 방법
- 1:M (One To Many) 관계를 표시하는 방법
- M:N (Many To maNy) 관계를 표시하는 방법
- 하나의 주문서에는 여러 개의 제품을 포함할 수 있고, 한 제품은 여러 개의 주문서를 통해 신청될 수 있다.
- 관계의 종류
작성중...
'DataBase' 카테고리의 다른 글
[데이터베이스] NoSQL(비관계형) 이란? (0) | 2022.07.19 |
---|
Comments