데이터베이스 설계의 전체적인 구조는 이전글 참고
Data Model
현실 세계의 정보를 컴퓨터에 표현하기 위해 단순화하고 추상화한 개념적 모형
표시 요소
- 구조: 전체 데이터 구조 및 성질
- 연산: 데이터 처리
- 제약조건: 논리적인 제약조건
종류
- 개념적 데이터 모델
- 인간이 이해할 수 있는 형태
- 논리적 데이터 모델
- 컴퓨터가 이해할 수 있는 형태
- 품질 검증: 개체, 속성, 관계, 식별자, 전반적인 품질 검증 항목
구성 요소
- Entity
- 표현하려는 것, 현실세계의 대상, 개념, 정보단위
- 식별자에 의해 식별 가능(유일함), 다른 개체와 1개 이상의 관계를 가짐
- 선정 방법: 업무 기술서 참조, 담당자 인터뷰, 장부, 전표, 자료 흐름도(DFD)의 자료 저장소 이용 등
- 개체명 지정 방법: 업무에서 사용하는 용어 사용, 약어X, 단순명사, 유일해야 함
- Attribute
- 개체를 구성하는 항목, 개체의 특성
- 특성에 따른 분류: 기본 속성(업무 분석을 통해 정의), 설계 속성(모델링과 업무 규칙화를 위해 생성하거나 변형), 파생 속성(다른 속성의 영향을 받아 생성됨)
- 개체 구성방식에 따른 분류: 기본키 속성(유일성 보장), 외래키 속성(다른 개체과 연결), 일반 속성
- 선정 방법: 최대한 많이 선정
- 속성명 지정 방법: 업무에서 사용하는 용어 사용, 약어나 서술어 X, 개체명 X
- Relationship
- 개체와 개체의 논리적 연결
- 형태: 1:1, 1:N, N:M
- 종류: 종속 관계(주-종), 중복 관계(2개의 개체 사이에 종속 관계가 2번 이상 발생), 재귀 관계(자기 자신과 관계), 배타 관계(속성, 구분자를 기준으로 개체의 특성을 분할)
기준에 따른 식별자(key) 구분
- 대표성 여부: 주 식별자(개체를 대표한 유일한 식별자), 보조 식별자(주 식별자 외에 개체를 식별할 수 있는 식별자)
- 주 식별자의 4가지 특성: 유일성, 최소성, 불변성, 존재성
- 스스로 생성 여부: 내부 식별자(개체 내에서 생성), 외부 식별자(다른 개체와의 관계에서 생성)
- 단일 속성 여부: 단일 식별자, 복합 식별자
- 대체 여부: 원조 식별자(업무에 의해 생성됨, 가공 X), 대리 식별자(인조 식별자)
- 후보 식별자: 유일하게 개체를 식별할 수 있는 식별자, 개체 별로 1개 이상 존재, 변경이나 Null X
Entity-Relationship Model
개체와 관계를 이용해 현실 세계를 개념적으로 나타낸 모형
E-R Diagram 표기법 종류
- 피터 첸 표기법: 개체 - 직사각형 / 관계 - 마름모 / 속성 - 타원 / 다중값 속성 - 이중 타원 / 기본키 - 밑줄이 그어진 타원 / 다중 속성 - 하위 속성을 포함한 타원 / 연결 - 직선
- 정보 공학 표기법: 직사각형 객체 내부에 기본키(직사각형)와 속성 포함 / 관계 - 직선(| 필수, O 선택, < 다중)
- 바커 표기법: 직사각형 객체 내부에 기본키(#)와 속성 포함 / 관계 - 직선(실선 필수, 점선 선택, < 다중)
관계형 데이터베이스
Relational Data Model: 표(테이블)의 형태로 데이터의 관계를 정의한 구조
Relational Database: 관계형 데이터 모델을 기반으로 구축한 데이터베이스
간결하고 보기 편하지만, 성능이 비교적 낮다는 특징이 있음
Relation
- 하나의 테이블
- 구조
- tuple: 하나의 데이터 (=레코드, 행 등)
- attribute: DB를 구성하는 가장 작은 논리적 단위 (=속성, 항목, 필드, 열 등)
- cardinality(기수): 튜플의 개수 / degree(차수): 속성의 개수
- domain: 속성이 취할 수 있는 값의 범위
- 특징
- 튜플은 모두 상이함
- 속성의 순서나 튜플의 순서는 의미를 가지지 않음
- 속성값은 원자값이어야 함(더이상 쪼갤 수 없는 형태)
Key
- 튜플을 식별할 수 있게 하는 속성
- Candidate Key: 튜플을 유일하게 식별할 수 있는 모든 키, 속성 조합 X(유일성, 최소성 충족)
- Primary Key: 후보키 중에서 선택된 1개
- Alternate Key: 후보키 중에서 주 키를 제외한 나머지
- Super Key: 튜플을 유일하게 식별할 수 있는 키, 여러 속성의 조합 포함(유일성만 충족)
- Foreign Key: 다른 릴레이션의 기본키를 참조하는 키
Integrity
- DB에 저장된 데이터와 현실 세계의 실제 값이 유지되는 것
- Entity Integrity: 기본키는 중복되거나 Null일 수 없음 (=실체 무결성)
- Domain Integrity: 속성 값은 정의된 도메인에 속해야 함 (=영역 무결성)
- Referential Integrity: 외래키는 참조할 수 있어야 함, Null은 괜찮음
- 사용자 정의 무결성: 사용자가 정의한 제약조건을 만족해야 함
- 무결성을 강화하는 방법: 애플리케이션 내에서 검증, 데이터베이스 트리거, 제약조건 등 활용
관계대수 및 관계해석
DBMS에 명령하는 방법
Relational Algebra
- 일반집합연산자
- 합집합 ∪
- 교집합 ∩
- 차집합 -
- Cartesian product ×
- 순수관계연산자
- select δ : 조건에 만족하는 튜플을 검색(δ점수>90(학생): 학생 릴레이션에서 점수가 90보다 큰 튜플)
- project π : 주어진 속성들의 값으로만 구성된 열 선택(π과목, 점수(학생): 학생 릴레이션에서 과목과 점수만 검색)
- join ⋈ : 공통 속성을 이용하여 2개 이상의 릴레이션을 연결해 새로운 릴레이션 생성(사원⋈(부서=부서)인사: 공통 속성이 부서)
- division ÷ : B릴레이션의 모든 조건을 만족하는 튜플을 A릴레이션에서 구함(고객÷골드: 고객 릴레이션에서 등급이 'gold'인 행을 찾은 후 등급 속성을 제외하고 나열)
Relational Calculus
- 어떻게 검색하는지가 아닌 무엇을 검색하는지에 중점을 둔, 비절차적 언어
- 술어해석을 기반으로 함
- 종류: 튜플관계해석, 도메인관계해석
Normalization
특정 규칙에 의해서 테이블을 작게 분리하는 과정
목적
- 삽입이상 해결: 삽입하려는 데이터 외에 다른 데이터도 함께 삽입되는 것
- 삭제이상 해결: 삭제하려는 데이터 외에 다른 데이터도 함께 삭제되는 것
- 갱신이상 해결: 갱신하려는 데이터 외에 다른 데이터도 함께 갱신해야 하는
과정
- 1정규형: 모든 도메인이 원자값
- 2정규형: 부분 함수종속(둘 이상의 속성이 다른 속성을 결정할 때 하나의 속성 만으로 결정할 수 있는 경우) 제거 (=완전 함수종속)
- 3정규형: 이행 함수종속(A > B 이고 B > C 일 때, A > C) 제거
- BCNF: 결정자가 모두 후보키
- 4정규형: 다치종속 제거
- 5정규형: 조인종속 이용
Denormalization
- 시스템의 성능 향상, 관리의 효율성 등을 위해 의도적으로 정규화된 테이블을 다시 통합하는 행위
- 테이블 통합(조인)
- 검색은 간편해지지만 처리량이 늘고 입력, 수정, 삭제가 복잡해짐
- 1:1 / 1:N, 슈퍼타입 / 서브타입 등
- 테이블 분할
- 수평 분할(튜플 기준), 수직 분할(속성 기준)
- 중복 테이블 추가
- 여러 테이블에서 데이터를 추출하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우, 정규화로 수행속도가 더 느려지거나 특정 범위의 데이터를 자주 처리해야 하는 경우 사용
- 집계 테이블 추가, 진행 테이블 추가, 특정 부분만 포함하는 테이블 추가
- 중복 속성 추가
- 기본키가 여러 개의 속성으로 구성되어 있거나, 조인에 자주 사용되는 속성이나 접근 경로가 복잡한 속성에 대해 조회 경로를 단축하기 위해 사용
- 데이터의 일관성과 무결성을 유지해야 하고 저장 공간을 너무 많이 차지하지 않아야 함
System Catalog
System Catalog
- DBMS가 자동으로 생성하고 유지하는 DB 내 테이블 집합체, 모든 개체들에 대한 정의, 명세를 담은 테이블
- 자료 사전에 저장됨(메타 데이터)
- 사용자는 검색만 가능, 수정은 불가능
- SYS TABLES, SYS COLUMNS, SYS INDEXES, SYS VIEWS, SYS TAB AUTH(권한), SYS COL AUTH, SYS USERS
※ 강의 링크: https://inf.run/MiKF
'Computer Science > 정보처리기사' 카테고리의 다른 글
[필기] 제2과목 소프트웨어 개발 (5) 인터페이스 구현 (0) | 2022.07.07 |
---|---|
[필기] 제2과목 소프트웨어 개발 (4) 애플리케이션 테스트 관리 (0) | 2022.07.07 |
[필기] 제2과목 소프트웨어 개발 (3) 제품 소프트웨어 패키징 (0) | 2022.07.05 |
[필기] 제2과목 소프트웨어 개발 (2) 통합 구현 (0) | 2022.07.05 |
[필기] 제2과목 소프트웨어 개발 (1) 데이터 입출력 구현 (0) | 2022.07.05 |