3과목 데이터베이스 구축 논리 데이터베이스 설계 083~090
083. 관계형 데이터 모델
: 테이블을 이용해 데이터 간의 상호 관계를 정의하는 DB 구조.
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계 표현.
084. 관계형 데이터베이스의 구조
- 릴레이션 : 데이터들을 표의 형태로 표현한 것.
(릴레이션 스키마 : 구조 / 릴레이션 인스턴스 : 데이터 개체를 구성하고 있는 구체적인 데이터 실제 값)
- 튜플 : 릴레이션을 구성하는 각각의 행. (속성의 모임)
- 카디널리티 : 튜플의 수 (=기수, 대응수)
- 속성 : 데이터베이스 구성하는 가장 작은 논리적 단위. (개체의 특성)
- 디그리/차수 : 속성의 수
- 도메인 : 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의 집합. (실제 속성값이 나타날 때 그 값의 합법 여부를 시스템이 검사할 때에도 이용)
- 릴레이션의 특징
- 릴레이션에 포함된 튜플들은 모두 상이
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없음.
- 튜플 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음.
- 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있음
- 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키로 설정.
- 속성의 값은 논리적으로 더이상 쪼갤 수 없는 원자값만을 저장.
085. 관계형 데이터베이스의 제약 조건 - 키
- 키 : 데이터베이스에서 조건을 만족하는 튜플을 찾거나, 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 속성.
1) 후보키 : 속성들 중 튜플을 식별하기 위해 사용하는 속성들의 부분집합 (즉 기본키로 사용할 수 있는 속성들)
- 유일성 / 최소성
2) 기본키 : 후보키 중 특별히 선정된 주(main)키. 중복값 X.
- 유일성/ 최소성
- NULL X
3) 대체키 : 후보키가 둘 이상일 때 기본키를 제외한 후보키 의미. (보조키)
4) 슈퍼키 : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키.
- 유일성 만족, 최소성 불만족
5) 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합.
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력 불가.
086. 관계형 데이터베이스의 제약 조건 - 무결성
- 무결성 : 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성.
- 무결성 제약조건 : 부정확한 자료가 DB 내에 저장되는 것을 방지하기 위한 제약조건!
1) 개체 무결성 (Entity Integrity) : 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다.
2) 도메인 무결성 (Domain Integrity) : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다.
3) 참조 무결성 (Referential Integrity) : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다. (즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.)
ex) <수강>의 '학번'속성에는 <학생>의 '학번'속성에 없는 값은 입력할 수 없다.
4) 사용자 정의 무결성 (User-Defined Integrity) : 속성 값들이 사용자가 정의한 제약조건에 만족해야 한다.
- 데이터 무결성 강화
1) 애플리케이션 : 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 데이터를 조작하는 프로그램 내에 추가.
2) 데이터베이스 트리거 : 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가
3) 제약 조건 : 데이터베이스에 제약 조건을 설정하여 무결성 유지.
087. 관계대수 및 관계해석
: 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적인 언어.
- 수행 연산의 순서를 명시
- 순수 관계 연산자
1) Select : 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산.
- 표기 형식 : 시그마(σ)<조건>(릴레이션 이름)
ex) σ Avg>=90 (성적) : 성적 릴레이션에서 평균이 90이상인 튜플들을 추출해라.
2) Project : 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산. (중복은 제거됨)
- 표기 형식 : 파이( π)<속성리스트>(릴레이션 이름)
ex) πName, Avg(성적) : 성적 릴레이션에서 'Name'과 'Avg' 속성을 추출해라.
3) Join : 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- 차수는 조인된 두 릴레이션의 차수를 합한 것과 같다.
- 표기 형식 : R▷◁키속성r = 키속성s S
ex) 성적 ▷◁ No=No 학적부 : 성적 릴레이션과 학적부 릴레이션을 'No' 속성을 기준으로 합쳐라.
- 자연 조인(natural join) : 중복된 속성을 제거하여 같은 속성을 한 번만 표기.
4) Division : Y가 X에 포함되는 두 개의 릴레이션 R(X), S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산.
- 표기 형식 : R[속성r / 속성s] S
ex) 구입자[구입품코드 / 생산품코드] 생산품1 : 구입자 릴레이션에서 '구입품코드' 속성을 제외하고 추출하여 생산품1 릴레이션의 모든 튜플과 연관되어 있는 튜플만 추출.
- 일반 집합 연산자
1) UNION (합집합) : 튜플의 합집합을 구하되 결과 릴레이션에서 중복되는 튜플은 제거되는 연산.
2) INTERSECTION (교집합) : 튜플의 교집합
3) DIFFERENCE (차집합) : 튜플의 차집합
4) CARTESIAN PRODUCT (교차곱) : 튜플들의 순서쌍 (교차곱의 디그리 = A디그리 + B디그리 / 교차곱의 카디널리티 = A카 X B카)
- 관계해석 : 관계 데이터의 연산을 표현하는 방법.
- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성
- 튜플 관계해석
- 도메인 관계해석
- 기호
1) ∃ : 존재 전량자 (하나라도 일치하는 튜플이 있다)
2) ∀ : 전칭 전량자 (가능한 모든 튜플에 대하여 for all)
088. 정규화(Normalization)
: 데이터의 중복성을 최소화하고 일관성 등을 보장하여 데이터베이스의 품질을 보장하고 성능의 향상을 위해 수행. 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정.
- 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어남
- DB 논리적 설계 단계에서 수행
- 일관성, 정확성, 단순성, 비중복성, 안정성 보장.
- 정규화 수준 높을수록 물리적 접근 복잡, 조회 성능 저하.
- 이상(Anomaly)
: 정규화를 거치지 않으면 DB 내에 데이터들이 불필요하게 중복되어 릴레이션 조작시 예기치 못한 곤란한 현상.
- 삽입 이상 : 데이터 삽입시 의도와는 상관없이 원하지 않는 값들도 삽입
- 삭제 이상 : 데이터 삭제시 의도와는 상관없이 원하지 않는 값들도 삭제되는 연쇄
- 갱신 이상 : 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
- 정규화 원칙
- 정보의 무손실 표현
- 분리의 원칙
- 데이터 중복성 감소.
- 정규화 과정 (도.부.이.결.다.조)
1) 제1정규형 (1NF) : 모든 도메인이 원자값으로만 되어있다.
2) 제2정규형 (2NF) : 부분적 함수 종속 제거 (A가 B 전체에 대해 종속이면서 B의 어떠한 진부분집합에도 함수적 종속일 때 A는 B에 부분 함수적 종속)
3) 제3정규형 (3NF) : 이행적 함수 종속 제거 (A->B이고, B->C일때 A->C를 만족하는 관계)
4) BCNF (Boyce-Codd 정규형) : 결정자이면서 후보키가 아닌 것 제거
5) 제4정규형 (4NF) : 다치 종속 제거 (A,B,C 3개의 속성을 가진 릴레이션에서 어떤 복합 속성(A,C)에 대응하는 B값의 집합이 A값에만 종속되고, C값에는 무관할때)
6) 제5정규형 (5NF, PJ/NF) : 조인 종속성 이용 (어떤 릴레이션의 속성에 대한 부분집합 A,B,...C가 있으면 자신의 프로젝션을 모두 조인한 결과가 자신과 동일한 경우 조인종속)
089. 반정규화 (Denormalization)
: 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정. 의도적으로 정규화 원칙을 위배하는 행위.
- 시스템 성능 향상, 관리 효율성 증가/ 데이터 일관성 및 정합성 저하.
1) 테이블 통합 : 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것.
- 데이터 검색은 간편/ 레코드 증가로 인해 처리량 증가.
- 입력, 수정, 삭제 규칙이 복잡해질 수 잇음
- NOT NULL, DEFAULT, CHECK 등의 제약조건 설계 어렵
2) 테이블 분할 : 테이블을 수직 또는 수평으로 분할.
- 수평 분할 : 레코드를 기준으로 테이블 분할 (레코드별 사용 빈도 차이가 큰 경우)
- 수직 분할 : 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블 분할.
- 갱신 위주의 속성 분할
- 자주 조회되는 속성 분할
- 크기가 큰 속성 분할
- 보안을 적용해야 하는 속성 분할
- 기본키의 유일성 관리 어렵/ 수행 속도 느려질 수 있음.
3) 중복 테이블 추가 : 여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우 중복 테이블 추가.
- 정규화로 인해 속도 느림/ 많은 범위의 데이터 자주 처리/ 특정 범위 데이터만 자주 처리/ 처리범위 줄여서 수행속도 개선해야 하는 경우
- 집계 테이블의 추가
- 진행 테이블의 추가
- 특정 부분만을 포함하는 테이블의 추가
4) 중복 속성 추가 : 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가.
- 조인 자주발생/ 접근 경로가 복잡한 속성인 경우/ 액세스 조건으로 자주 사용/ 기본키 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우.
090. 시스템 카탈로그
: 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스.
- 저장 정보 : 메타 데이터
- 데이터베이스 객체 정보
- 사용자 정보
- 테이블의 무결성 제약 조건 정보
- 함수, 프로시저, 트리거 등에 대한 정보
- 특징 :
- 카탈로그 자체도 시스템 테이블 > 일반 이용자도 SQL로 검색 가능
- INSERT, DELETE, UPDATE문으로는 카탈로그 갱신 X
- 데이터베이스 시스템에 따라 상이한 구조
- 갱신 : 사용자가 SQL문 실행시켜 기본테이블, 뷰, 인덱스 등에 변화 > 시스템이 자동으로 갱신
- 분산 시스템에서의 카탈로그 : 모든 제어 정보를 가져야함
- DBMS 내의 모듈 시스템
- 데이터 정의어 번역기 (DDL Compiler)
- 데이터 조작어 번역기 (DML Compiler)
- Data Dictionary
- 질의 최적화기
- 트랜잭션 처리기
'Programming > 정처기' 카테고리의 다른 글
3과목 데이터베이스 구축 물리 데이터베이스 설계 100 ~ 106 (0) | 2024.02.03 |
---|---|
3과목 데이터베이스 구축 물리 데이터베이스 설계 091 ~098 (2) | 2024.01.30 |
3과목 데이터베이스 구축 논리 데이터베이스 설계 076~082 (1) | 2024.01.28 |
2과목 소프트웨어 개발 인터페이스 구현 066~ 075 (1) | 2024.01.25 |
2과목 소프트웨어 개발 애플리케이션 테스트 관리 054 ~ 065 (2) | 2024.01.24 |