일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코딩교육봉사
- 백준알고리즘
- BFS
- 소프티어
- 코틀린
- 공부일지
- 회고
- python
- SW봉사
- 스프링
- SQL
- 데이터베이스
- 정보처리산업기사
- java
- 알고리즘
- 코딩봉사
- 백준
- softeer
- 파이썬
- programmers
- MYSQL
- C++
- 프로그래머스
- 시나공
- CJ UNIT
- 백준 알고리즘
- kotlin
- 문제풀이
- 자바
- 1과목
- Today
- Total
JIE0025
[데이터모델링] ER모델 개념, IE표기법 본문
출처 : 쉽게 배우는 오라클로 배우는 데이터 베이스 개론과 실습
ER 모델 (Entity Relationship)
세상의 사물을 개체(Entity)간의 관계(Relationship)로 표현한다.
ER 다이어그램
ER모델을 표준화 된 그림으로 나타낸 것.
개체 (entity)
- 독립적인 의미를 지닌 유무형의 사람/사물 , 실체
- 속성에 의해 식별됨
- 개체끼리 관계를 가짐
- 데이터베이스에서의 개체는 [낱개로 구성된 것], [낱개가 데이터값을 가지는 것], [데이터 값이 변하는 것]이다.
- 비슷한 속성의 개체 타입(entity type)을 구성, 개체 집합(entity set)으로 묶인다.
>>> 책상위에 책이 3권 있다고 가정하자.
한국의 역사, 한국어 바로알기, 한국적 디자인
책들 각각은 개체(entity)이며, 책 3권을 통틀어 개체 집합(entity set)이라 한다.
또 책들은 "도서" 라는 개체 타입(entity type)으로 묶일 수 있다.
개체 타입 - ER 다이어그램의 표현
기호 | 의미 |
강한 개체 타입 |
|
약한 개체 타입 |
강한 개체 (strong entity)
다른 개체의 도움 없이 독자적으로 존재할 수 있는 개체
약한 개체 ( weak entity)
독자적으로 존재할 수 없는, 반드시 상위 개체 타입을 가지는 개체
속성 (attribute)
개체가 가진 성질
개체 타입 | 속성 |
도서 | 도서이름, 출판사, 단가 |
속성- ER 다이어그램 표현
- 속성 : 타원, 개체(직사각형)과 실선으로 연결됨.
- 속성 이름 : 타원 중앙에 표기
- 개체의 유일한 식별 키 일경우 속성 이름에 밑줄을 긋는다.
속성 유형
기호 | 의미 | 설명 |
|
속성 | 일반적 속성, 속성의 이름은 타원 중앙에 표기 |
키 속성 | 개체의 유일한 식별 키일 경우 속성이름에 밑줄을 그음. | |
약한 개체의 식별자 | 약한 개체는 키를 갖지않는다. 대신 식별자를 갖는데, 속성 이름 아래에 점선을 긋는다. |
|
다중 값 속성 | 취미와 같은 여러개의 값을 갖는 속성을 이중타원으로 표현한다. | |
유도 속성 | 유도가 가능한 속성 ex)나이 점선 타원 |
|
복합 속성 | 주소 = (시, 구, 동 ) 처럼 여러 속성으로 구성된 속성 큰 타원 아래에 작은 타원으로 연결 |
관계 (relationship)
개체 사이의 연관성을 나타내는 개념
관계 타입 (relationship type)
개체 타입과 개체타입간의 연결 가능한 관계를 정의한 것,
관계 집합 (relationship set)
관계로 연결된 집합
관계 타입 - ER 다이어그램 표현
기호 | 의미 |
관계 타입 |
관계 타입 유형
차수에 따른 유형
차수 : 관계 집합에 참가하는 개체 타입의 수
기호 | 의미 | 설명 |
1진 관계 | 1개의 개체가 자신(개체)과 관계를 맺음 | |
2진 관계 | 2개의 개체가 관계를 맺음 | |
3진 관계 | 3개의 개체가 관계를 맺음 |
- 1진 관계 (recursive relationship)
1개의 개체가 자신(개체)과 관계를 맺음
- 2진 관계 (binary relationship)
2개의 개체가 관계를 맺음
- 3진 관계 (ternary relationship)
3개의 개체가 관계를 맺음
관계 대응수 (cardinality)
두 개체 타입의 관계에 실제로 참여하는 개별 개체의 수
관계 대응수에 따른 관계 타입 유형
기호 | 의미 | 설명 |
일대일 관계 | 하나의 개체가 하나의 개체에 대응 | |
일대다 관계 | 하나의 개체가 여러 개체에 대응 | |
다대일 관계 | 여러 개체가 하나의 개체에 대응 | |
다대다 관계 | 여러 개체가 여러 개체에 대응 |
- 일대일 관계 (1:1)
왼쪽 개체와 오른쪽 개체가 서로 1대1 대응하는 관계
- 일대다 관계 (1:N), 다대일 관계(N:1)
일상 생활에서 가장 많이 볼수 있는 관계
한쪽 개체타입의 개체 1개가 다른쪽 개체 타입의 여러 개체와 관계를 맺는다.
- 다대다 관계 (N:N)
각 개체 타입의 개체들이 서로 N개의 개체들과 복합적 관계를 맺는 관계
- 관계 대응수의 최솟값, 최댓값
1, N, M : 각 개체가 관계에 참여하는 최대값
(최솟값, 최댓값) : 관계 실선 위에 표기
서로 반대편의 숫자 만큼 관계에 참여한다고 생각하면 된다.
학생은 min2, max2 의 수만큼 강좌에 관계되고,
강좌는 min1, max1의 수만큼 학생에 관계된다.
관계 | (min1, max1) | (min2, max2) |
1:1 | (0,1) | (0,1) |
1:N | (0,*) | (0,1) |
M:N | (0,*) | (0,*) |
학과 반대쪽에 (1,1) 이 있고, 학생 반대쪽에 (0,*) 이 있는 것을 보자.
학과 (1개) 에 학생(0~N명) 이 관계 된다는 뜻이다.
이는 하나의 학과에 여러명의 학생이 속할 수 있고, 최솟값이 0이므로, 학과에 학생이 없을 수도 있다는 것을 의미한다.
- ISA 관계
상위 개체 타입의 특성에 따라 하위 개체 타입이 결정 되는 형태
ISA 는 is a 를 의미한다.
기호 | 의미 |
개체간 상하관계 |
참여 제약조건
개체 집합 내에서 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여와 부분 참여로 나눈다.
전체 참여 : 개체 집합의 모든 개체가 참여함.
부분 참여 : 개체 집합의 일부분만 참여함.
기호 | 의미 |
전체 참여 (2줄) | |
부분 참여 (1줄) |
역할
개체 타입간 관계 표현 시 각 개체들은 고유한 역할을 담당한다.
순환적 관계 (recursive relation ship)
한 개체 타입이 동일한 개체타입(자신 개체) 와 순환적으로 관계를 가짐
약한 개체 타입 (weak entity)
상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속된 개체 타입이다.
- 키를 보유하지 않는다
- 식별자, 부분키 : 약한 개체 타입의 개별 개체를 식별하는 속성
기호 | 의미 | 설명 |
약한 개체 타입 | 강한 개체타입이 있어야 존재 가능 이중 직사각형 |
|
식별 관계 타입 | 강한 개체 타입 - 약한 개체 타입 의 관계 강한 개체 타입의 기본키를 상속받아 사용 이중 마름모꼴 |
|
키 | 강한 개체 타입의 키 속성 | |
식별자 | 약한 개체 타입의 개별 개체 구분 속성 식별자, 부분키라고 부른다. |
IE 표기법
Peter Chen 표기법과 IE표기법의 비교
관계를 실선, 점선으로 표기한다.
관계와 관계 대응 수 표기방법
기호 | 의미 |
비식별자관계 (non-identifying relationship) 강한 개체 타입 부모 개체의 키가 일반 속성으로 포함되는 관계 |
|
식별자 관계 (identifying relationship) 약한 개체 타입 부모 개체의 키가 주식별자로 포함되는 관계 |
|
일대다 관계(1:N) // N쪽에 새발을 표시한다. | |
0 (선택 참여), 최소 참여가 0 일때 사용한다. | |
1 (필수 참여), 최소 참여가 1일때 사용한다. |
예제
Q. 다음 Peter Chen 표기법을 IE표기법으로 바꾸라.
A. 비식별자 관계 (강한 관계, 비식별자 == 점선 표기)
A. 식별자 관계 (약한 관계, 식별자 == 실선 표기)
'백엔드 > 데이터베이스' 카테고리의 다른 글
[데이터모델링] ER 모델 , 관계 데이터 모델로 사상 (0) | 2021.06.05 |
---|---|
[데이터모델링] E-R 다이어그램 - web에서 그리기 (2) | 2021.06.05 |
[MySQL] 제약조건 (0) | 2021.06.04 |
[MySQL] 테이블 생성 (CREATE TABLE)과 옵션 (0) | 2021.06.04 |
[MySQL] 인덱스(index), 클러스터/보조인덱스 (4) | 2021.05.25 |