비즈니스에서 수집하고 생성하는 각기 다른 모든 데이터를 분석하고 정의하는 것은 물론
데이터 간의 관계도 분석하고 정의하는 프로세스
→ 이렇게 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용함
어떤 데이터를 모델링할 것인지에 대한 요구사항 수집 및 분석
전체 모델에서 중요한 골격이 되는 엔티티와 관계 위주로 모델링
→ 각 개체들과 개체 간의 관계를 표현하기 위해 ERD 다이어그램을 생성함
개념적 모델링에서 추출된 개체와 개체들의 관계를 구조적으로 설계하는 단계
최종적으로 데이터를 관리할 데이터베이스를 선택하고, 논리적 모델을 특정 데이터베이스로 설계함 (실제 저장 공간, 분산, 저장 방법 등까지도 고려)
-> 논리 모델을 각 DBMS의 특성에 맞게 데이터 베이스 저장 구조(물리 데이터 모델)로 변환
Entity(개체)와 Relationship(관계)를 중점적으로 표시함으로써 데이터베이스 구조를 한 눈에 알아볼 수 있게 하는 다이어그램
ERD 표기법은 크게 Peter-Chen 표기법과 까마귀 발 표기법으로 나눌 수 있음
정의 가능한 사물 또는 개념(사람, 도서 정보 등) → 데이터베이스의 테이블이 엔티티로 표현됨
개념적 모델링 단계이기 때문에 도메인 작성은 선택적임!
💡 식별자 vs 키
식별자는 논리적 모델링 관점으로 여러 개의 집합체를 담고 있는 하나의 통(엔티티)에서 각각을 구분할 수 있는 논리적인 이름
키는 물리적 모델링 관점으로 데이터베이스 테이블에 접근하는 물리적 매개체
관계가 존재하는 두 엔티티 사이 관계 → 한 엔티티에서 다른 엔티티의 몇 개의 개체와 대응되는지 제약조건을 선을 그어 표기함
참고로 두 엔티티가 다대다 관계일 경우, 두 개의 엔티티만으로는 서로를 표현하는데 부족함
데이터모델링에서는 M대N 관계를 완성되지 않은 모델로 간주하여, 두 엔티티의 관계를 1:N, N:1로 조정하는 작업이 필요함
즉 두 엔티티의 관련성을 표현하기 위해서는 중간에 또 다른 엔티티를 필요로 하며, 이 중간 엔티티가 두 엔티티의 공유 속성 역할을 하게 됨
ex)
유저 테이블을 만든다고 가정하면 주민번호, 이름, 성별 등의 속성이 있음
이름, 성별은 중복값이 들어올 수 있으므로 부적절하고 남는 것은 주민등록번호가 됨
이런식으로 중복값을 제외하며 중복되지 않는 것을 ‘자연스레’ 뽑다가 나오는 속성으로 기본키를 정한다고 해서 이 키를 자연키라고 표현함
자연키는 사용자에게 입력받는 정보이므로 언젠가 변할 가능성이 있음
ex)
위 상황에서 주민등록번호를 사용하지 않고 인위적으로 유저 아이디를 부여하여 고유 식별자를 생성할 경우, 이 키를 인조키라고 함
Oracle dml sequence, MySQL의 auto increment 등으로 설정함
인조키는 변하지 않으며, 참여자(데이터)가 몇 명이든 그들을 구분할 수 있음
보통 자연키보다는 인조키를 기본키로 설정하는 것을 권장함
https://hanamon.kr/관계형-데이터베이스-설계-관계-종류/
TOPCIT ESSENCE ver3 기술영역 - 데이터 이해와 활용
[책]면접을 위한 CS전공지식 노트
https://velog.io/@kw78999/DB-바커와-IE-표기법
https://multifrontgarden.tistory.com/180
https://velog.io/@hanblueblue/UML-UML-기초
https://lotuus.tistory.com/43
면접질문참고 : https://hyonee.tistory.com/41
https://velog.io/@kon6443/DB-기본키-외래키-후보키-복합키-개념-4x1bgz5w https://unluckyjung.github.io/db/2020/11/16/PrimaryKey_VS_Unique/
https://jjeongil.tistory.com/1234
https://snepbnt.tistory.com/68
https://im-codding.tistory.com/59
https://sabarada.tistory.com/72