1/113
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
데이터저장소
데이터를 논리 구조 조직화 or 물리 공간에 구축
논리 데이터저장소
데이터와 데이터 간 연관선, 제약조건 식별해 논리적 구조로 조직화
물리 데이터저장소
논리 데이터저장소를 sw가 운용될 환경의 물리적 특성 고려해 실제 저장장치에 저장
데이터베이스(DB)
여러 사람 의해 공동으로 사용될 데이터를 중복 배제해 통합 & 쉽게 접근해 처리 위해 저장장치에 저장해 항상 사용할 수 있도록 운영하는 운영 데이터
통합된 데이터
자료 중복 배제한 데이터 모임
저장된 데이터
컴퓨터가 접근 가능한 저장 매체에 저장된 자료
운영 데이터
조직의 고유 업무 수행하는데 반드시 필요한 자료
공용 데이터
여러 응용 시스템이 공동 소유/유지하는 자료
DBMS
사용자 요구로 정보 생성하고 DB 관리하는 sw
기존 파일 시스템의 데이터 종속성/중복성 문제 해결
DBMS 기능
정의(Definition) 기능: 데이터의 형/구조 대한 정의, 이용 방식, 제약 조건 명시
조작(Manipulation) ~: 데이터 검색/갱신/삽입/삭제 위해 인터페이스 수단 제공
제어(Control) ~: 데이터 무결성/보안/권한검사/병행제어 제공
(정 조 제)
데이터 독립성 - 논리적 독립성
응용 프로그램 - DB 서로 독립 -> 데이터 논리적 구조 변경해도 응용 프로그램은 영향 없음
데이터 독립성 - 물리적 독립성
응용 프로그램 - 물리적 장치 독립 -> 디스크 추가/변경해도 응용에 영향 없음
스키마(Schema)
DB 구조/제약조건 대한 전반적 명세 기술 (외 개 내)
외부 스키마
사용자/응용 프로그래머가 필요로 하는 DB의 논리적 구조 정의
개념 스키마
DB 전체 논리적 구조
모든 응용 프로그램과 사용자가 필요로 하는 데이터 종합한 조직 전체 DB
하나만 존재
내부 스키마
물리 저장장치 입장의 DB 구조
실제로 저장될 레코드 형식, 저장 데이터의 표현 방법, 내부 레코드 물리적 순서 등
DB 설계
사용자 요구 분석해 그걸 DB 구조에 맞게 변형한 뒤, DBMS로 DB 구현해 일반 사용자가 이용하도록 하는 것
무결성, 일관성, 회복, 보안, 효율성, DB 확장
DB 설계 순서
요구조건 분석
-> 개념적 설계(정보 모델링, 개념화)
-> 논리적 설계(데이터 모델링)
-> 물리적 설계(데이터 구조화)
-> 구현
(요 개 논 물 구)
요구조건 분석
DB 사용자에게 필요한 용도를 파악하기
수집: DB 사용자에 따른 수행 업무, 필요한 데이터의 종류/용도/처리형태/흐름/제약조건 등
요구조건 분석 산출물
요구조건 명세서 작성
개념적 설계(정모)
aka 정보 모델링, 개념화
정보 구조 얻기 위해 현실의 무한성/계속성 이해
타인과 통신 위해 현실 인식을 추상적 개념으로 표현
요구조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
DBMS 독립적인 개념 스키마 설계
트랜잭션 모델링
개념적 설계 세부 목록
개념 스키마 설계, 트잭 모델링, E-R 모델
논리적 설계(데모)
aka 데이터 모델링
현실의 자료를 컴퓨터가 저장할 수 있게 DBMS가 지원하는 논리적 자료 구조로 변환(매핑)
개념 스키마 평가/정제
DBMS 따라 서로 다른 논리적 스키마 설계
트잭의 인터페이스 설계
논리적 설계 세부 목록
개념 스키마 평가/정제
DBMS에 따라 서로 다른 논리적 스키마 설계
트랜잭션의 인터페이스 설계
물리적 설계(데구)
aka 데이터 구조화
논리적 구조로 표현된 데이터를 물리 저장 장치에 저장할 수 있는 물리 구조 데이터로 변환
DB 파일의 저장 구조와 액세스 경로 결정
데이터가 컴퓨터에 저장되는 방법 묘사: 저장 레코드 형식/순서/접근 경로, 조회 집중 레코드
저장 레코드 양식 설계 고려 사항
데이터 타입
값 분포
접근 빈도
물리적 설계 시 고려할 사항
트랜잭션 처리량
응답 시간
디스크 용량
저장 공간 효율화
물리적 설계 - 레코드 접근 방법
순차 접근: 레코드 처음부터 하나씩 검사
인덱스 접근: 키-값 쌍으로 빠른 검색
해싱 접근: 해시 함수로 직접 주소 계산해 접근
DB 설계 - 구현
목표 DBMS의 DDL(데이터 정의어) 이용해 DB 생성, 트랜잭션 작성
데이터 모델
현실의 정보를 컴퓨터 표현? -> 단순화/추상화로 체계적 표현한 개념적 모형
DB 설계에서 데이터 구조(스키마) 논리적 표현 위한 지능적 도구
구성 요소: 개체, 속성, 관계
종류: 개 논 물
개념적 데이터 모델
현실에 대한 인식을 추상적 개념으로 표현
현실의 개체를 인간이 이해 가능한 정보 구조로 표현 = 정보 모델
현실 표현: 속성들로 기술된 개체 타입과 그것들 간의 관계로
E-R 모델
논리적 데이터 모델
그냥 데이터 모델이라 하면 이거
개념적 모델링으로 얻은 개념적 구조를 컴퓨터 환경에 맞게 변환
현실 표현: 필드로 기술된 데이터 타입과 그것들 간의 관계로
DBMS는 데이터 모델 하나만 선정
데이터 관계 표현 따른 구분: 관계/계층/네트워크 모델
데이터 모델 표시 요소 - 구조
Structure
논리적 표현된 개체 타입들 간 관계, 데이터 구조와 정적 성질 표현
데이터 모델 표시 요소 - 연산
Operation
DB 저장된 (개념/컴퓨터 세계의) 실제 데이터 처리하는 작업 대한 명세, DB 조작 기본 도구
데이터 모델 표시 요소 - 제약조건
Constraint
DB에 저장 가능한 실제 데이터의 논리적 제약 조건
관계(Relationship)
개체 간 논리적 연결
개체 간/속성 간 관계
관계 형태
1:1
1:N 일대다: 집합 A는 B의 원소 여러 개와 대응, B는 A에 하나씩만 대응
N:M
관계 종류 - 종속 관계
두 개체 간 주종 관계 표현
식별/비식별 관계
관계 종류 - 중복 관계
두 개체 간 2번 이상 종속 발생
관계 종류 - 재귀(순환) 관계
개제가 자신과 관계
관계 종류 - 배타 관계
개체의 속성/구분자로 개체 특성 분할
배타 AND/OR 관계
E-R(개체-관계) 다이어그램
E-R 모델의 아이디어를 시각적으로 표현
Coad & Yourdon, 개념적 DB에 사용
특정 DBMS 고려 X
관계형 DB
개체: DB에 표현하려는 것, 현실의 대상체
실세계의 유무형 정보, 서로 연관된 몇 개의 속성으로 구성
독립적 존재, 그 자체로도 구별 가능, 유일한 식별자로 식별
다른 개체와 하나 이상의 관계
DB 스키마
DB 구조와 제약 조건 대한 명세
릴레이션(테이블)
데이터를 표 형태로 표현
릴레이션 스키마
'구조' -> 릴 논리 구조 정의, '릴 이름 + 릴에 포함된 속성들' 집합
릴레이션 인스턴스
속성들에 데이터 타입 정의, 구체적인 데이터 값 가짐 -> 실제 값을 가진 튜플
튜플(테이블의 행: 가로, Tuple)
속성의 모임
튜플 수 = 기수/대응수 = Cardinality
속성(테이블의 열(컬럼): 세로, Attribute)
DB 구성하는 가장 작은 논리적 단위
개체 특성 기술
파일 구조 상 데이터 항목 or 필드에 해당
속성 명칭은 유일, 그러나 속성의 값은 동일할 수 있음
더 이상 쪼갤 수 없는 원자값만 저장
속성 수 = 차수 = Degree
도메인
속성 하나가 취할 수 있는 같은 타입의 원자(Atomic)값 집합
ex)
릴레이션 특징
한 릴레이션 내의 튜플은 모두 다름 & 순서 없음
튜플 삽입/삭제로 릴레이션은 시간마다 계속 변화
스키마 구성하는 속성 간 순서는 상관 없음
릴레이션 특성
속성 명칭은 유일하나, 속성 구성값은 동일할 수 있음
키: 릴 구성하는 튜플을 유일하게 식별 위한 속성들의 부분집합
속성값: 논리적으로 더 못 쪼개는 원자값만
후보키(Candidate Key)
릴레이션 구성 속성 중 튜플을 유일하게 식별하기 위한 속성들의 부분 집합
기본키가 될수 있는 자격 가진 모든 키
릴 내 모든 튜플 대해 이하 만족:
유일성(Unique): 하나의 키로 하나의 튜플만 식별해야 = 중복되는 값 없어야
최소성(Minimality): 모든 레코드를 유일하게 식별하는데 꼭 필요한 속성으로만 구성 = 속성 하나라도 제거되면 식별 불가
후보키 예시 - 학생 릴레이션
학번, 주민등록번호, 이름, 주소 속성
학번: 유일성, 최소성 모두 만족 -> 후보키
주민등록번호: 유일성, 최소성 모두 만족 -> 후보키
이름: 유일성 불만족 -> 후보키가 아님
{학번, 이름}: 유일성은 만족하지만, 학번만으로도 유일하므로 최소성 불만족 -> 후보키가 아님
기본키(Primary Key)
후보키에서 선정된 주키(Main Key)
중복값 & NULL값 불가
한 릴레이션에서 특정 튜플 유일 구별
검색할 때 꼭 필요하진 않음
대체키(Alternate Key)
후보키 중에 기본키 아닌 것들 = 보조키
슈퍼키(Super Key)
릴레이션 내 속성들 집합
릴 내 모든 튜플 중,
슈퍼키로 구성된 속성 집합과 동일한 값은 없음
유일성 O, 최소성 X -> 후보키보다 넓은 범주
슈퍼키 예시
슈퍼키는 릴레이션의 모든 행을 유일하게 구별할 수 있는 모든 속성 조합을 말하며, 그 중에서 군더더기 없이 가장 간결한 키가 후보키가 됩니다.
{학번}, {주민등록번호}, {학번, 이름}, {주민등록번호, 주소} 등 유일하게 식별 가능한 모든 속성 조합
외래키(Foreign Key)
다른 릴레이션 기본키 참조하는 속성 or 속성 집합
릴의 속성 A, 참조 릴의 기본키 B -> 동일한 도메인에서 정의 시 A가 외래키
외래키를 가진 테이블을 '참조하는 테이블' (또는 자식 테이블), 외래키가 참조하는 기본 키를 가진 테이블을 '참조되는 테이블' (또는 부모 테이블)
외래키 제약 조건
외래키 지정되면 참조 릴의 기본키에 없는 값은 입력 불가
외래키 사용 이유
참조 무결성(Referential Integrity)을 강제하기 위함
참조 무결성
'참조하는 테이블'의 외래키 값은 반드시 '참조되는 테이블'의 기본 키 값 중 하나이거나, NULL이어야 한다는 규칙
무결성(Integrity)
DB에 저장된 데이터 값과 현실의 실제값이 일치하는 정확성
무결성 제약 조건
DB 내 데이터 정확성 보장 위해 부정확한 자료의 저장 막는 제약 조건 (개 참 도 사)
개체 무결성
제약 대상: 속성/튜플
기본 테이블의 기본키 구성하는 속성은 NULL & 중복값 불가
참조 무결성
제약 대상: 속성/튜플
외래키 값 = NULL or 참조 릴의 기본키 값과 동일
릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다
도메인 무결성
주어진 속성 값 = 정의된 도메인에 속한 값이어야
사용자 정의 무결성
속성 값은 사용자 정의 제약 조건에 만족해야
기타 무결성 제약 조건
NULL ~ : 릴 특정 속성 값이 NULL 불가
고유 ~ : 릴 특정 속성 대해 각 튜플이 갖는 속성값들이 서로 달라야
키 ~ : 하나의 릴에는 적어도 하나의 키가 있어야
관계 ~ : 릴에 튜플 삽입 가능 여부 or 릴 간의 튜플들 사이 관계 적절성 여부
데이터 무결성 강화 방법
앱: 데이터 생성/수정/삭제 시 무결성 조건 검증 코드 추가
DB 트리거: 트리거 이벤트에 무결성 조건 실행하는 절차형 SQL 추가
제약 조건: DB에 제약 조건 설정해 무결성 유지
데이터 검색/조작
관계대수와 관계해석은 관계 DB 처리하는 기능/능력이 동등
관계대수
관계 DB가 원하는 정보 & 그걸 어떻게 유도하는지 기술하는 절차 언어
릴레이션 처리 위한 연산자와 연산 규칙 제공
피연산자, 결과 = 릴레이션 타입
연산 순서 명시
순수 관계 연산자 - Select(WHERE)
릴레이션 내 튜플 중 선택 조건 만족하는 튜플의 부분집합 구해 새 릴레이션 만들기
-> 튜플 중 사람 n명(가로 라인) 추출
기호: 시그마($\sigma$)
표기 형식: $\sigma _{조건} (R)$
순수 관계 연산자 - Project(SELECT)
릴 내 속성 리스트에 제시된 속성 값만을 추출해 새 릴 만들기
-> 속성 중 라인 n개(세로 라인) 추출
기호: 파이($\pi$)
표기 형식: $\pi_{속성리스트}(R)$
순수 관계 연산자 - Join(JOIN)
공통 속성 중심으로 두 릴 합쳐 새 릴 만들기
기호: $\bowtie$
표기 형식: $R \bowtie_{키속성r=키속성s} S$
순수 관계 연산자 - Division
X$\supset$Y인 릴 R(X), S(Y)
S 릴에 있는 모든 조건 만족하는 R 릴의 튜플 찾아 반환(S의 속성 제외)
기호: $\div$
표기 형식: R(X) $\div$ S(Y)
관계대수 예시
$\pi{이름}$($\sigma{학과='교육'}$(학생)) -> SELECT 이름 FROM 학생 WHERE 학과 = '교육'
일반 집합 연산자 - 합집합(Union)
Cardinality: 두 릴의 카 합보다 크지 않음
기호: $\cup$
일반 집합 연산자 - 교집합(Intersection)
Cardinality: 두 릴 중 카가 적은 쪽보다 크지 않음
기호: $\cap$
일반 집합 연산자 - 차집합(Difference)
Cardinality: 릴 R의 카보다 크지 않음
기호: $-$
일반 집합 연산자 - 교차곱(Cartesian Product)
aka 카테시안
Cardinality: 두 릴의 카 곱한 것
degree: 두 릴의 디 더한 것
기호: $\times$
관계해석(Relational Calculus)
Codd: 술어 해석(Predicate Calculus: 프레디킷 해석) 기반
비절차적: 원하는 정보가 뭔지만 정의
튜플/도메인 관계해석
관계대수로 표현한 식은 관계해석으로 표현 가능
관계해석 기호 - $\forall$
구성 요소: 전체: 전체 정량자
설명: For All: 가능한 모든 튜플 대해
관계해석 기호 - $\exists$
구성 요소: 존재: 존재 정량자
설명: There Exists: 튜플이 하나라도 일치함
정규화(Normalization)
종속성 이론 사용 -> 하나의 종속성이 하나의 릴레이션에 표현되도록 분해
잘못 설계된 관계형 스키마를 더 작은 속성 세트로 쪼개 바른 스키마로 만들기.
논리적 설계 단계에서 실행
정규화 모델: 일관성, 정확성, 단순성, 비중복성, 안정성
관계형 데이터베이스에서 정규화는 데이터베이스의 일관성, 최소한의 데이터 중복, 무결성을 확보하고 논리적인 데이터 구조를 만들기 위해 테이블을 무손실 분해하는 과정입니다.
데이터 중복 최소화: 불필요한 데이터가 여러 곳에 저장되는 것을 방지합니다.
데이터 무결성 확보: 데이터 삽입, 갱신, 삭제 시 발생하는 각종 이상 현상(Anomaly)을 제거합니다.
정규화 목적
데이터 구조 안정성 & 무결성
릴레이션이 DB에서 표현 가능하게
효과적 검색 알고리즘 생성
데이터 중복 방지 -> 이상(Anomaly) 방지, 자료 저장 공간 최소화
데이터 삽입 시 릴레이션 재구성 필요성 줄이기
정규화 과정
비정규 릴레이션
-> (모든 도메인이 원자값으로) -> 1NF[제 1 정규형]
-> (부분적 함수 종속 제거) -> 2NF
-> (이행적 함수 종속 제거) -> 3NF
-> (결정자에 후보키만 남기기) -> BCNF
-> (다치 종속 제거) -> 4NF
-> (조인 종속성 이용) -> 5NF
(도 부 이 결 다 조)
제1정규형(1NF)
릴레이션의 모든 도메인(속성 값)이 원자 값(Atomic Value)만으로 구성되도록 합니다. 즉, 하나의 셀에 여러 값이 포함되거나, 반복되는 그룹(Repeating Group)이 존재해서는 안 됩니다.
달성 방법: 복합 속성이나 다중 값 속성을 분리하여 별도의 행으로 만듭니다.
예: 한 고객이 여러 개의 전화번호를 가지고 있다면, 전화번호를 별도의 행으로 나누어 기본 키를 확장하거나 별도의 테이블로 분리합니다.
제2정규형(2NF)
1NF를 만족하고, 기본 키가 아닌 모든 속성이 기본 키 전체에 대해 완전 함수 종속이어야 합니다. 즉, 기본 키의 부분 집합에 종속되는 속성(부분 함수 종속)이 없어야 합니다.
제거되는 이상 현상: 복합 키(Composite Key)를 사용하는 테이블에서 키의 일부에만 종속된 속성으로 인해 발생하는 삽입/갱신/삭제 이상을 제거합니다.
달성 방법: 부분 함수 종속 관계를 가지는 속성들을 기본 키의 부분 속성과 함께 별도의 릴레이션으로 분리합니다. = 현재 주제와 상관 없는 칼럼 분리
예: (학생번호, 강좌이름)이 기본 키일 때, '강의실' 속성이 '강좌이름'에만 종속된다면, (강좌이름, 강의실) 테이블을 분리합니다.
제3정규형(3NF)
2NF를 만족하고, 기본 키가 아닌 모든 속성이 기본 키에 대해 이행적 함수 종속을 가지지 않아야 합니다. 이행적 종속이란 'A → B'이고 'B → C'일 때 'A → C'가 성립하는 관계에서, 비키(Non-key) 속성 B가 다른 비키 속성 C를 결정하는 경우를 말합니다.
제거되는 이상 현상: 키가 아닌 일반 속성 간의 종속 관계로 인한 데이터 중복 및 갱신 이상을 제거합니다.
달성 방법: 이행적 함수 종속 관계를 가지는 속성들을 별도의 릴레이션으로 분리합니다.
예: (고객번호 → 등급)이고 (등급 → 할인율)일 때, (등급, 할인율) 테이블을 분리하고 기존 테이블에는 '등급' 속성만 남깁니다.
보이스/코드 정규형(BCNF)
3NF를 만족하고, 모든 결정자(Determinant)가 후보 키(Candidate Key)여야 합니다. 3NF의 강화된 형태로, 릴레이션에 후보 키가 여러 개 있고 이들이 서로 겹쳐서 생기는 특수한 이상 현상까지 제거합니다.
제거되는 문제점: 후보 키가 아닌 속성이 다른 속성을 결정하는 함수 종속을 제거하여 데이터 모델의 안정성을 극대화합니다.
달성 방법: 후보 키가 아닌 결정자를 포함하는 함수 종속 관계를 새로운 릴레이션으로 분해합니다.
제4정규형(4NF)
다치 종속(Multi-valued Dependency)을 제거하여, 두 개 이상의 독립적인 다치 종속을 가진 속성들을 분리합니다.
제5정규형(5NF)
조인 종속(Join Dependency)을 제거합니다. 릴레이션을 여러 개로 분해했다가 다시 조인했을 때 원래의 릴레이션을 복원할 수 있도록 합니다.
반정규화(Denormalization)
의도적 정규화 위반: 개발/운영 편의 위해 정규화 모델을 통합/중복/분리
시스템 성능 향상, 관리 효율성 증가
데이터 일관성/정합성 저하
비정규화는 정규화된 테이블을 의도적으로 다시 통합하거나 중복을 허용하여 데이터 검색 시의 성능(속도)을 향상시키기 위한 과정입니다.
데이터 검색 속도 향상: JOIN 연산을 줄여서 쿼리 성능을 최적화합니다.
시스템 부하 감소: 복잡한 쿼리 처리 시간을 단축합니다.
반정규화 방법
테이블 통합/분할, 중복 테이블/속성 추가
테이블 통합
두 테이블 조인이 잦을 때, 아예 합쳐서 사용
두 테이블의 프로세스가 동일하게 자주 처리될 때
항상 두 테이블로 조회할 때
1:1 / 1:N / 슈퍼타입(상위 개체) / 서브타입(하위 개체) 테이블 통합
테이블 분할 - 수평 분할
레코드 기준 테이블 분할
레코드별 사용 빈도 차이 크다? -> 사용 빈도로 분할
테이블 분할 - 수직 분할
테이블 하나에 속성 너무 많을 때, 속성 기준으로 분할
종류:
갱신 위주 속성
자주 조회되는 속성
크기 큰 속성
보안 필요한 속성
중복 테이블 추가
여러 테이블에서 데이터 추출 or 다른 서버 테이블 이용 시 (집 진 특)
중복 테이블 추가 - 집계 테이블
집계 데이터 테이블 만들고, 각 원본 테이블에 트리거 사용
트리거의 오버헤드에 유의