자격증/정처기

3-1 논리 데이터베이스 설계

길용쓰 2023. 5. 18. 07:32

1.데이터베이스 설계 순서

- 요구 조건 분석 -> 개념 -> 논리 -> 물리적 설계 -> 구현

 

1)개념적 설계 = 정보 모델링

- 현실 세계의 인식을 추상적인 개념으로 표현

- 개념 스키마 + 트랜잭션 모델링 + ER 다이어그래

 

2)논리적 설계 = 데이터 모델링

- 현실 세계의 자료를 논리적인 자료구조로 변환(맵핑)현실

- 논리 스키마 + 트랜잭션 인터페이스 + 정규화

*개념 스키마를 평가 및 정제하여 논리적 스키마 설계

 

3)물리적 설계 = 데이터 구조화

- 논리적 구조의 데이터를 물리적 구조의 데이터로 변환

- 레코드 양식이나 접근 경로 설계

- 고려사항: 트랜잭션 처리량, 응답시간, 디스크 용량 (저장공간)

 

4)구현 = DDL로 스키마 작성, 트랜잭션 작성

 

*개념 스키마는 DBMS에 독립적, 논리 스키마와 물리적 구조는 DBMS에 종속적

 

 

 

2.데이터 모델

- 구성 요소: 개체, 속성, 관계  

- 표시 요소: 구조(관계), 연산, 제약조건

- 종류 : 개념적 / 논리적 / 물리적 데이터모델

 

개체

- 영속적, 독립적(=식별 가능), 유형+무형 

- 다른 개체와 하나 이상의 관계가 존재

- 카디널리티(기수) = 튜플의 개수

 

속성

- 데이터베이스의 가장 작은 논리적 단위

- 데이터 항목이나 필드에 해당

- 차수(degree) = 속성의 개수

- 기본 + 설계 + 파생  (자동차 명 + 자동차 코드 + 총 판매금액)

 

관계

-종속 + 중복(종속^n) + 재귀(자기자신) + 배타(합집합 or 교집합 and)

 

식별자

- 모든 개체는 한개 이상의 식별자를지님

- 유일성(식별), 최소성, 불변성, 존재성(not null)

 

 

 

 

3.ER 모델

- 개체(E)와 관계(R) 타입으로 현실 세계를 표현

- 개체 + 관계 + 속성

- 특정 DBMS를 고려하지 않음 = 1:1, 1:N, N:M 전부 가능

 

ER 다이어그램

개체 = 사각형

관계 = 마름모

속성 = 타원

-> 이중 타원 = 다중값 속성

-> 복수 타원 = 복합 속성

-> 밑줄 타원 = 기본키 속성

 

선 = 개체와 속성 연결

사람 ---(N)---[거주관계]---(1)---도시

 

 

 

4.관계형 데이터 모델

- 테이블(릴레이션) +기본키 + 외래키

- 릴레이션 = 스키마(구조) + 인스턴스(실제 값)

행 = 튜플 = 속성의 모임 =  레코드(파일 구조 관점) -> 카디널리티(기수)

열 = 속성 = 개체의 특성 = 데이터 항목/필드(파일) -> Degree(차수)

릴레이션 스키마 = 개체 타입 = 레코드 타입

릴레이션 인스턴스 = 개체 인스턴스(어커런스) => 개체 세트

*도메인 = 하나의 속성이 가질 수 있는 값 목록 = 남,여

 

 

릴레이션의 특징

1)튜플, 속성간엔 순서가 없다

2)모든 속성 값은 원자값을 지닌다

3)속성 값은 동일할 수 있지만 속성 명칭은 동일할 수 없다

4)한 릴레이션의 모든 튜플은 상이함 -> 식별을 위해 key 사용

 

 

 

키(Key)

1)후보키 - 유일성 + 최소성  *Candidate

2)기본키 - 유일성 + 최소성 + 존재성(not null)

3)대체키(보조키) - 기본키가 아닌 후보키  *Alternate

4)슈퍼키 - only 유일성

5)외래키 - 다른 릴레이션의 기본키 참조

 

 

무결성

1)개체 무결성 - 기본키는 중복값 x, NULL x

2)참조 무결성 - 외래키는 참조한 기본키값 or NULL

3)도메인 무결성 - "속성" 값이 도메인에 속해야함  *튜플값 아님!

4)사용자 정의 무결성

*강화: 어플리케이션 + 데이터베이스 트리거 + 제약조건

 

 

 

 

5.관계대수

- 원하는 정보와 이를 유도하는 방법을 기술하는 절차적 언어

- 관계대수의 피연산자와 결과는 전부 릴레이션

- 연산의 순서를 명시한다

- 순수 관계 연산자: Select, Project, Join, Division

- 일반 집합 연산자: Union(합집합), Intersection(교집합), Difference(차집합), Cartesian Product(교차곱) 

 

Select (σ)

- 튜플(행)을 구함 = 수평 연산

- σ <조건>

 

Project (π)

- 속성값(열) 추출 = 수직 연산자- π <속성명> * 중복은 제거됨

 

Join (⋈)

- 공통 속성을 기준으로 두 릴레이션을 합침 -> 둘의  차수가 더해짐- 교차곱에 Select를 수행한 것과 동일- Natural Join이면 -1- 그냥 조인은 a.No = b.No, 자연 조인은 ⋈ No   *속성명 같아야함

 

Division (%)

*나누는데 사용된 속성은 제외

 

 

 

일반 집합 연산자

- 합집합: R∪S < R+S  *중복 제거됨

- 교집합: R∩S < MIN(R,S)

- 차집합: R-S < R

- 교차곱: 차수는 더한것과, 카디널리티는 곱한것과 같음

 

합병조건: 속성의 수와 대응되는 각 속성의 도메인이 같아야함.

*속성의 이름은 달라로 됨

*교차곱은 상관 없음

 

 

관계 해석 (Relational Calculus)

- 원하는 정보가 무엇인지 정의하는 비절차적 특성

- 튜플 + 도메인 관계 해석

- 관계 해석과 관계 대수의 DB 처리 기능과 능력은 동등함

- 관계대수로 표현한 식은 관계 해석으로 표현 가능

- 계산 수식, 질의어로 표현

*

- 관계 대수 = How = 절차

- 관계 해석 = What = 비절차

 

 

 

 

 

 

 

 

정규화

- 한 종속성이 하나의 릴레이션에 표현되도록 분해하는 과정

- 논리적 설계 단계에서 수행

- 정규화 원칙 : 무손실 표현 + 분리의 원칙 + 중복성 감소

*3NF까진 항상 무손실

 

- 정규화를 할수록 정확성은 증가, 조회 성능은 감소 (물리적 접근이 복잡해짐)

- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게함

- 데이터 모형 단순화 / 효과적인 검색 / 속성의 배열 상태 검증 / 값 누락 여부 확인

 

- 중복을 배제하여 이상(Anomaly)을 방지

*이상: 삽입, 삭제, 갱신(일부만 update = 정보 모순)

 

 

 

 

제 1 정규형

- 모든 도메인/속성값이 원자값으로만 구성

 

제 2 정규형

- 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수 종속 ( = 부분 함수 종속 제거)

- (A,B) -> C 일때 A->C 이거나 B->C이면 안됨

 

제 3 정규형

- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속하지 않음

- A -> B -> C 가 없어야함

*3NF의 여러 후보키가 중첩될때 적용하는 강한 제 3 정규형

 

 

BCNF (Boyce Codd)

- 결정자(determinant)가 전부 후보키(candidate)

 

제 4 정규형

- 다치 종속 A->>B 제거

 

제 5 정규형 (PJ/NF)

- 조인 종속성 이용

- 후보키를 통하지 않은 조인 종속 제거

 

 

반 정규화

- 정규화를 할수록 정확성은 증가, 성능은 감소 -> 성능/편의성을 위해 정규화 원칙 위배

- 테이블 통합 = 1:1, 1:N, 슈퍼/서브타입    *N/M 아님!

- 테이블 분할 = 수평(빈도에 따라) + 수직 (빈도, 크기, 보안에 따라)

- 중복 테이블 추가: 집계(트리거) + 진행 + 특정 부분

 

 

 

시스템 카탈로그

- 시스템 그 자체의 정보 (=메타데이터)를 보관

- DBMS 내 모든 데이터 객체의 정의/명세 정보를 관리 -> 데이터 사전 이라고도 함 

- DB(테이블,뷰) + 사용자(ID,PW,접근권한) + 제약조건 + 함수/프로시저/트리거 정보

- 일반 이용자도 SQL로 검색 가능, 갱신은 안됨 

 

- 데이터 디렉토리: 데이터 사전의 데이터에 접근하는데 필요한 정보 관리

*오직 시스템만 접근가능