SQLD: 식별자 & 데이터 모델 이해하기
데이터 모델링
데이터 모델링은 계획/분석/설계시 업무분석 및 설계, 설명에 사용되며, 구축/운영시에는 변경, 관리 목적으로 사용된다.
데이터 모델링
기획(요구사항) -> 설계 -> 개발 -> 테스트 -> 운영
현재까지 엔터티, 속성, 관계에 대해 알아본 것이 개념적 데이터 모델링 부분이다. (단순한 설계도)
다시, ERD란?
엔터티(Entity)와 엔터티 간의 관계(Relationship)를 발견하고,
이를 그림(Diagram)으로 표현하는 행위로, 개념적 데이터 모델링의 결과물이다.
개념적 데이터 모델링 ERD 순서
- 엔터티를 그린다(속성은 제외). 보통 중요한 엔터티를 왼쪽 상단에 둔다.
- 엔터티를 적절히 배치한다.
- 관계를 설정한다. (서로 관계가 있는 엔터티끼리 선으로 이어준다.)
- 관계명을 기술한다.
- 관계의 참여도(=Cardinality)를 기술한다.
참여도란 엔터티 안의 인스턴스들이 얼마나 참여하는지를 의미한다. (차수)
1:1, 1:N, N:M관계 등이 있으며, N쪽에는 까치발(>)로 표시한다.
- 관계의 필수여부(=Optionality)를 기술한다.
필수여부란 엔터티 안의 인스턴스들이 반드시 참여하는지를 의미한다.
최소 참여는 ( )로 표시하고, 선택 참여는 (0)으로 표시한다. (IE)
논리적 데이터 모델링
논리적 모델링은 개념적 모델링을 토대로 설계도를 상세하게 그리는 것과 같다. 예를 들자면, 지붕은 기와이며, 굴뚝은 1M라는 상세한 사항들을 정하는 것이다.
개념적 | 논리적 | 물리적 |
---|---|---|
추상적 | KEY, 속성, 관계등을 정의 | 실제 DB에 이식되도록 성능, 저장 등 물리적 성격 고려 |
업무중심적 | 재사용성이 높음 | 구체적 |
포괄적 | 특정 DBMS에 종속적 | |
전사적(EA) | 정규화 수행 | |
DBMS 독립적 | ||
ERD 생성 |
논리적 데이터 모델링 순서
- 속성을 아래로 모두 입력한다.
- 각 엔터티에서 식별자(Primary Key)를 선택한다.
즉, 식별자를 선택하는 것은 논리적 데이터 모델링에서 이루어진다.
식별자: 엔터티 내 인스턴스를 유일하게 구분할 수 있는 속성의 집합
- 정규화를 수행해 중복되는 데이터 입력이 없도록 한다.
정규화: 중복 데이터가 없도록 엔터티를 쪼개는 행위
예를 들어, 한 직원이 연락처가 두 개 이상이라면 중복되는 데이터가 생길 수 있기에 별도의 엔터티를 만들어 준다.
- 관계설정(Foreign Key)을 한다.
- 정규화로 쪼개진 대상들을 연결하기 위해 식별자를 빌려온다.
데이터 모델링이 왜 중요할까?
파급효과: 초반에 엉망으로 설계하고 개발하다가 나중에 변경해야할 필요가 생기면 힘들어진다.
간결한 표현: 서로 의사소통을 위해 모델링된 설계도(ERD 등)으로 쉽게 이해 가능.
데이터 품질: 애초에 데이터 모델링을 제대로 해야 이상한 데이터(데이터 중복, 비유연성, 비일관성)가 들어가지 않는다.
- 정규화를 하게 되면 데이터 중복, 비유연성, 비일관성이 모두 해결된다.
논리적 모델링 표기법
IE
- 구분된 선 위에는 PK(식별자)이다.
- FK라고 붙은 속성은 빌려온 외래키(FK)이다.
- 그 외 아무것도 적히지 않은 속성은 ‘일반속성’이다.
- 관계차수나 관계선택사양은 개념적 모델링에서 가져온다.
- 관계선이 점선이라면 ‘비식별자관계’이다.
Barker
- 식별자는 #로 표시한다.
- O는 선택사항, *는 필수사항임을 의미한다.
- 관계차수나 관계선택사양은 개념적 모델링에서 가져온다.
위 그림에서는 FK가 O임으로, ‘비식별자관계’이다.
데이터베이스 3단계 구조
- 외부(External) 스키마: 여러 사용자 각각의 관점
- 사용자 각자가 원하는 정보가 다르기 때문에 다양한 관점을 가진다.
- 개념(Conceptual) 스키마: 통합적, 조직 전체의 DB관점
- 내부(Internal) 스키마: 데이터 물리 저장 구조 표현