데이터 모델링의 중요성 및 유의점
- 중복 : 같은 시간 같은 데이터 제공
- 비유연성 : 사소한 업무 변화에 데이터 모델이 수시로 변경되면 안 된다. 데이터 정의를 사용 프로세스와 분리한다.
- 비일관성 : 데이터 간 상호 연관 관계에 대해 명확히 정의해야 한다.
데이터 모델링
- 개념적 데이터 모델링
- 논리적 데이터 모델링
- 물리적 데이터 모델링
데이터 독립성 요소
- 외부 스키마 : 개개 사용자가 보는 개인적 DB 스키마
- 개념 스키마 : 모든 사용자 관점에서 통합한 전체 DB
- 내부 스키마 : 물리적 장치에서 데이터가 실제적 저장
데이터 독립성
- 논리적 독립성 : 개념 스키마 변경, 외부 스키마에 영향을 안 준다.
- 물리적 독립성 : 내부 스키마 변경, 외부/개념 스키마에 영향 안 준다.
Mapping
- 상호 독립적인 개념을 연결시켜주는 다리
- 논리적 사상 : 외부 스키마 - 개념 스키마
- 물리적 사상 : 개념 스키마 - 내부 스키마
데이터 모델링의 3요소
- 어떤 것(Things)
- 성격(Attributes)
- 관계(Relationships)
모델링의 특징
(현실 시계) -> 추상화, 단순화, 정확화 -> (모델)
데이터 모델 표기법
1796년 피터첸이 Entity Relationship Model 개발
- IE, Baker 기법이 많이 쓰임
- 에티티, 관계, 속성으로 이루어짐
ERD 작업 순서
- 엔티티 그리기
- 엔티티 배치
- 엔티티 관계 설정
- 관계명 기술
- 관계의 참여도 기술
- 관계 필수 여부
좋은 데이터 모델의 요소
- 완전성 : 업무에 필요한 모든 데이터가 모델에 정의
- 중복 배제 : 하나의 DB내에 동일한 사실은 한번만
- 업무 규칙 : 많은 규칙을 사용자가 공유하도록 제공
- 데이터 재사용 : 데이터가 독립적으로 설계되어야 함.
- 의사소통 : 업무 규칙은 엔티티, 서브타입, 속성, 관계등의 형태로 최대한 자세히 표현
- 통합성 : 동일한 데이터는 한번만 정의, 참조 활동
엔티티
업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것, 보이지 않는 개념 포함
엔티티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 함
- 유일한 식별자에 의해 식별 가능
- 두 개 이상의 인스턴스의 집합
- 업무 프로세스에 의해 이용되어야 함
- 반드시 속성이 있어야 함
- 다른 엔티티와 최소 1개 이상의 관계가 있어야 함 -> 통계성/코드성 엔티티는 관계 생략 가능
엔티티의 분류
- 유무형에 따른 분류
유형, 개념, 사건 엔티티
- 유형 : 물리적 형태 (ex.. 사원, 물품, 강사)
- 개념 : 개념적 정보 (ex.. 조직, 보험상품)
- 사건 : 업무 수행 시 발생 (ex.. 주문, 청구, 미납)
- 발생 시점에 따른 분류
기본/키, 중심, 행위 엔티티
- 기본 : 그 업무에 원래 존재하는 정보, 타 엔티티의 부모 역할, 자신의 고유한 주식별자를 가진다. (ex .. 사원, 부서)
- 중심 : 기본 엔티티로부터 발생, 다른 엔티티와의 관계로 많은 행위 엔티티 생성 (ex.. 계약, 사고, 주문)
- 행위 : 2개 이상의 부모 엔티티로부터 발생, 자주 바뀌거나 양이 증가 (ex.. 주문 목록, 사원 변경 이력)
엔티티의 명명
- 현업 업무에서 사용하는 용어 사용, 약어 사용 금지, 단수명사 사용, 고유한 이름 사용, 생성 의미대로 부여
속성
- 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 분리되지 않는 최소의 데이터 단위
- 한 개의 엔티티는 2개 이상의 인스턴스 집합
- 한 개의 엔티티는 2개 이상의 속성을 가진다.
- 한 개의 속성은 1개의 속성 값을 가진다.
구성 방식의 분류
PK, FK, 일반 속성
속성의 분류
기본, 설계, 파생 속성
- 기본 : 업무로부터 추출한 모든 일반적인 속성
- 설계 : 업무를 규칙화하기 위해 새로 만들거나 변형, 정의하는 속성 (ex.. 일련번호)
- 파생 : 다른 속성에 영향을 받아 발생하는 속성, 빠른 성능을 낼 수 있도록 원래 속성의 값을 계산, 적을 수록 좋다.(ex..합)
도메인
- 속성에 대한 데이터 타입, 크기, 제약사랑 지정
속성의 명명
- 해당 업무에서 사용하는 이름 부여
- 서술식 속성명을 사용 금지
- 약어 사용 금지
- 구체적으로 명명하여 데이터 모델에서 유일성 확보
관계
- 엔티티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태, 관계 페어링의 집합 (ex.. 강사 - 가르친다(관계) - 수강생)
페어링
- 엔티티 안에 인스턴가 개별적으로 관계를 가지는 것
UML(통합모델링 언어)에서의 관계
- 연관관계 (실선) : 항상 이용하는 관계 (ex.. 소속된다.)
- 의존관계 (점선) : 상대 행위에 의해 발생하는 관계 (ex.. 주문한다.)
관계의 표기법
관계명 : 관계의 이름
관계차수 : 1:1, 1:M, M:N
관계선택성 : 필수관계, 선택관계
관계 체크사항
- 2개의 엔티티 사이에 관심있는 연관 규칙이 있나 ?
- 2개의 엔티티 사이에 정보의 조합이 발생하나 ?
- 업무 기술서, 장표에 관계 연결에 대한 규칙이 서술되어 있나 ?
- 업무 기술서, 장표에 관계 연결을 가능케 하는 동사가 있나 ?
식별자
- 엔티티 내에서 인스턴스를 구분하는 구분자
- 식별자는 논리적, key는 물리적 데이터 모델링 단계에 사용
식별자의 특징
- 유일성, 최소성, 불변성, 존재성
- 유일성 : 주식별자에 의해 모든 인스턴스들이 유일하게 구분
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 불변성 : 지정된 주식별자의 값은 자주 변하지 않아야 한다. 변하면 이전 기록 없어진다.
- 존재성 : 주식별자가 지정되면 반드시 값이 들어와야 한다.
식별자 분류
대표성 여부
- 주식별자, 보조식별자
- 주식별자 : 엔티티 내에서 각 occurance를 구분할 수 있는 구분자, 타 엔티티와 참조관계를 연결한다.
- 보조연결자 : 구분자이지만 대표성과 참조관계 연결이 없다.
스스로 생성 여부
- 내부식별자, 외부식별자
- 내부식별자 : 스스로 생성되는 식별자
- 외부식별자 : 타 엔티티로부터 받아오는 식별자
속성의 수
- 단일식별자, 복합식별자
- 단일식별자 : 하나의 속성으로 구성
- 복합식별자 : 2개 이상의 속성으로 구성
대체 여부
- 본질식별자, 인조식별자
- 본질식별자 : 하나의 속성으로 구성
- 인조식별자 : 인위적으로 만든 식별자
주식별자 도출기준
- 명칭, 내역등과 같이 이름으로 기술되는 것들은 안 된다.
- 해당 업무에서 자주 이용되는 속성
- 복합적으로 주식별자로 구성할 경우 너무 많은 속성은 안된다.
- 너무 많으면 인조식별자로 생성한다.
식별자 관계
주식별자
- 자신의 주식별자로 부모의 주식별자 상송
- 부모로부터 받은 식별자를 자식 엔티티의 주식별자로 이용하는 경우
- 강한 연결관계 표현, 실선 표기
- 식별자 관계로만 설정 시 주식별자 증가로 오류 유발
비식별자
- 부모 속성을 자식의 일반 속성으로 사용하는 경우
- 부모 없는 자식이 생성될 수 있는 경우
- 부모와 자식의 생명주기가 다른 경우
- 여러 개의 엔티티가 하나의 엔티티로 통합되어 표현 되었는데 각각의 엔티티가 별도의 관계를 가진 경우
- 자식 엔티티에 별도의 주식별자를 생성하는 것이 더 유리한 경우
- SQL 문장이 길어져 복잡성이 증가되는 것을 방지
- 약한 연결관계 표현, 점선 표기
- 비식별자 관계로만 설정 시 부모 엔티티와 조인하여 성능 저하
'IT_STUDY > SQLD' 카테고리의 다른 글
[ SQLD ] NULL, 정렬, 숫자함수, 문자함수, 날짜함수 (0) | 2024.03.01 |
---|---|
[ SQLD ] ESCAPE / ROWNUM / TOP() (1) | 2024.02.10 |
[ SQLD ] SQL 연산 / Alias / CONCAT / IN / LIKE / NOT (0) | 2024.02.07 |
[ SQLD ] 데이터 모델과 성능 (2) (0) | 2024.02.05 |
[ SQLD ] 데이터 모델과 성능 (1) (1) | 2024.02.05 |