* 관계 : 엔터티의 인스턴스 사이 의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태

 

* 관계의 패어링

-관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(패어링)이고 이것의 집합을 관계로 표현

-따라서 개별 인스턴스 가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다

 

*관계 (ERD는 구분하지 않는다, UML은 연관관계-의존관계로 구분한다)

  • 존재에 의한 관계
  • 행위에 의한 관계

 

*관계 표기법

1. 관계명

2. 관계차수 -> 1:1 , 1:M , M:N

3. 관계선택사양 -> 필수 / 선택

 

*관계의 체크사항

1. 두 엔터티 연관규칙 존재?

2. 정보의 조합 발생?

3. 업무기술서, 장표에 관계 서술 동사 존재?

4. 업무기술서, 장표에 관계연결 규칙 존재?

 

*식별자 : 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드 시 하나의 유일한 식별자가 존재해야 한다.

 

*식별자 특징

  1. 엔터티 내 대표성
    1. O : 주식별자 : 유일성, 최소성, 불변성, 존재성 -> 참조관계 설정 가능 ( 이름등은 주식별자 부적절)
    2. X : 보조식별자 : 대표성이 없다, 연결 불가
  2. 스스로 생성
    1.  O : 내부식별자 :  
    2.  X : 외부식별자 : 타 엔터티에서 받아옴
  3. 단일 속성
    1. O : 단일식별자 :
    2. X : 외부식별자 : 둘 이상의 속성을 갖는다
  4. 대체 여부
    1. O : 본질식별자 : 업무에 의해 생성
    2. X : 인조식별자 :

 

* 주식별자 도출기준 :

1. 해당 업무에서 자주 이용되는 속성을 주식별자로 지정하도록 함

2. 명칭, 내역 등과 같이 이름으로 기술되는 것은 피함

3. 속성의 수가 많아지지 않도록 함

 

 

 

'SQLD' 카테고리의 다른 글

SQLD (2) 엔터티  (0) 2022.11.04
SQLD (1)모델링  (0) 2022.11.04
SQLD () JOIN  (0) 2022.06.28
SQLD (4) 성능데이터모델링 , 정규화  (0) 2021.10.05

* 엔터티 :

-업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)

-업무 활동상 지속적인 관심을 가 지고 있어야 하는 대상으로서 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합

- 엔터티는 그 집합에 속하는 개체들의 특성을 설명할 수 있는 속성(Attribute)을 갖는다

- 엔터티는 인스턴스의 집합이라고 말할 수 있고, 반대로 인스턴스라는 것은 엔터티의 하나의 값에 해당한다고 정의할 수 있다

 

 

* 엔터티의 특징

1. 반드시 해당 업무에 필요

2. 유일한 식별자 존재

3. 영속적으로 존재하는 두개 이상 인스턴스의 집합

4. 업무프로세스에 이용됨

5. 반드시 속성 존재(두 개 이상)

6. 다른 엔터티와 최소 한 개 이상의 관계

 

*엔터티의 분류

  • 유무형에 따라
    • 유형엔터티 : 물리적 존재 ex) 직원
    • 개념엔터티 : 개념적 정보로 존재 ex) 조직
    • 사건엔터티 : 업무 수행으로 발생 ex) 주문 내역
  • 발생 시점에 따라
    • 기본엔터티 : 독립적, 부모가 됨
    • 중심엔터티 : 그 업무의 중심 역할
    • 행위엔터티 : 두 개 이상의 부모로부터

*엔터티 명명 규칙

1. 현업 사용 용어

2. 약어를 쓰지 않는다

3. 단수

4. 유일한

5. 의미대로

 

*속성

-> 업무에서 필요로하는 인스턴스에서 관리하는 의미상 더 이상 분리되지 않는 최소 데이터 단위

-> 한개의 속성은 한개의 속성값을 갖는다

-> 엔터티를 설명하고 인스턴스의 구성요소가 된다

 

*속성의 특징

- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보

- 정해진 주식별자에 함수적 종속성을 가져야 한다

- 하나의 속성에는 한 개의 값만을 가진다

 

*속성의 분류

  • 특성에 따라 분류
    • 기본 속성 : 업무에서 추출
    • 설계 속성 : 모델링을 위해 , 업무를 규칙화하기 위해 생성 
    • 파생 속성 : 계산된 값
  • 구성 방식에 따라
    • PK
    • FK
    • 일반

* 엔터티, 인스턴스, 속성, 속성값의 관계

- 엔터티에는 두 개 이상의 인스턴스가 존재

- 각각의 엔터티에는 고유의 성격을 표현하는 속성정보를 두 개 이상 갖는다

- 하나의 속성은 하나의 인스턴스에만 존재할 수 있다

- 속성은 관계로 기술될 수 없고 자신이 속성을 가질 수도 없다

- 엔터티 내에 있는 하나의 인스턴스는 각각의 속성들의 대해 한 개의 속성값만을 가질 수 있다

 

* 도메인

-각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인(Domain)이라 한다

 

* 속성의 명명

-현업에서 사용하는 이름을 부여

 

'SQLD' 카테고리의 다른 글

SQLD (3)관계, 식별자  (0) 2022.11.04
SQLD (1)모델링  (0) 2022.11.04
SQLD () JOIN  (0) 2022.06.28
SQLD (4) 성능데이터모델링 , 정규화  (0) 2021.10.05

* 모델링?

1. 정보시스템 구축, 분석

2. 단지 시스템 구현을 의미하지 않고 , 모델링 자체로 업무를 설명하고 분석

(복잡한 현실-> 표기법 등으로 단순화, 업무를 설명)

3. 모델링의 특징 : 추상화, 단순화, 명학화

 * 추상화 : 현실세계를 일정한 형식에 맞추어 표현

 * 단순화 : 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현

 * 명확화 : 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술

 

--> 현실세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법

 

* 모델링의 세 가지 관점?

1. 데이터관점

 - 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해서 모델링

2. 프로세스관점

 - 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링

3. 데이터와 프로세스의 상관관점

 - 업무가 처리하는 일의 방법에 따 라 데이터는 어떻게 영향을 받고 있는지 모델링

 

* 데이터 모델링의 중요성

1. 파급효과

2. 복잡한 정보 요구사항의 간결한 표현

3. 데이터 품질

 

* 데이터 모델링 주의점

1.  중복 최소화

2.  비유연성 

3.  비일관성

 

*모델링의 3단계 (추상화 수준에 따라)

1. 개념적 모델링 : 높은 추상화 , 업무중심

2. 논리적 모델링 : 구체화

3. 물리적 모델링 : 테이블 스페이스 고려

 

* ANSI/SPARK의 3단계 구조

(스키마)

1. 외부 : 여러 사용자 관점 - 모든 개개인의 관점

2. 개념 : 모든 사용자 통합 관점 <- (데이터 모델링)

3. 내부 : DB 물리적 저장 형식

 

* 데이터 모델링의 세 가지 요소

1) 업무가 관여하는 어떤 것(Things)

2) 어떤 것이 가지는 성격(Attributes)

3) 업무가 관여하는 어떤 것 간의 관계(Relationships)

 

* ERD 작성 순서

1. 그리기 2. 배치 3. 관계 설정 4. 관계명칭 기술

5. 관계의 참여도 6. 관계의 필수 여부

 

* 좋은 데이터 모델의 요소

1. 완전성 - 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 한다

2. 중복배제 - 하나의 데이터베이스 내에 동일한 사실은 반드시 한 번만 기록

3. 업무규칙 - 수많은 업무규칙(Business Rules)을 데이터 모델에 표현하고 이를 해당 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 제공하는 것

4. 데이터 재사용 - 데이터가 애플리케이션에 대해 독립적으로 설계되어야만 데이터 재사용성을 향상시킬 수 있다

5. 의사소통 -  데이터 모델이 진정한 의 사소통(Communication)의 도구로서의 역할을 하게 된다

6. 통합성 - 동일한 성격의 데이터를 한 번만 정의하기 위해서는 공유 데이터에 대한 구조를 여러 업무 영역에서 공동으로 사용하기 용이하게 정의할 수 있어야 한다

 

 

'SQLD' 카테고리의 다른 글

SQLD (3)관계, 식별자  (0) 2022.11.04
SQLD (2) 엔터티  (0) 2022.11.04
SQLD () JOIN  (0) 2022.06.28
SQLD (4) 성능데이터모델링 , 정규화  (0) 2021.10.05

EQUI(등가) JOIN : 두 개의 테이블 간에 컬럼 값들이 정확하게 일치하는 경우로 대부분 PK<->FK 기반

 조건은 WHERE 절에 기술한다

 

Non EQUI(비등가) JOIN : 두 개의 테이블 간에 컬럼 값들이 정확하게 일치하지 않는 경우. = 이 아닌 BETWEEN, >, < 등으로 비교한다. 

 

조인 기법 - NL JOIN, HASH JOIN , MERGE JOIN

 

[ NL JOIN : 중첩된 반복문과 유사한 방식으로 조인을 수행 ]

 1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음

 2. 선행 테이블의 조인 키 값을 가지고 후행 테이블에서 조인 수행

 3. 선행 테이블의 조건을 만족하는 모든 행에 대해 1번 작업 반복 수행

 

[ SORT MERGE JOIN : 조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행 ]

  * NL JOIN은 주로 랜덤 액세스 방식으로 데이터를 읽는 반면 스캔 방식으로 데이터를 읽음

 * 대량의 조인 작업에서는 HASH JOIN이 성능상 유리

 * 인덱스가 존재하지 않을 경우에도 사용할 수 있는 조인 기법

 1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음

 2. 선행 테이블의 조인 키를 기준으로 정렬 작업을 수행

 3. 후행 테이블에서 주어진 조건을 만족하는 행을 찾음

 4. 후행 테이블의 조인 키를 기준으로 정렬 작업을 수행

 5. 정렬된 결과를 이용하여 조인을 수행하며 조인에 성공하면 추출버퍼에 넣음

[ HASH JOIN : 해싱 기법을 이용하여 조인을 수행  ]

 1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음

 2. 선행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해쉬 테이블을 생성

+ 조인 칼럼과 SELECT 절에서 필요로 하는 칼럼도 함께 저장됨

 3. 후행 테이블에서 주어진 조건을 만족하는 행을 찾음

 4. 후행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해당 버킷을 찾음

+ 조인 키를 이용해서 실제 조인될 데이터를 찾음

 5. 조인에 성공하면 추출버퍼에 넣음

 

'SQLD' 카테고리의 다른 글

SQLD (3)관계, 식별자  (0) 2022.11.04
SQLD (2) 엔터티  (0) 2022.11.04
SQLD (1)모델링  (0) 2022.11.04
SQLD (4) 성능데이터모델링 , 정규화  (0) 2021.10.05

*성능데이터모델링

-> SQL구문의 문제로 성능 저하가 가능하지만

근본적 디자인이 잘못된 경우도 존재한다

1. 데이터 모델로 구조로 성능저하

2. 데이터가 대용량이 되어 불가피한 성능 저하

3. 인덱스 특성 고려없이 생성

=> 분석 설계 단계에서 성능 설계를 하지 않으면 시간이 지날수록 성능개선 비용이 증가한다.

 

*성능 데이터 모델링 고려사항 순서

1. 정규화를 정확하게 한다

2. DB용량을 산정

3. 발생 트랜잭션 유형 파악

4. 용량과 트랜잭션 유형에 따라 반정규화

5. PK FK 조정

6. 성능 관점 데이터 모델 검증

 

*정규화 / 반정규화

  • 정규화 : 중복을 최소로 만든다
  • 반정규화 : 중복을 더해 읽는 시간을 최소로 해 성능 향상

 

*정규화 원칙

1. 정보의 무손실 표현

2. 분리의 원칙

3. 중복 감소

 

* 1차 정규화 : 같은 성격과 내용의 컬럼이 연속적으로 중복 존재할떄

 -> 제거 후 PK 추가, 테이블 생성

* 2차 정규화 : PK가 복합키이지만 속성이 부분적 키에만 종속됨 (부분적 함수 종속 관계)

 -> 중복이 되어도 1:M 으로 떼어낸다

* 3차 정규화 : PK에 의존하지 않고 일반 컬럼에 의존하는 속성 존재 (이전적함수종속관계)

 

 

 

'SQLD' 카테고리의 다른 글

SQLD (3)관계, 식별자  (0) 2022.11.04
SQLD (2) 엔터티  (0) 2022.11.04
SQLD (1)모델링  (0) 2022.11.04
SQLD () JOIN  (0) 2022.06.28

+ Recent posts