ERD 그리는 사이트
1. 정의
- 'Entity 개체'와 'Relationship 관계'를 중점적으로 표시하는 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램
2. 구성
1) 엔티티(Entity)
(학생 Entity)
-
정의 가능한 사물 또는 개념
-
데이터베이스의 테이블 = 엔티티
2) 엔티티 속성(Attribute)
(학생 엔티티는 학번, 이름, 주소, 전공 ...등 속성들을 가짐)
3) 엔티티 도메인(Domain)
- 속성의 값, 타입, 제약사항 등에 대한 값의 범위를 표현하는 것
- 단, 사용자 기호에 따라 속성 타입만 그릴수도 있고, 가독성을 위해서 생략할 수도 있다
- 데이터 타입을 명시할 때, 데이터베이스가 지원하는 타입에 맞게 해야한다
4) 기본 키 (PK, 주 식별자) 🔑
5) 외래 키 (FK, 외래 식별자) 🗝️
- 외래 식별자를 표시할 때, 개체와의 관계를 따져서 선을 이어준다
6) NOT NULL
- 해당 속성에 들어갈 값에
- Null 을 비허용한다면 : N 혹은 NN 을 적는다
- Null 을 허용한다면 : N 을 적지 않는다
3. 식별 vs 비식별 관계
1) 식별자 관계
(1) 정의
(자식 엔티티(학생별 취미)가 부모 엔티티(학생)의 학번을 '자신의 주 식별자(PK, 기본 키)로' 설정)
-
실선으로 표현
-
부모 자식 관계에서
- 자식이 부모의 주 식별자를 외래 식별자로 참조해서 '자신의 주 식별자(PK, 기본 키)로' 설정
(2) 장단점
장점
-
데이터의 정합성 유지를 DB에서 한번 더 할 수 있다.
(정합성 : 어떤 데이터들이 값이 서로 일치하는 상태)
-
자식 테이블에 데이터가 존재한다면, 부모 데이터도 반드시 존재한다고 보장할 수 있다.
단점
- 요구사항이 변경되었을 경우, 구조 변경이 어렵다.
2) 비식별자 관계
(1) 정의
(자식 엔티티(사원정보)가 부모 엔티티(부서정보)의 부서코드를 '일반 속성으로' 사용)
-
점선으로 표현
-
부모 자식 관계에서
- 자식이 부모의 주 식별자를 외래 식별자로 참조해서 '일반 속성으로' 사용
(2) 장단점
장점
단점
-
데이터 정합성을 지키기 위해서는 별도의 비즈니스 로직이 필요
-
자식 데이터가 존재해도, 부모 데이터가 존재하지 않을 수 있다.
-
데이터 무결성을 보장하지 않는다. (무결성 : 데이터 값이 정확한 상태)
4. 연관관계에서
1) 일대일
2) 일대다
3) 다대다
5. 선택 vs 필수
'|' 표시
|
표시가 있는 곳은 반드시 있어야 하는 개체. (필수)
- 학번 21003 학생의 취미가 낚시 라는 정보가 있다면, 21003학번의 학생의 정보가 학생 엔티티에 반드시 존재해야 한다.
'O' 표시
O
표시가 있다면 없어도 되는 개체. (선택)
- 취미를 가진 학생이 있을수도 있고, 취미가 없는 학생이 있을 수도 있다.
예시
1 : 1 관계 : 부모(SHOP)는 하나의 자식(FOOD)이 있다.
1 : N 관계 : 부모(SHOP)는 하나 이상의 자식(FOOD)이 있다.
M : N 관계 : 하나 이상의 부모와 하나 이상의 자식이 있다.
1 : 1(o) 관계 : 부모는 하나의 자식이 있을 수도 있다. (없을 수도 있다)
1 : N(o) 관계 : 부모는 여러개의 자식이 있을 수도 있다. (없을 수도 있다)
참고: 데이터 모델링 개념 & ERD 다이어그램 작성 💯 총정리