SQLD 시험을 준비하면서 1과목 개념정리 한 것을 토대로 작성함
데이터 모델의 이해
1. 데이터 모델의 이해
데이터 모델링의 개념
• 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
• 데이터베이스를 구축하기 위한 분석 및 설계의 과정
• 현실세계의 데이터를 약속된 표기법으로 표현하는 과정
• 현실세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정
• 데이터베이스의 구조와 관계를 정의하며, 이를 통해 데이터의 저장, 조작, 관리 방법을 명확하게 정의
데이터 모델링 특징 (중요)
☑️단순화
▪︎현실을 단순화하여 핵심 요소에 집중하고 불필요한 세부 사항 제거
▪︎단순화를 통해 복잡한 현실 세계를 이해하고 표현하기 쉬워짐
☑️ 추상화
▪︎현실세계를 일정한 형식에 맞추어 간략하게 대략적으로 표현하는 과정
▪︎다양한 현상을 일정한 양식인 표기법에 따라 표현
☑️ 명확화
▪︎ 대상에 대한 애매모호함을 최대한 제거하고 정확하게 현상을 기술하는 과정
▪︎명확화를 통해 모델을 이해하는 이들의 의사소통을 원활히 함
데이터 모델링의 목적
- 업무 내용 분석
- 데이터베이스 구축
데이터 모델링의 유의점
- 중복: 한 테이블 또는 여러 테이블에 같은 정보를 저장하지 않도록 설계 (중복성 최소화)
- 비유연성: 데이터 정의를 사용 프로세스와 분리 (유연성 높임)
- 비일관성 데이터 간의 상호연관 관계를 명확히 정의
데이터 모델링 3가지 요소
- 대상(엔터티): 업무가 관리하고자 하는 대상, 객체
- 속성 : 대상들이 갖는 속성
- 관계: 대상들 간의 관계
데이터베이스 스키마 구조 3단계
외부스키마: 뷰 (view)의 개념 (사용자 관점 )
개념스키마: 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현 (통합관점)
내부스키마 : DB가 물리적으로 저장된 형식 (물리적 저장 구조)
*논리적 독립성: 개념 스키마가 변경되어도 외부 스키마엔 영향을 미치지 않도록 지원
*물리적 독립성: 내부 스키마가 변겨오디어도 외부/개념 스키마는 영향을 받지 않도록 지원
데이터 모델링의 3단계
1. 개념적 모델링
• 추상화 수준이 가장 높음
• 업무를 분석 뒤 업무의 핵심 엔터티를 추출하는 단계
• 도출된 핵심 엔터티들과의 관계들을 표현하기 위해 ERD 작성
2. 논리적 모델링
• 개념적 모델링의 결과를 토대로 세부속성 식별자 관계 등을 표현하는 단계
• 데이터 정규화 수행
3. 물리적 모델링
• 논리 모델링이 끝나면 이를 직접 물리적으로 생성하는 과정
• 추상화 수준은 가장 낮음 (가장 구체적인 모델링이므로)
데이터 모델의 표기법 ERD
엔터티와 엔터티 간의 관계를 시각적으로 표현한 다이어그램 (1976년 피터 첸이 만듦)
ERD 작성 절차
- 엔터티 도출 후 그림
- 엔터티 배치
- 엔터티 간의 관계 설정
- 관계명을 서술 (관계 표현에서 중요한 단계)
- 관계의 참여도 기술
- 관계의 필수 여부를 확인
- 가장 중요한 엔터티를 왼쪽 상단에 배치하고 추가로 발생되는 엔터티들을 오른 쪽 편과 하단에 배치하는 것이 원칙
2. 엔터티
엔터티의 개념
• 현실 세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄
• 엔터티는 업무상 분석해야 하는 대상(인스턴스)들로 이루어진 집합 (즉 테이블)
• 인스터스는 엔터티의 특정한 속성 값들로 구성, 엔터티의 개념을 현실에서 구체적으로 나타낸 것
엔터티의 특징 (중요)
- 유일한 식별자에 의해 식별 가능
- 반드시 해당 업무에 필요하고 관리하고자 하는 정보
- 인스턴스들의 집합 → 영속적으로 존재하는 2개 이상의 인스턴스 집합
- 엔터티는 반드시 속성을 가짐 → 각 엔터티는 2개 이상의 속성을 가짐
- →하나의 인스턴스는 각각의 속성들에 대한 1개의 속성 값만을 가짐
- 엔터티는 업무 프로세스에 의해 이용되어야 함
엔터티 분류
1) 유형과 무형에 따른 분류
☑️유형엔터티
• 물리적 형태가 있음 (실체가 있는 대상)
• 업무로부터 구분하기가 용이한 엔터티
☑️ 개념엔터티
• 물리적 형태가 없음
• 개념적 정보로부터 구분되는 엔터티
☑️ 사건엔터티
• 업무를 수행함에 따라 발생하는 엔터티
• 발생량이 많고 각종 통계자료에 이용
2) 발생 시점에 따른 분류
☑️ 기본엔터티
• 그 업무에 원래 존재하는 정보
• 타 엔터티의 부모 역할
• 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가짐
☑️ 중심엔터티
• 기본엔터티로부터 발생되고 그 업무에서 중심적인 역할
☑️ 행위엔터티
• 2개 이상의 부모엔터티로부터 발생
• 상세 설계 단계나 프로세스와 상관모델링을 진행하면서 도출
엔터티 이름 부여하는 방법
- 가능하면 약어 사용을 자제한다
- 현업의 업무 용어를 사용하여 업무상의 의미를 분명하게 한다
- 단수 명사를 사용한다
- 모든 엔터티에서 유일한 이름이 부여되어야 한다
- 엔터티가 생성되는 의미대로 자연스럽게 부여하도록 한다
3. 속성
속성의 개념
• 속성은 업무에서 필요로 하는 고유 성질, 특징을 의미(관찰 대상)→ 컬럼으로 표현할 수 있는 단위
• 더 이상 분리되지 않는 최소의 데이터 단위
• 인스턴스의 구성 요소
+속성도 집합
엔터티, 인스턴스, 속성, 속성값의 관계 (중요)
• 한 개의 엔터티는 2개 이상의 인스턴스의 집합이어야 함 ( 하나의 테이블은 두 개 이상의 행을 가짐)
• 한 개의 엔터티는 두 개 이상의 속성을 가짐 (하나의 테이블은 두 개 이상의 컬럼으로 구성)
• 한 개의 속성은 한 개의 속성값을 가짐(각 컬럼의 값은 하나씩만 삽입 가능)
속성의 특징
• 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야함
• 정해진 주식별자에 함수적 종속성을 가져야함
• 하나의 속성에 여러 개의값이 있는 다중값일 경우 별도의 엔터티를 이용하여 분리
속성의 분류
1) 속성의 특성에 따른 분류
☑️기본속성
• 업무로부터 추출된 속성
☑️ 설계속성
• 새로 만들어지거나 기본 속성을 변형하여 만들어지는 속성
• 원래 업무상 존재하지 않지만 설계를 하면서 도출해 내는 속성
☑️ 파생 속성
• 다른 속성에 의해 만들어지는 속성
• 일반적으로 계산된 값들이 해당
2) 엔터티 구성방식에 따른 분류
☑️ PK
• 인스턴스를 식별할 수 있는 속성
☑️ FK
• 다른 엔터티와의 관계에서 포함된 속성
☑️ 일반 속성
• 엔터티에 포함되어 있고 PK/FK에 포함되지 않는 속성
3) 분해 여부에 따른 속성
☑️ 단일 속성
• 하나의 의미로 구성된 경우
☑️ 복합속성
• 여러 개의 의미로 구성된 경우
☑️ 다중값 속성
• 속성에 여러 개의 값을 가질 수 있는 경우
속성의 명칭 부여
• 해당 업무에서 사용하는 이름을 부여함
• 서술식 속성명은 사용하지 않음
• 약어 사용은 가급적 제한함
• 전체 데이터 모델에서 유일성을 확보하는 것이 좋음
도메인
각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인이라 하며,
엔터티 내에서 속성에 대한 데이터 타입과 크기 그리고 제약사항을 지정하는 것
4. 관계
관계의 개념
• 관계는 엔터티간의 연관성을 나타낸 개념
• 관계를 정의할 때는 인스턴스(각 행 데이터)간의 논리적인 연관성을 파악하여 정의
• 엔터티를 어떻게 정의하느냐에 따라 변경되기도 함
관계의 종류 (중요)
☑️존재적 관계(연관관계)
• 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계
• 엔터티 간의 연관된 상태를 의미
• 연관관계는 항상 이용하는 관계로 존재적 관계에 해당
☑️ 행위적 관계 (의존관계)
• 엔터티 간의 어떤 행위가 있는 것을 의미
• 의존관계는 상대방 클래스의 행위에 의해 관계가 형성되는 행위적 관계
*ERD에서는 존재관계와 행위관계를 구분하지 않는다
*UML에는 클래스다이어그램 관계 중 연관관계와 의존관계가 있고 이것은 실선과 점선의 표기법으로 다르게 표현이 된다
*의존관계는 오퍼레이션에서 파라미터 등으로 이용할 수 있다.
*연관관계는 소스코드에서 멤버변수로 선언하여 사용할 수 있다.
관계의 구성
- 관계명: 관계의 이름
- 관계차수: 1:1,1:M, M:N
- 관계선택사양: 필수관계, 선택관계
관계의 차수
• 한 엔터티의 레코드(인스턴스)가 다른 엔터티의 레코드(인스턴스)와 어떻게 연결되는지를 나타내는 표현
관계의 페어링
• 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
• 관계랑 페어링의 집합을 의미함
5. 식별자
식별자 개념
• 하나의 엔터티에 구성된 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 나타냄
• 논리 모델링에서 사용하는 용어, 물리 모델링에서는 키라고 표현
주식별자 특징 (중요)
☑️유일성
• 주식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분함
☑️ 최소성
• 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야함
☑️ 불변성
• 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야함
☑️ 존재성
• 주식별자가 지정되면 반드시 값이 존재해야 함 (NULL은 허용 안됨)
식별자의 분류 체계
대표성 여부 주식별자 보조식별자
스스로 생성 여부 | 내부식별자 | 외부식별자 |
속성의 수 | 단일식별자 | 복합식별자 |
대체 여부 | 본질식별자 | 인조식별자 |
주식별자 도출기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
- 명칭이나 내역등과 같은 이름은 피함
- 속성의 수를 최대한 적게 구성
관계간 엔터티 구분
☑️강한개체
• 독립적으로 존재할 수 있는 엔터티
☑️ 약한 개체
• 독립적으로 존재할 수 없는 엔터티
식별 관계와 비식별관계
☑️ 식별관계
• 하나의 엔터티의 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계
• 식별관계는 ERD에서 실선으로 표시
• 강한 연결관계 표현
• 주식별자 속성이 지속적으로 증가하는 것이 문제
• 상속받은 주식별자 속성을 타 엔터티에 이전 필요
☑️ 비식별관계
• 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 속성으로 관계를 가지는 것
• 비식별관계는 ERD에서 점선으로 표시
• 약한 연결관계 표현
• 속성이 자식에게 상속되지 않기 때문에 불필요한 조인이 발생한다
• 부모쪽의 관계참여가 선택관계
• 상속받은 주식별자 속성을 타 엔터티에 차단 필요
💡SQL문의 조인관계를 최소화 하는 경우 식별자 관계로 연결해야한다
'💾 lecture > 데이터베이스' 카테고리의 다른 글
SQLD 1과목 : 데이터 모델과 SQL 개념정리 (0) | 2024.05.13 |
---|