본문 바로가기
SQL 공부일지

SQL 공부 일지 2일차 230811

by 우기37 2023. 8. 11.

## 공부정리

1장 데이터 모델링의 이해 2편

4) 관계

5) 식별자

 

 

 

 

#4 관계

1 관계와 페어링(Pairing)

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

페어링 : 엔티티 내 인스턴스간 개별적 관계 -> 이것의 집합을 관계로 표현

 

인스턴스의 집합 → 엔티티 페어링의 집합 → 관계

 

 

2 관계의 분류

1) ERD(Entity Relationship Diagram)

존재에 의한 관계, 행위에 의한 관계 => 구분 없이 단일화된 표기법 사용

 

2) UML(Unified Modeling Language)

연관 관계(연관(존재적)관계는 항상 이용하는 관계), 의존 관계(상대방 행위에 의한 발생하는 관계) => 실선과 점선 표기번으로 구분

 

3 관계의 표기법

1) 관계명

엔티티가 관계에 참여하는 형태, 각 관계는 2개의 관계명 및 관점을 가짐

2) 관계차수(Cardinaty)

1 : 1(일대일), 1 : M(일대다), M : M(다대다) => 관계 엔티티 이용

3) 관계선택사양

필수참여(Mandatory), 선택참여(Optional) (필수는 |, 선택은 O 로 표시)

 

 

4 관계 읽기

1) 1 : 1(일대일) 관계차수

이미지 출처 : https://velog.io/@i_am_heeeun/%EA%B4%80%EA%B3%84

2) 1 : M(일대다) 관계차수

이미지 출처 : https://velog.io/@i_am_heeeun/%EA%B4%80%EA%B3%84

3) M : M(다대다) 관계차수

이미지 출처 : https://velog.io/@i_am_heeeun/%EA%B4%80%EA%B3%84

 

4) 관계의 분류

이미지 출처 : https://3rdscholar.tistory.com/44

 

5) 관계 읽는 방법

  • 기준엔터티를 한개 또는 각으로 읽는다.
  • 대상엔터티의 관계참여도, 즉 개수를 읽는다.
  • 관계선택사양과 관계명을 읽는다.

이미지 출처 : https://velog.io/@i_am_heeeun/%EA%B4%80%EA%B3%84

 

 

6) 관계의 정의

 

두 개의 엔터티 사이에 간심있는 연관규칙이 존재하는가?

두 개의 엔터티 사이에 정보의 조합이 발생하는가?

업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?

업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?

 

 

 

#5 식별자

1 식별자의 개념

하나의 엔터티에 구성되어 있는 여러 개 속성 중 엔터티를 대표할 수 있는 속성을 의미

하나의 엔터티는 반드시 하나의 유일한 식별자가 존재

 

 

2 식별자의 분류

분류 식별자 설명
대표성 주식별자 - 엔터티 내에서 각 인스턴스를 구분가능
- 타 엔터티와 참조관계를 연결가능(primary key에 해당)
보조식별자 - 엔터티 내에서 각 인스턴스를 구분가능
- 대표성을 갖지 못해 참조관계 연결에 사용되지 않음(candidate key에 해당)
목적 내부식별자 - 자연스럽게 존재하는 식별자(본질식별자)
외부식별자 - 관계를 통해 유입되는 타 엔터티의 식별자(foreign key에 해당)
- 주식별자 속성 또는 일반 속성으로 포함될 수 있음
속성 수 단일식별자 - 하나의 속성으로 구성된 식별자
복합식별자 - 둘 이상의 속성으로 구성된 식별자
본질 본질식별자 - 업무에 의해 만들어지는 식별자
인조식별자 - 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자

 

 

3 식별자의 특징

- 유일성 : 주식별자에 의해 엔터티 내의 모든 인스턴스들을 유일하게 구분함

- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함

- 불변성 : 주식별자가 지정되면 그 식별자의 값은 변하지 않아야 함

- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야 함(Not Null)

 

 

4 주식별자 도출 기준

- 유일성을 갖는 속성 중 해당 업무에서 자주 이용되는 속성을 지정

- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정 X

→ 구분자가 존재하지 않을 경우 새로운 식별자 생성(일련번호, 코드 등)

- 복합식별자를 구성할 경우 너무 많은 속성이 포함되지 않아야 함

→ 주식별자 개수가 많을 경우 새로운 인조식별자를 생성

 

 

5 식별자 관계와 비식별자 관계

1) 식별자 관계(실선)

- 자식이 부모의 기본키(PK)를 상속받아 기본키로 사용하는 경우

- 강한 연결관계, 부모에 종속, Not Null, 1 : 1, 1 : N 관계

- 문제점 : 자식의 주식별자 속성이 지속적으로 증가할 수 있음 -> 복잡, 오류 가능성

 

2) 비식별자 관계(점선)

- 부모로부터 속성을 받아 일반 속성으로 사용하는 경우(약한 종속)

- 문제점 : 부모까지 조인, 불필요 현상 발생 -> SQL 구문이 길어져 성능 저하

 

이미지 출처 : http://www.gurubee.net/wiki/pages/27427078

 

 

'SQL 공부일지' 카테고리의 다른 글

SQL 공부 일지 6일차 230818  (1) 2023.08.19
SQL 공부 일지 5일차 230816  (1) 2023.08.17
SQL 공부 일지 4일차 230814  (0) 2023.08.14
SQL 공부 일지 3일차 230812  (0) 2023.08.12
SQL 공부 일지 1일차 230809  (0) 2023.08.09