[SQLD] 1과목 | 데이터 모델링의 이해
과목 1. 데이터 모델링의 이해 (10문항)
- 설계 도면을 가지고 있는 경우 : 엔티티, 속성, 인스턴스
- 건물이 지어진 경우 : 테이블, 컬럼, 행
모델링의 개념
- 현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정
- 데이터베이스의 구조와 관계를 정의하며, 이를 통해 데이터의 저장, 조직, 관리 방법을 명확하게 정의
모델링의 특징
- 단순화
- 불필요한 세부 사항 제거
- 현실세계를 이해하기 쉬워짐
- 추상화
- 현실 세계를 간략하게 대략적으로 표현
- 다양한 현상을 일정한 양식인 표기법에 따라 표현
- 명확화
- 대상에 대한 애매모호함을 최대한 제거하고, 정확하게 현상을 기술하는 과정
- 명확화를 통해 모델을 이해하는 이들의 의사소통을 원활히 함
데이터 모델링 3가지 관점
- 데이터 관점
- 데이터가 어떻게 저장되고, 접근되는지 정의하는 단계 (어떤 속성)
- 프로세스 관점
- 시스템이 어떤 작업을 수행하며 이러한 작업들이 어떻게 조직되고 조정되는지를 정의하는 단계
- 데이터가 시스템 내에서 어떻게 흐르고 변환되는지에 대한 확인
- 데이터와 프로세스 관점
- 데이터 관점과 프로세스 관점을 결합하여 시스템의 전반적인 동작을 이해하는 단계
- 특정 프로세스가 어떤 데이터를 사용하는지, 데이터가 어떻게 생성되고 변경되는지를 명확하게 정의
데이터 모델링 유의점
- 중복
- 비유연성 (데이터 정의를 프로세스와 분리)
- 비일관성
- 데이터베이스 내의 정보과 모순되거나 상반된 내용을 갖는 상태
- 데이터간 상호 연관 관계를 명확히 정의
- 데이터 품질 관리 필요
- 데이터의 중복이 없더라도 비일관성은 발생할 수 있음
데이터 모델링 3가지 요소
- 대상 (Entity): 업무가 관리하고자 하는 대상 (객체)
- 학생 table
- 속성 (Attribute) : 대상들이 갖는 속성(하나의 특징으로 정의될 수 있는 것)
- 이름,전화번호,주소
- 관계 (Relationship) : 대상들 간의 관계
- teacher 과의 관계
데이터 모델링의 3단계
개념적 모델링
- 업무 중심적이고 포괄적(전사적) 인 수준의 모델링
- 추상화 수준이 가장 높다
- 업무를 분석 뒤 업무의 핵심 엔티티(Entity) 를 추출하는 단계
- 도출된 핵심 엔티티(Entity) 들과의 관계들을 표현하기 위해 ERD작성
논리적 모델링
- 개념적 모델링의 결과로 세부속성, 식별자, 관계 등을 표현하는 관계
- 데이터 구조를 정의하기 때문에 비슷한 업무나 프로젝트에서 동일한 형태의 데이터 사용시 재사용 가능 (재사용 할 수 있을 정도로 설계)
- 동일한 논리적 모델을 사용하는 경우 쿼리도 재사용 가능
- 데이터 정규화 수행
- 재사용성이 높은 논리적 모델은 유지보수가 용이해짐
물리적 모델링
- 논리 모델링이 끝나면 이를 직접 물리적으로 생성하는 과정
- 데이터베이스의 성능, 디스크 저장 구조, 하드웨어의 보안성, 가용성 등을 고려
- 가장 구체적인 데이터 모델링
- 추상화 수준은 가장 낮음(가장 구체적인 모델링 이므로)
스키마의 3단계 구조
- 스키마 : 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합
- 외부 , 개념, 내부스키마 로 분리
- 사용자의 관점과 실제 설계된 물리적인 방식을 분리하기 위해 고안됨
- 외부 스키마
- 사용자가 보는 관점에서 데이터 스키마를 정의
- 사용자나 응용 프로그램이 필요한 데이터를 정의 (View == 사용자가 접근하는 대상)
- 개념 스키마
- 사용자 관점의 데이터베이스 스키마를 통합하여 데이터베이스의 전체 논리적 구조를 정의
- 전체 데이터베이스의 개체, 속성, 관계, 데이터 타입 등을 정의
- 내부 스키마
- 데이터가 물리적으로 어떻게 저장되는지를 정의
- 데이터의 저장 구조, 컬럼, 인덱스 등을 정의
* 3단계 스키마의 독립성
- 독립성 : 물리적, 논리적 구조를 변경하더라도 사용자가 사용하는 응용 프로그램에 영향을 주지 않음
- 논리적 독립성 : 논리적 데이터 구조가 변경되어도(개념 스키마 변경) 응용 프로그램에 영향을 주지 않는 특성
- 물리적 구조가 변경되어도 (내부 스키마 변경) 개념/외부 스키마에 영향을 주지 않는 특성
데이터 모델의 표기법(ERD)
- 엔터티와 엔터티 간의 관계를 시각적으로 표현한 다이어그램
- 1976 피터첸 이 만든 표기법. 데이터 모델링 표준으로 사용
ERD 작성 절차(6 단계)
- 엔터티를 도출한 뒤 그린다
- 엔티티 배치
- 엔티티 간의 관계를 설정
- 관계명을 서술
- 관계의 참여도 기술
- 관계의 필수 여부 확인
엔터티의 개념
- 현실세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄 (데이터를 표현하는 데 최소한의 단위)
- 대상 들로 이루어진 집합
- 인스턴스는 엔티티의 특정 속성 값들로 구성되며, 엔티티의 개념을 현실에서 구체적으로 나타낸 것 (예) 엔터티와 속성, 인스턴스 등의 관계)
ex)
- 엔터티 : 학생
- 속성 : 학번, 이름 , 학과 등
- 식별자 : 학번 (고유한 학번으로 각 학생을 식별)
- 인스턴스 : 특정 학생의 데이터
- 학번 : 20203225
- 이름 : 홍길동
- 학과 : 컴퓨터 공학
엔티티의 특징
- 유일한 식별자(학번)에 의해 식별 가능
- 업무에서 필요하고 관리하고자 하는 정보
- 인스턴스들의 집합
- ex) 영속적으로 존재하는 2개 이상의 인스턴스의 집합
- 인스턴스가 한 개 밖에 없는 엔터티는 필요가 없다
- 엔터티는 반드시 속성을 가짐
- 각 엔터티는 2개 이상의 속성을 가짐
- 하나의 인스턴스는 각각의 속성들에 대한 1개의 속성 값만을 가짐
- ex) 학생 엔터티에서 한 학생의 데이터(인스턴스)의 이름(속성) 정보에는 반드시 한 값만 저장됨
- 엔터티는 업무 프로세스에 의해 이용
- 업무적으로 필요해 선정했지만 실제 사용되지 않으면 잘못 설계된 것
- 모델링시 발견하기 어려운 경우 데이터 모델 검증이나 상관 모델링시 단위 프로세스 교차 점검으로 문제 도출
- 누락된 프로세스의 경우 추후 해당 프로세스 추가
- 다른 엔터티와 최소 1개 이상의 관계 성립
- 엔터티는 업무적 연관성을 갖고 다른 엔터티와 연관의 의미를 가짐
- 관계가 없는 엔터티 도출은 부적절한 엔터티거나 적절한 관계를 찾지 못한 것
엔터티의 분류
유형과 무형에 따른 분류
- 유형 엔티티 : 실체가 있는 대상 (사원, 물품)
- 개념 엔티티 : 물리적인 형태 없음 (조직, 보험 상품)
- 사건 엔티티 : 업무를 수행에 따라 발생하는 엔티티 (주문, 청구, 미납)
발생 시점에 따른 분류
기본 엔터티
그 업무에 원래 존재하는 정보
다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성
타 엔터티의 부모 역할을 하는 엔터티
다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가짐
ex) 사원, 부서, 고객, 상품 등
중심 엔터티
기본엔터티로부터 발생되고 그 업무에서 중심적인 역할
많은 데이터가 발생되고 다른 엔터티와의 관계를 통해 많은 행위 엔터티를 생성
ex) 계약, 사고, 청구, 주문, 매출
- 행위 엔터티
- 2개 이상의 부모엔터티로부터 발생
- ex) 주문 (고객과 상품 엔터티가 둘 다 존재해야함 : 행위엔터티) : 사원변경이력, 이력 등
- 자주 내용이 바뀌거나 데이터 양이 증가
- 분석 초기 단계보다는 상세 설계 단계나 프로세스와 상관모델링을 진행하면서 도출
엔터티의 명명
- 현업에서 사용하는 용어 사용
- 가능하면 약자의 사용은 자제
- 단수 명사 사용 (학생들 x)
- 모든 엔터티에서 유일하게 이름 부여
- 엔터티 생성 의미대로 이름 부여
엔터티와 인스턴스 표기법
- 엔터티 : 사각형으로 표현,
- 속성은 : 표기법에 따라 조금씩 다름
- I 표기법 :
- baker 표기법 :
- 네모박스 안에 엔터티 이름이 들어감
- #주식별자 가 붙은 것이 pk
속성의 개념
- 속성은 업무에서 필요로 하는 고유한 성질, 특징을 의미(관찰 대상) ⇒ 컬럼으로 표현할 수 있는 단위
- 업무상 인스턴스로 관리하고자 하는 더이상 분리되지 않는 최소의 데이터 단위
- 인스턴스의 구성 요소
- ex) 학생 엔터티에 이름, 학번, 학과번호 등이 속성이 될 수 있음
인터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 2개 이상의 인스턴스의 집합이어야 한다. (하나의 테이블은 두 개 이상의 행을 가짐) :
- 한 개의 엔터티는 2개 이상의 속성을 가짐 (하나의 테이블은 두 개 이상의 컬럼으로 구성)
- 한 개의 속성은 1개의 속성값을 갖는다(각 컬럼의 값은 하나씩만 삽입 가능)
ex) 과목 속성에 수학, 과학이 들어갈 수는 없다 : 다른 칸에는 들어갈 수 있지만 값에는 들어갈 수 없다 - 속성은 엔터티에 속한 엔터티에 대한 자세하고 구체적인 정보를 나타냄 , 각 속성은 구체적인 값을 가짐
속성의 특징
반드시 해당 업무에서 필요한 정보여야 한다
정해진 주식별자(학번) 에 함수적 종속성을 가져야 한다. (학번에 의해 이름이 달라지니, 이름 속성은 함수적 종속성을 띈다)
하나의 값만 하나의 속성에 표현될 수 있다.
하나의 속성이 여러개 있는 경우는 엔터티를 분리해줄 필요가 있다.
→ 각 속성이 하나의 값을 갖고 있음을 의미 (속성의 원자성)
** 원자성이란 : 데이터모델에서 각 엔터티의 인스턴스가 해당 속성에 대해 단일하고 명확한 값을 가지는 것, 두 개 이상의 값을 가질 수 없다.
함수적 종속성
- 한 속성이 다른 속성의 값에 종속적인 관계를 갖는 특징을 말함
- 즉 어떤 속성 A의 값에 의해 다른 속성 B 도 유일하게 결정된다면, B 는 A에 함수적으로 종속됐다 하고, 이를 수식으로 나타내면 A→B라고 표현한다.
- 완전 함수적 종속
- 특정 컬럼이 기본키PK에 대해 완전히 종속될 때
- PK를 구성하는 컬럼이 2개 이상일 경우 , PK 값 모두에 의한 종속관계를 나타낼 때 완전 함수 종속성 만족 (ex) 주문번호 + 제품번호) 에 의해 수량 컬럼의 값이 결정됨
- 부분 함수적 종속
- 기본키 일부에 대해 종속될 때
- ex) 수강기록 테이블에서 학생번호와 과목이 pk라고 가정할 때, 과목에 의해서도 교수가 결정되면 ‘강사’ 속성은 부분 함수적 종속 관계
속성의 분류
속성의 특성에 따른 분류
- 기본 속성 : 업무로부터 추출된 모든 속성 (상품명)
- 설계 속성 : 기본 속성 외에 업무를 규칙화하기 위해 새로 만들어지는 (상품코드, 지점코드)
- 파생 속성 : 다른 속성에 의해 만들어지는 속성 , 일반적으로 계산된 값들이 해당
엔터티 구성방식에 따른 분류
- PK
- FK
- 일반 속성
분해 여부에 따른 속성
- 단일 속성 : (ex) 이름)
- 여러개의 의미로 구성된 경우 (ex)주소 : 시,구, 동)
- 다중값 속성 : 속성에 여러 개의 값을 가질 수 있는 경우(ex) 상품 리스트)
속성의 명명규칙
- 해당 업무에서 사용하는 이름을 부여
- 서술식 속성명은 사용하지 않음
- 약어의 사용은 가급적 제한
- 전체 데이터 모델에서 유일한 명칭
도메인
각 속성이 가질 수 있는 값의 범위
데이터 타입과 크기, 제약사항을 지정
관계의 개념
엔터티간의 연관성을 나타낸 개념
관계를 정의할 때는 인스턴스(각 행 데이터) 간의 논리적 연관성을 파악하여 정의
엔터티를 어떻게 정의하느냐에 따라 변경되기도 함
관계의 종류
- 존재적 관계 : 부서 엔티티가 삭제되면 사원 엔터티의 존재에 영향을 미침
- 행위적 관계 : 고객 엔터티 행동에 의해 주문 엔터티가 발생
- ERD에서는 구분하고 있지 않음
관계의 구성
- 관계명
- 차수 (카디널리티)
- 선택성
관계의 차수
- 한 엔터티의 레코드가 다른 엔터티의 레코드와 어떻게 연결되는지를 나타내는 표현
- 1대1관계 : 사원은 반드시 소속 부서가 있어야 함
- 선택적 1대1 관계 : 사원은 하나의 소속 부서가 있어야 하나, 아직 발령 전이면 없을 수 있음
- 1 대 N 관계 : 엔터티에 하나의 행에 다른 엔터티의 값이 여러 개 있는 관계 ex) 고객은 여러개 계좌 소유 가능
- M대 N 관계 : 이 경우 조인 시 카테시안 곱이 발생하므로 두 엔티티를 연결하는 연결엔터티의 추가로 1대N관계로 해소할 필요가 있다. ex) 한학생이 여러 강의를 수강할 수 있고, 강의 기준으로도 여러 학생이 보유할 수 있다 ⇒ 수강신청이력 엔터티가 필요함
관계의 페어링
엔터티 안에 인스턴스(행)가 개별적으로 관계를 가지는 것
- 관계란 페어링의 집합을 의미함
*** 관계와 차수, 페어링 차이
- 학생과 강의 엔터티는 관계를 가짐
- 한 학생은 여러 강의를 수강할 수 있고, 한 강의도 여러 학생에게 수강될 수 있으므로 M대 N관계이며, 이 때 차수는 M:N이 됨
- 인스턴스의 관계를 보면 “학생 A가 강의B를 1학기에 수강했고, 성적은 A를 받았다” 와 같은 특정한 페어링이 형성
- 이런식으로 관계의 차수는 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식을 설명
- 페어링은 두 엔터티 간의 특정 연결을 설명
식별자 개념
- 하나의 엔터티에 구성된 여러 개의속성 중에 엔터티를 대표할 수 있는 속성을 나타냄
- 하나의 유일한 식별자가 존재해야함
- 식별자는 논리 모델링에서 사용하는 용어, 물리 모델링에서는 key라고 표현
ex) 학생 엔터티의 주식별자는 학생번호 속성(논리모델링) ⇒ 학생 테이블의 기본키는 학생번호 컬럼 (물리모델링)
주식별자 특징
- 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분함
- 최소성 : 주식별자를 구성하는 속성은 유일성을 만족하는 최소한의 속성으로 구성
- 불변성 : 주식별자가 한번 특정엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 (항상 고유값으로 존재해야 함)
- 존재성 : 주식별자가 지정되면 반드시 값이 존재해야 하며 NULL은 허용 안됨