01. 데이터 모델링 (Data Modeling) |
데이터 모델링 (Data Modeling) : 현실세계를 데이터베이스로 표현하기 위해서 추상화 한다.
01_1 데이터모델링의 특징
추상화 (Abstraction) - 공통적인 특징을 간략히 표현
단순화 (Simplification) - 누구나 쉽게 이해할 수 있도록 표현
명확성 (Clarity) - 명확하게 의미가 해석되고 한가지 의미를 가져야함
01_2 데이터모델링의 단계
_1 개념적 모델링 : 업무적 관점에서의 모델링, 엔터티(Entity)와 속성(Attribute)을 도출
개념적 ERD(Entity Relationship Diagram)를 작성
_2 논리적 모델링 : 개념적 모델링을 논리적 모델링으로 변환
식별자를 도출하고 필요한 모든 릴레이션을 정리
정규화를 수행해서 데이터 모델의 독립성 확보(재사용성 높임)
_3 물리적 모델링: 성능, 보안, 가용성 등을 고려하여 데이터 베이스 실제 구축
(테이블, 인덱스, 함수 등)
01_3 데이터 모델링을 위한 ERD(Entity Relationship Diagram)
작성절차
_1 엔터티를 도출하고 그린다.
_2 엔터티를 배치한다.
_3 엔터티 간의 관계를 설정한다.
_4 관계명을 서술한다.
ex) 계좌를 계설한다 / 주문을 발주한다. / 종목을 선택한다.
_5 관계참여를 표현한다.
ex) 고객이 여러 개의 계좌를 개설할 수 있다.
_6 관계의 필수여부를 표현한다.
ex) 모든 고객은 반드시 하나의 계좌를 개설해야 한다.
고려사항
중요한 엔터티는 왼쪽 상단에 배치, 쉬워야 하며 복잡하지 않아야 한다.
01_4 데이터모델링의 고려사항
_1 데이터모델링의 독립성 : 정규화(중복된 데이터를 제거) 되어
독립성을 확보한 모델은 고객의 업무 변화에 능동적으로
대응할 수 있다.
_2 고객요구사항의 표현 : 간결하고 명확하게 표현
_3 데이터 품질 확보 : 데이터 표준을 정의하고 표준 준수율을 관리해야 한다.
02. 3층 스키마(3-Level Schema) |
02_1 3층 스키마
데이터의 독립성을 확보하면 데이터 복잡도 감소, 데이터 중복 제거,
사용자 요구사항 변경에 따른 대응력 향상,
관리 및 유지보수 비용 절감 등의 장점을 가진다.
3단계 계층으로 분리해서 독립성을 확보하는 방법으로 각 계층을 뷰(View)라고 한다.
* 3층 스키마의 독립성
논리적 독립성 - 개념 스키마가 변경되더라고 외부스키마가 영향을 받지 않는 것이다.
물리적 독립성 - 내부 스키마가 변경되더라고 개념스키마가 영향을 받지 않는 것이다.
02_2 3층 스키마 구조
참고
https://velog.io/@ash3767/%EC%8A%A4%ED%82%A4%EB%A7%88%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
03. 엔터티(Entity) |
03_1 엔터티
업무에서 관리해야 하는 데이터 집합을 의미, 저장되고 관리되어야하는 데이터
* 엔터디 도출
1. 고객이 회원가입을 한다. 회원으로 가입할 때는 회원ID, 패스워드, 이름, 주소,
전화번호 등을 입력해야 한다.
2. 회원으로 가입하기 위해서는 반드시 하나의 계좌를 개설해야한다.
3. 고객은 계좌를 여러 개 개설할 수 있다.
4. 계좌를 개설할 때는 계좌번호, 계좌명, 예수금, 계좌개설 지점, 계좌담당자가 입력된다.
03_2 엔터티 특징
식별자 - 유일한 식별자가 있어야 한다. (회원ID, 계좌번호)
인스턴스 집합 - 2개 이상의 인스턴스가 있어야한다. (고객정보는 2개 이상)
속성 - 반드시 속성을 가지고 있어야 한다. (고객 엔터티에 회원ID, 패스워드, 이름, 주소, 전화번호)
관계 - 다른 엔터티와 최소한 한개 이상 관계가 있어야 한다. (고객은 계좌를 계설한다)
업무 - 업무에서 관리되어야하는 집합이다.(고객, 계좌)
* 릴레이션과 테이블, 인스턴스(Instance)
릴레이션과 테이블은 같은 의미하고 해석,
릴레이션에 기본키 및 제약조건을 설정하면 테이블이 된다.
단 Relationship은 릴레이션 간의 관계를 의미.
인서턴스는 릴레이션이 가질 수 있는 값의 의미 (행의 수)
03_3 엔터티 종류
유형과 무형 | 유형엔터티 | -업무에서 도출, 지속적으로 사용 (고객, 강사, 사원 등) |
개념엔터티 | - 유형엔터티에는 물리적 형태가 있지만, 개념엔터티에는 물리적 형태가 없다 (거래소 종목, 코스닥 종목, 생명보험 상품) |
|
사건엔터티 | -비지니스 프로세스를 실행하면서 생성되는 엔터티 (주문, 체결, 취소주문 등) |
|
발생 시점 | 기본엔터티 (Basic) |
- 키 엔터티 , 독립적으로 생성되는 엔터티 (고객, 상품, 부서 등) |
중심엔터티 (Main) |
-기본엔터티와 행위엔터티 중간에 있는것 (계좌, 주문, 취소, 체결) |
|
행위엔터티 (Active) |
-2개 이상의 엔터티로부터 발생 (주문, 이력, 체결 이력 등 ) |
04. 속성(Attribute) |
04_1 속성
업무에서 필요한 정보인 엔터티가 가지는 항목이며 더이상 분리되지 않은 단위로 업무에
필요한 데이터를 저장할 수 있다. 인스턴스의 구성요소이고 의미적으로 더이상 분해되지 않는다.
04_2 속성의 특징과 종류
업무에서 관리되는 정보. 하나의 값만 가짐. 주식별자에게 함수적으로 종속됨.
분해 여부 | 단일 속성 | - 하나의 의미로 구성된 것 (회원ID, 이름 등) |
복합 속성 | - 여러 개의 의미가 있는 것으로 대표적으로 주소가 있다. - 주소는 시, 군, 동 등으로 분해될 수 있다. |
|
다중값 속성 | - 속성에는 여러개의 값을 가질 수 있는 것 (상품 리스트) - 다중값 속성은 언테티로 분해된다. |
|
특성 | 기본 속성 | - 비지니스 프로세스에서 도출되는 본래의 속성 (회원ID, 이름, 계좌번호, 주문 일자 등) |
설계 속성 | - 데이터 모델링 과정에서 발생되는 속성이다. - 유일한 값을 부여한다. (상품코드, 지점코드 등) |
|
파생 속성 | - 다른 속성에 의해서 만들어지는 속성이다. (합계, 평균 등) |
* 도메인(Domain)
속성이 가질 수 있는 값의 범위 (성별이라도 속성의 도메인은 남자와 여자이다.)
05. 관계(Relationship) |
05_1 관계
엔터테 간의 관련성을 의미.
존재 관계(두 개의 엔터티가 존재 여부의 관계가 있는 것)와
행위 관계(두 개의 엔터티가 어떤 행위의 의한 관련성이 있는 것)로 분류된다.
05_2 관계의 종류
_존재 관계 : 엔터티 간의 상태를 의미
(고객이 은행에 회원가입을 하면 관리점이 할당되고,
그 할당된 관리점에서 고객을 관리한다.)
_행위 관계: 엔터티 간의 어떤 행위가 있는 것
(증권회사는 계좌를 계설하고 주문을 발주하는 것이다.)
05_3 관계 차수
두 개의 엔터티 간에 관계를 참여하는 수를 의미
_1대1관계 : 완전1대1 - 하나의 엔터티에 관계되는 엔터디의 관계가 하나인 경우, 반드시 존재
선택적1대1 - 하나의 엔터티에 관계되는 관계가 하나이거나 없을 수도 있다.
_1대N관계 : 엔터티에 행이 하나 있을때 다른 엔터티의 값이 여러개 있는 관계 (고객은 여러개의 계좌를 가질 수 있다)
_ M대N관계 : 두 개 엔터티가 서로 여러 개의 관계를 가지고 있는 것
(학생이 여러 개의 과목을 수강할 수 있다. 과목은 여러명의 학생이 수강한다.)
관계형 데이터베이스에서 M대N 관계의 조인은 카테시안곱이 발생한다. 그래서 1대N, N대1로 해소해야함
_필수적 관계와 선택적관계 : 필수적 관계는 'ㅣ'표현, 선택적관계는 'O'로 표현
필수적 - 반드시 하나가 있어야함.
선택적- 없을 수도 있는 관계
*카테시안곱
두 개 이상의 기준 테이블에 대해 연결 가능한 행을 모두 결합하는 조인 방법 union(교집합)/ interction(합집합)
join 쿼리 중에 WHERE 절에 기술하는 join 조건이 잘못 기술되었거나 아예 없을 경우 발생하는 현상입니다.
05_4 식별관계(Identification Relationship)와 비식별관계(Non-Identification Relationship)
_식별관계 : 독립적으로 존재할 수 있는 강한개체(Strong Entity)
고객 엔터티의 기본기인 회원ID를 계좌 엔터티의 기본키의 하나로 공유한는 것
강한 개체의 기본키 값이 변경되면 식별 관계(기본키를 공유받은)에 있는 엔터티의 값도 변경됨
_비식별관계 : 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것
비식별 관계는 점선으로 표현
06. 엔터티 식별자(Entity Identifier) |
식별자라는 것은 엔터테를 대표할 수 있는 유일성을 만족하는 속성
06_1 주식별자(기본키, Primary Key)
_ 최소성 : 최소성을 만족하는 키
_ 대표성 : 엔터티를 대표할 수 있어야 한다.
_ 유일성 : 엔터티의 인스턴스를 유일하게 식별한다.
_ 불변성 : 자주 변경되지 않아야 한다.
기본키 (Primary Key) |
후보키 중에서 엔터티를 대표할 수 있는 키 |
후보키 (Candidate Key) |
유일성과 최소성을 만족하는 키 |
슈퍼키 (Super Key) |
유일성은 만족하지만 최소성을 만족하지 않는 키 |
대체키 (Altermate Key) |
여러 개의 후보키 중에서 기본키를 선정하고 남은 키 |
외래키 (Foreign Key) |
하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조 무결정을 확인하기 위해서 사용되는 키. 즉, 허용된 데이터 값만 데이터베이스 저장하기 위해서 사용됨 |
06_2 식별자의 종류
대표성 | 주식별자 | -유일성과 최소성을 만족시키면서 대표하는 식별자 -다른엔터티와 참조관계로 연결될 수 있다 |
보조 식별자 | -유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자 | |
생성여부 | 내부 식별자 | 엔터티 내부에서 스스로 생성되는 식별자 (부서코드, 주문번호, 종목코드 등) |
외부 식별자 | 다른 엔터티와의 관계로 인해서 만들어지는 식별자 (계좌엔터티에 회원ID) |
|
속성의 수 | 단일 식별자 | 하나의 속성으로 구성 (고객엔터티에 회원ID) |
복합 식별자 | 두 개 이상의 속성으로 구성 | |
대체 여부 | 본질 식별자 | 비지니스 프로세스에서 만들어지는 식별자 |
인조 식별자 | 인위적으로 만들어지는 식별자 후보 식별자 중에서 주식별자로 선정할 것이 없거나 주식별자가 너무 많은 칼럼으로 되어있는 경우 사용 ->순서번호를 사용해서 식별자를 만드는 것 |
02. 데이터 모델과 성능 |
'SQLD 개발자' 카테고리의 다른 글
SQL(Structured Query Language) 종류 (0) | 2023.02.20 |
---|---|
관계형 데이터 베이스(Relation Database) (0) | 2023.02.11 |