데이터 모델링의 주요 특징
추상화 ( Abstraction ) | 현실 세계를 간략하게 표현한다. |
단순화 (Simplification) | 누구나 쉽게 이해할 수 있도록 표현한다. |
명확성 (Clarity) | 명확하게 의미가 해석되어야 하고 한 가지 의미를 가져야 한다. |
데이터 모델링 절차
개념적 모델링 - > 논리적 모델링 -> 물리적 모델링
데이터 모델의 3가지 관점(View)
데이터 | 비즈니스 프로세스에서 사용되는 데이터 - 구조 , 정적 |
프로세스 | 비즈니스 프로세스에서 수행하는 작업 - 시나리오 , 도메인 , 동적 |
데이터와 프로세스 | 프로세스와 데이터 간의 관계 - CRUD |
데이터 모델링시에 고려사항
데이터 중복, 비유연성, 비일관성이 발생하지 않게 해야한다.
ERD 작성 순서
- 엔터티를 도출하고 그린다.
- 엔터티를 배치한다.
- 엔터티 간에 관계를 설정한다.
- 관계를 서술한다.
- 관계 참여도를 표현한다.
- 관계의 필수 여부를 표현한다.
3층 스키마
- 데이터베이스의 독립성을 확보하기 위한 방법
논리적 독립성 : 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다.
물리적 독립성 : 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다.
외부 스키마 | 응용 프로그램이 접근하는 데이터베이스를 정의 사용자 관점, 업무상 관련이 있는 데이터 접근 |
개념 스키마 | 통합 데이터베이스 구조 설계자 관점, 사용자 전체 집단의 데이터베이스 구조 |
내부 스키마 | 개발자 관점, 데이터베이스의 물리적 저장구조 저장 구조 , 레코드 구조, 필드 정의 ,인덱스 등 |
좋은 모델링의 요건
- 중복배제
- Business Rule
- 완전성
카디널리티(Cardinality)
하나의 릴레이션에서 튜플의 전체 개수를 의미한다.
선택도
특정 조건에 의해서 선택될 것으로 예상되는 레코드의 비율을 의미
조건절에서 요청한 값의 범위 / 전체값으로 계산된다.
도메인
하나의 속성(Attribute)이 가질 수 있는 모든 훤자 값들의 집합을 의미한다.
엔터티의 특징
다른 개체와 확연히 구분되는 특성을 가진다.
그래서 모델의 독립성을 향상 시킬 수 있다.
식별자 | 엔터티는 유일한 식별자가 있어야한다. |
인스턴스 집합 | 2개 이상의 인스턴스가 있어야한다. |
속성 | 엔터티는 반드시 속성을 가지고 있다. |
관계 | 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다. |
업무 | 엔터티는 업무에서 관리되어야 하는 집합이다. |
유형과 무형에 따른 엔터티 종류
유형 엔터티 - 고객 , 강사 , 사원
개념 엔터티 - 거래소 종목, 코스닥 종목 , 생명보험 상품
사건 엔터티 - 주문 , 체결, 취소 주문 , 수수료 청구
발생 시점에 따른 엔터티 종류
기본 엔터티 - 키 엔터티 ( 다른 엔터티로부터 양향을 받지 않고 독립적으로 생성되는 엔터티) - 고객, 상품 , 부서
중심 엔터티 - 기본엔터티와 행위 엔터티 간의 중간에 있는 것
행위엔터티 - 2개 이상의 엔터티로 부터 발생되는 것.
속성(attribute)
업무에서 필요한 정보인 엔터티가 가지는 항목
인스턴스의 구성요소이고 의미적으로 더 이상 분해되지 않는다.
속성의 특징과 종류
속성은 업무에서 관리되는 정보이다.
속성은 하나의 값만 가진다.
주식별자에게 함수적으로 종속된다. 기본키가 변경되면 속성의 값도 변경된다는 것이다.
분해 여부에 따른 속성의 종류
단일 속성 | 하나의 의미로 구성된 것으로 회원ID , 이름 등이다. |
복합 속성 | 여러개의 의미가 있는 것 - 주소는 시, 군 , 동 등으로 분해될 수 있다. |
다중값 속성 | 속성에 여러 개의 값을 가질 수 있는 것으로 예를 들어 상품 리스트가 있다. |
특성에 따른 속성의 종류
기본 속성 | 비즈니스 프로세스에서 도출되는 본래의 속성이다. - 회원ID , 이름 , 계좌번호 , 주문 일자 등 |
설계 속성 | 데이터 모델링 과정에서 발생되는 속성 유일한 값을 부여한다. - 상품코드 , 지점 코드 등 |
파생 속성 | 다른 속성에 의해서 만들어지는 속성이다. - 합계 , 평균 |
관계(Relationship)
존재 관계
엔터티 간의 상태를 의미한다.
- 고객이 은행에 회원가입을 하면 , 관리점이 할당되고 , 그 관리점에서 고객을 관리한다.
행위 관계
엔터티 간에 어떤 행위가 있는 것으로, 계좌를 사용해서 주문을 발주하는 관계가 만들어진다.
- 증권회사는 계좌를 계설하고 주문을 발주하는 것
관계 차수
엔터티 간에 관계에 참여하는 수를 의미
1 대 1 | 완전 1 대 1 관계 (필수적 관계) | 하나의 고객은 하나의 고객등급이 반드시 부여되어야 한다. | 로 표시 |
선택적 1 대 1 관계 | 하나의 고객은 고객등급이 없을 수도 있다. O로 표시 | |
1 대 N | 엔터티에 행이 하나 있을 때 다른 엔터티의 값이 여러 개 있는 관계 | |
M 대 N | 두 개 엔터티가 여러 개의 관계를 가지고 있는 것 학생이 여러개의 과목을 수강할 수 있다. <-> 한 개의 과목은 여러 명의 학생이 수강한다. * 관계형 데이터 베이스에서 M대N 관계의 조인(Join)은 카테시안 곱이 발생한다. 그래서 M대N관계를 1대N , N대1로 해소해야 한다. |
식별 관계와 비식별관계
강한 개체와 약한 개체
강한 개체는 누구에게도 지배되지 않는 독립적인 개체이다.
약한 개체는 개체의 존재가 다른 개체의 존재에 달려 있는 개체이다.
식별관계
고객 엔터티의 기본키인 회원ID를 계좌 엔터티의 기본키의 하나로 공유하는 것이다.
강한 개체의 기본키 값이 변경되면 식별 관계(기본키를 공유받은)에 있는 엔터티의 값도 변경 된다.
식별관계는 실선으로 표현된다.
비식별관계
강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것
비식별관계는 점선으로 표현한다.
주식별자(기본키 ,Primary Key)
최소성 | 주식별자는 최소성으 만족하는 키이다. |
대표성 | 주식별자는 엔터티를 대표할 수 있어야 한다. |
유일성 | 주식별자는 엔터티의 인스턴스를 유일하게 식별한다. |
불변성 | 주식별자는 자주 변경되지 않아야 한다. |
키의 종류
기본키 | 후보키 중에서 엔터티를 대표할 수 있는 키이다. |
후보키 | 후보키는 유일성과 최소성을 만족하는 키이다. |
슈퍼키 | 슈퍼키는 유일성은 만족하지만 최소성을 만족하지 않는 키이다. |
대체키 | 대체키는 여러 개의 후보키 중에서 기본키를 선정하고 남은 키이다. |
외래키 | 하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조 무결성을 확인하기 위해서 사용되는 키이다. ( 허용된 데이터 값만 데이터베이스에 저장하기 위해 사용된다.) |
식별자 종류
대표성 여부 | 주 식별자 | 유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자이다. 다른 엔터티와 참조 관계로 연결될 수 있다. |
보조 식별자 | 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자이다. | |
생성 여부 | 내부 식별자 | 내부 식별자는 엔터티 내부에서 스스로 생성되는 식별자이다. - 부서코드, 주문번호, 종목코드 등 |
외부 식별자 | 다른 엔터티와의 관계로 인하여 만들어지는 식별자이다. - 계좌 엔터티에 회원ID |
|
속성의 수 | 단일 식별자 | 하나의 속성으로 구성된다. - 고객 엔터티의 회원ID |
복합 식별자 | 두 개 이상의 속성으로 구성된다. | |
대체 여부 | 본직 식별자 | 비즈니스 프로세스에서 만들어지는 식별자이다. |
인조 식별자 | 인위적으로 만들어지는 식별자이다. * 인조 식별자는 후보 식별자 중에서 주식별자로 선정할 것이 없거나 주식별자가 너무 많은 칼럼으로 되어 있는 경우에 사용한다. |
'RDBMS > SQL' 카테고리의 다른 글
[SQL] Python 에서 SQL을 다루는 방법. (0) | 2021.01.04 |
---|---|
[SQLD] .SQL 최적화 원리 (Optimizer) (0) | 2020.09.01 |
[SQLD]. SQL 기본 (0) | 2020.08.26 |
[SQLD]. 데이터 모델과 성능( 정규화 , 반정규화 , 분산 데이터 베이스) (0) | 2020.08.25 |
[SQL] 기본 쿼리문 ( SELECT , WHERE , INSERT , UPDATE , DELETE ,ORDER BY) (0) | 2020.04.28 |