🌱 데이터 모델링의 이해
데이터 모델링
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법 → 비즈니스 프로세스를 이해
- 현실 세계의 데이터를 약속된 표기법으로 표현하는 과정 → 데이터 모델로 표현
- DB 구축을 위한 분석 및 설계의 과정 → 규칙을 정의
데이터 모델링의 중요성 및 유의점
- 비일관성
- 데이터 중복 없어도 비일관성이 발생 가능
- 상호 연관 관계에 대해 명확하게 정의
데이터 모델링 특징
- 추상화 - 현실세계를 간략하게 표현
- 단순화 - 누구나 쉽게 이해 가능
- 명확성 - 모호하지 않고, 명확한 의미 해석
데이터 모델링의 3단계
- 개념적 모델링
- 업무 중심적 & 포괄적(전사적) 관점에서 모델링
- 업무 분석 후 중요한 부분 위주의 엔터티, 속성 도출하여 ERD 작성
- 추상화 수준이 가장 높음
- 논리적 모델링
- 식별자를 도출, 정의하고 릴레이션, 관계, 속성 등을 표현
- 정규화를 통해 모델의 독립성, 재사용성 높임
- 물리적 모델링
- DB 실제 구축 (테이블, 인덱스 함수) 생성
- 성능, 보안, 가용성 등을 고려
- 추상화 수준이 가장 낮음
데이터 모델링 3가지 관점
- 데이터 관점
- 데이터가 어떻게 저장되고, 접근되고, 관리되는지를 정의하는 단계
- 프로세스(업무) 관점
- 시스템이 어떤 작업을 수행하며, 작업들이 어떻게 조직되고 조정되는지를 정의하는 단계
- 데이터가 시스템 내에서 어떻게 흐르고 변환되는지에 대한 확인
- 데이터와 프로세스 관점
- 데이터 관점과 프로세스 관점을 결합하여 시스템의 전반적인 동작을 이해하는 단계
- 특정 프로세스가 어떤 데이터를 사용하고, 데이터가 어떻게 생성되고 변경되는지를 명확하게 정의
데이터 모델링 3가지 요소
- 대상(Entity) - 업무가 관리하고자 하는 대상(객체)
- 속성(Attribute) - 대상들이 갖는 속성
- 관계(Relationship) - 대상들 간의 관계
데이터 모델링 요소 (3층 스키마)
- 외부 스키마 (사용자 관점)
- 여러 사용자, 응용 프로그램이 필요한 데이터를 정의(View : 사용자가 접근하는 대상)
- 개념 스키마 (설계자 관점)
- 사용자 관점의 DB 스키마를 통합하여 DB의 전체 논리적 구조를 정의
- 전체 DB의 개체, 속성, 관계, 데이터 타입 등을 정의
- 내부 스키마 (개발자 관점)
- 데이터가 물리적으로 어떻게 저장되는지를 정의
- 데이터의 저장 구조, 컬럼, 인덱스 등을 정의
💡3단계 스키마의 독립성
1. 논리적 독립성 - 논리적 데이터 구조가 변경되어도(개념 스키마 변경) 외부 스키마에 영향을 끼치지 않는 특성
2. 물리적 독립성 - 물리적 구조가 변경되어도(내부 스키마 변경) 개념/외부 스키마에 영향을 끼치지 않는 특성
데이터 모델의 표기법 (ERD : Entity Relationship Diagram)
- 엔터티(Entity)와 엔터티 간의 관계(Relationship)를 시각적으로 표현한 다이어그램
- 1976년 피터 첸이 만든 표기법
ERD 작성 절차
- 엔터티 도출 및 그림
- 엔터티 배치 - 중요한 엔터티는 왼쪽 상단에 배치
- 엔터티 관계 설정
- 관계명 서술
- 관계 참여도 표현
- 관계 필수 여부 표현
🌱 엔터티
엔터티의 개념
- 현실세계에서 정보가 저장될 수 있는 장소, 사람, 사건, 개념, 물건등 독립적으로 구별이 가능한 집합
엔터티의 특징
- 식별자 - 유일한 식별자가 있어야 함 / 엔터티의 인스턴스만의 고유 이름
- 업무 - 업무에서 관리되어야 하는 집합
- 인스턴스 집합 - 2개 이상의 인스턴스가 있어야 함
- 속성 - 반드시 속성을 가짐 / 2개 이상의 속성
- 관계 - 최소 1개 이상의 관계가 있어야 함
엔터티의 종류
유형과 무형에 따른 분류
- 유형 엔터티
- 물리적 형태(실체가 있는 대상)
- 예) 사원, 고객
- 개념 엔터티
- 개념적 형태(물리적 형태 X)
- 예) 조직, 보험 상품
발생 시점에 따른 분류
- 기본 엔터티
- 원래 존재하는 정보
- 다른 엔터티의 도움없이 독립적으로 생성
- 예) 고객, 부서, 사원
- 중심 엔터티
- 키와 행위의 중간(기본 엔터티 로부터 발생)
- 예) 계약, 주문
- 행위 엔터티
- 2개 이상의 엔터티 로부터 발생
- 양이 많거나 자주 변경되는 엔터티
- 예) 주문 이력, 취소 이력
엔티티의 명명 유의사항
- 약어 사용 금지
- 현업에서 사용하는 용어 사용
- 단수명사 사용
- 유일한 이름 부여
- 의미가 자연스럽게 부여
🌱 속성
속성의 개념
속성의 종류
특성에 따른 분류
- 기본 속성
- 업무로부터 추출된 일반적인 속성
- 예) 이름, 회원ID
- 설계 속성
- 업무를 규칙화하기 위해 새로 만들거나 변형된 속성
- 예) 일련번호, 제품번호
- 파생 속성
- 다른 속성에 의해 만들어진 속성
- 일반적으로 계산된 값들이 해당
- 예) 합계, 평균
분해 여부에 따른 분류
- 단일 속성
- 하나의 의미로 구성
- 예) 직원 테이블의 이름, 학생 테이블의 학번
- 복합 속성
- 여러 의미로 구성
- 예) 주소 속성은 도시, 우편번호, 도로명으로 나뉠 수 있음
- 다중값 속성
- 속성에 여러 값을 가질 수 있음
- 별도의 엔티티로 분해 가능 (별도의 테이블)
엔터티 구성방식에 따른 분류
🌱 관계
관계의 개념
💡강사 - 가르친다(관계) - 수강생
관계의 종류
- 존재 관계
- 한 개체(엔터티) 가 다른 개체의 존재에 의존
- 예) 교실, 학생 - 교실이라는 개체가 존재해야 학생이 존재
- 행위 관계
- 행위나 동작을 통해 두 개체가 연결
- 예) 고객은 "주문하는" 행위를 통해 주문을 생성
💡ERD 에서는 존재, 행위 관계를 구분하지 않음
관계의 구성
- 관계명
- 차수 (Cardinality)
- 선택성 (Optionality)
관계의 차수
- 1 대 1 관계
- 완전 1 대 1
- 1개 엔터티에 관계되는 엔터티 관계가 1개가 반드시 존재
- Ex) 한 명의 학생은 하나의 학번을 가짐, 하나의 학번 또한 한 명의 학생을 가짐
- 선택적 1 대 1
- 1 대 N 관계
- 엔터티에 하나의 행에 다른 엔터티에 관련 행이 여러개 있는 경우
- 예) "고객" 테이블에 고객 한명은 "계좌" 여러 개 보유 가능
- N 대 M 관계
- 2개의 엔터티가 서로 여러 개의 관계를 가짐
- 예) 한 명의 학생은 어러 개의 과목이 수강 가능, 한 개의 과목은 여러 명의 학생이 수강
💡 관계형 DB 에서는 N 대 M(다 대 다) 관계는 직접적으로 표현이 어렵기 떄문에 일대다, 다대일로 분해
차수, 페어링 차이
- 차수
- 하나의 엔터티와 다른 엔터티 간의 연결의 패턴이나 규칙
- 예) 일대다, 다대다
- 페어링
- 해당 연결이 구체적으로 어떻게 매핑되었는지 나태내는 인스턴스
- 예) 학생 A가 강의 B를 수강하고, 성적은 A+ 받았다
🌱 식별자
식별자의 개념
- 엔터티 내에서 하나의 인스턴스를 다른 인스턴스와 구별해 주는 속성
- DB 설계 시 기본키(Primary Key, PK) 역할
식별자의 4가지 분류
대표성 여부
- 주 식별자
- 타 엔티티와 참조관계를 연결할 수 있는 식별자
- 예) 부서번호, 사번, 주문번호
- 보조 식별자
- 대표성을 갖지 못해 참조관계 연결 불가
- 예) user table의 email
스스로 생성 여부
속성의 수
대체 여부
주 식별자 5가지 특징
유일성
대표성
불변성
최소성
존재성
식별자 관계(강한 연결 관계, 실선 표시)
- 부모의 주식별자를 자식의 주식별자로 상속되는 경우
비 식별자 관계(약한 연결 관계, 점선 표시)
- 상속을 받았지만 주식별자가 아닌 일반적인 속성으로 사용되는 경우
DB 키 종류
논리 모델링의 식별자가 물리 모델링을 거쳐서 Key로 된다
1. 기본키 (Primary Key)
2. 후보키 (Candidate Key)
3. 슈퍼키 (Super Key)
4. 대체키 (Alternate Key)
5. 외래키 (Foreign Kep)
Sqld 1트 합격 드가자 ~! 🔥