📌 데이터 모델링
⭐ 데이터 모델링의 중요성 및 유의점
중비유일
- 중복 : 같은 시간 같은 데이터 제공
- 비유연성 : 사소한 업무변화에 데이터 모델이 수시로 변경되면 안됨
- 비일관성 : 데이터간 상호연관에 대해 명확히 정의해야 함
중복성 최소화, 유연성높임, 일관성있게
⭐ 데이터 모델링 필요성
- 정보시스템을 구축하기 위한 데이터 관점의
업무분석 기법
- 현실세계의 데이터에 대해
약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한
분석/설계의 과정
⭐ 데이터 모델링 종류
개논물
- 개념적 데이터 모델링
추상화 수준 높음
- 업무중심적이고 포괄적인 수준의 모델링 진행
- 전사적 데이터 모델링
- EA수립시 많이 이용
- 논리적 데이터 모델링
- 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현
재사용성 높음
- 물리적 데이터 모델링
- 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등
물리적인 성격을 고려하여 설계
⭐ 데이터베이스 스키마 구조 3단계
외개내
- 외부 스키마 :
개개인 사용자가 보는 개인적 DB 스키마
- 개념 스키마 :
모든 사용자 관점을 통합한 전체 DB
- 내부 스키마 :
물리적 장치에서 데이터가 실제적 저장
⭐ 데이터 독립성
- 논리적 독립성 : 개념스키마가 변경되어도 외부스키마에 영향 X
- 물리적 독립성 : 내부스키마가 변경되어도 외부/개념스키마에 영향 X
✅ Mapping(사상) : 상호 독립적인 개념을 연결시켜주는 다리
- 논리적 사상 : 외부 스키마 ~ 개념 스키마
- 물리적 사상 : 개념 스키마 ~ 내부 스키마
⭐ 데이터 모델링의 3요소
- 어떤 것(Things)
- 성격(Attributes)
- 관계(Relationships)
✅ 데이터 모델링은 프로젝트에 참여한 모두가 알아야함
⭐ 데이터 모델링의 특징
추정단
(현실세계) -> 추상화, 정확화, 단순화 -> (모델)
⭐ ERD
- 1976년 피터첸이 Entity Relationship Model 개발
- IE, Barker 기법이 많이 쓰임
- 속성, 관계, 개체로 이뤄짐
속관개
- 관계의 명칭은 관계표현에 있어서 매우 중요한 부분에 해당
- 가장 중요한 엔티티를
왼쪽상단에 배치
⭐ ERD 작성순서
엔그배관 관명참필
1. 엔티티 그림
2. 엔티티 배치
3. 엔티티 관계설정
4. 관계명 기술
5. 관계의 참여도 기술
6. 관계 필수여부

⭐ 좋은 데이터 모델의 요소
- 완전성 : 업무에 필요한 모든 데이터가 모델에 정의
- 중복배제 : 하나의 DB내에 동일한 사실은 한번만
- 업무규칙 : 많은 규칙을 사용자가 공유하도록 제공
- 데이터 재사용 : 데이터가 독립적으로 설계되야 함
- 의사소통 : 업무규칙은 엔티티, 서브타입, 속성, 관계 등의 형태로 최대한 자세히 표현
- 통합성 : 동일한 데이터는 한번만 정의, 참조 활용
📌 엔티티
- 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것, 보이지 않는 개념 포함

⭐ 엔티티의 특징
- 반드시 해당
업무에서 필요하고 관리하고자 하는 정보
- 유일한 식별자에 의해 식별가능
두 개 이상의 인스턴스의 집합
- 업무 프로세스에 의해 이용되어야 함
- 반드시 속성이 있어야 함
- 다른 엔티티와 최소
1개 이상의 관계가 있어야 함(단, 통계성/코드성 엔티티는 관계 생략 가능)
⭐ 엔티티의 분류(유/무형)
유사개
- 유형 엔티티 : 물리적 형태
ex) 사원, 물품, 강사
- 사건 엔티티 : 업무 수행 시 발생
ex) 주문, 청구, 미납
- 개념 엔티티 : 개념적 정보
ex) 조직, 보험상품
⭐ 엔티티의 분류(발생시점)
기행중
- 기본 엔티티(키 엔티티) : 그 업무에 원래 존재하는 정보, 타 엔티티의 부모 역할,
자신의 고유한 주식별자 가짐
ex) 사원, 부서, 고객, 상품, 자재
- 행위 엔티티 : 2개 이상의 부모 엔티티로부터 발생, 자주 바뀌거나 양이 증가
ex) 주문목록, 사원변경이력
- 중심 엔티티 : 기본 엔티티로부터 발생, 다른 엔티티와의 관계로 많은 행위 엔티티 생성
ex) 계약, 사고, 주문
✅ 교차 엔티티
- M:N관계를 해소하기 위해서 인위적으로 만들어진 엔티티
ex) 학생, 과목 테이블을 이어주는 수강테이블
⭐ 엔티티의 명명
- 현업업무에서 사용하는 용어 사용
- 약어 사용금지
- 단수명사 사용
- 유일한 이름 사용
- 생성의미대로 부여
📌 속성
- 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상
더이상 분리되지 않는 최소의 데이터 단위
- 엔티티에 대한 자세하고 구체적인 정보를 나타냄
- 한개의 엔티티는 2개 이상의 인스턴스 집합
- 한개의 엔티티는 2개 이상의 속성을 가짐
- 한개의 속성은 1개의 속성값을 가짐
⭐ 속성의 분류
기설파
- 기본 속성 : 업무로부터 추출한 모든 일반적인 속성
- 설계 속성 : 업무를 규칙화하기 위해 새로 만들거나 변형, 정의하는 속성
ex) 일련번호
- 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성, 빠른 성능을 낼수 있도록 원래 속성의 값을 계산, 적을수록 좋음
ex) 합
⭐ 도메인
- 각 속성이 가질 수 있는 값의 범위
- 속성에 대한 데이터 타입/크기/제약사항 지정
ex) 5글자
⭐ 속성의 명명
- 해당업무에서 사용하는 이름 부여
- 서술식 속성명은 사용 금지
- 약어 사용 금지
- 구체적으로 명명하여 데이터 모델에서 유일성 확보
📌 관계
- 엔티티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
- 존재적 관계와 행위에 의한 관계로 나눌 수 있음
- 관계 페어링의 집합
ex) 강사 - 가르친다(관계) - 학생
✅ 페어링 : 엔티티 안에 인스턴스가 개별적으로 관계를 가지는 것
⭐ UML에서의 관계
- 연관관계(실선) : 항상 이용하는 관계
ex) 소속된다
- 의존관계(점선) : 상대 행위에 의해 발생하는 관계
ex) 주문한다
⭐ 관계 ERD, UML 표기법 비교
- ERD는 존재와 행위를 구분하지 않고 단일화된 표기법 사용
- UML에는 클래스다이어그램 관계 중 연관관계, 의존관계가 있고 이것은 실선과 점선표기법으로 다르게 표현
⭐ 관계의 표기법
명차선
- 관계명 : 관계의 이름
- 관계차수 : 1:1, 1:M, M:N
- 선택성(관계선택사양) : 필수관계, 선택관계
⭐ 2개의 엔티티 사이에 정의한 관계 체크사항
- 2개의 엔티티 사이에 관심있는
연관규칙이 존재 하는가?
- 2개의 엔티티 사이에
정보의 조합 발생되는가?
- 업무기술서, 장표에 관계 연결에 대한
규칙 서술되어 있는가?
- 업무기술서, 장표에 관계 연결을 가능케 하는
동사가 있는가?
📌 식별자
- 엔티티내에서 인스턴스를 구분하는 구분자
- 식별자는 논리데이터 모델링 단계에 사용
- Key는 물리데이터 모델링 단계에 사용
⭐ 식별자의 특징
유최불존
- 유일성 : 주 식별자에 의해 모든 인스턴스들을 유일하게 구분
- 최소성 : 주 식별자를 구분하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성 : 지정된 주식별자의 값은 자주 변하지 않아야 함, 변하면 이전기록 말소됨
- 존재성 : 주 식별자가 지정되면 반드시 값이 들어와야 함, NULL 안됨
⭐ 식별자 분류(대표성)
대주보
- 주 식별자 : 엔티티 내에서 각 어커런스(레코드)를 구분할 수 있는 구분자, 타 엔티티와 참조관계를 연결할 수 있음
- 보조 식별자 : 엔티티 내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결 불가
⭐ 식별자 분류(스스로 생성여부)
생내외
- 내부 식별자 : 엔티티 내부에서 스스로 생성되는 식별자
- 외부 식별자 : 타 엔티티와의 관계를 통해 타 엔티티로부터 받아오는 식별자
⭐ 식별자 분류(속성의 수)
수단복
- 단일 식별자 : 하나의 속성으로 구성
- 복합 식별자 : 2개 이상의 속성으로 구성
⭐ 식별자 분류(대체 여부)
대본인
- 본질 식별자 : 업무에 의해 만들어지는 식별자
- 인조 식별자 : 업무적으로 만들어지지 않고 인위적으로 만든 식별자
⭐ 엔티티내에 주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성
- 명칭, 내역등과 같이 이름으로 기술되는 것들은 X
- 복합으로 주 식별자를 구성할 경우 너무 많은 속성 X => 너무 많으면 인조 식별자 생성한다
- 자주 수정되는 속성 X
⭐ 식별자 관계, 비식별자 관계
- 식별자 관계
- 자식의 주 식별자로 부모의 주 식별자 상속
- 강한연결관게 표현
- 실선 표기
- 부모로부터 받은 식별자를 자식 엔티티의 주 식별자로 이용하는 경우
- 반드시 부모엔티티 종속
- 자식 주식별자구성에 부모 주식별자포함 필요
- 상속받은 주식별자속성을 타엔티티에 이전 필요
- 부모엔티티의 주식별자를 자식엔티티에서 받아 손자엔티티까지 계속 흘려보낼 때
- 부모 엔티티의 인스턴스가 자식 엔티티와 같이 소멸되는 경우
- 비 식별자 관계
- 부모 속성을 자식의 일반 속성으로 사용
- 약한연결관계 표현
- 점선 표기
- 약한 종속관계
- 자식 주식별자구성을 독립적으로 구성
- 자식 주식별자구성에 부모 주식별자 부분 필요
- 상속받은 주식별자속성을 타 엔티티에 차단 필요
- SQL문장이 길어져 복잡성 증가되는 것 방지
- 부모쪽의 관계참여가 선택관계
- 부모엔티티에 참조값이 없어도 자식엔티티의 인스턴스가 생성될 수 있는 경우
- 부모와 자식의 생명주기가 다른 경우(별도로 소멸)
- 여러개의 엔티티가 하나로 통합되면서 각각의 엔티티가 갖고있던 여러개의 개별 관계가 통합되는 경우
- 자식엔티티의 주 식별자를 부모엔티티와는 별도로 생성하는 것이 더 유리한 경우
- 비 식별자 관계로만 설정 시 부모엔티티와 조인하여 성능저하