관계 데이터 구조.

Slides:



Advertisements
Similar presentations
1. 관계 데이터베이스의 정규화 (1) 정규화 1) 이상(anomaly) ① 이상의 정의 • 관계 모델에서는 애트리뷰트들 간에 존재하는 여러 종속관계를 하나의 릴레이션에 표현하기 때문에 릴레이션 조작 시 이상 (anomaly) 발생 • 데이터의 중복으로 인하여 관계연산을.
Advertisements

MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
Entity Relationship Diagram
Chapter 02. 데이터 모델링.
4. 관계 데이터베이스 (Relational Database)
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
학습목표 학습목표 안정적인 데이터베이스 시스템의 구현 및 유지관리를 위해서는 정확하고 명쾌한 데이터베이스 모델링이 무엇보다도 중요 하다. 따라서 본 단원에서는 데이터베이스를 설계할 때 반드시 거쳐야 하는 3단계 모델링인 개념적, 논리적, 물리적 모델링에 대한 전반적인.
제5장 데이터베이스 관리.
MySQL 및 Workbench 설치 데이터 베이스.
데이터베이스 및 설계 금오공과대학교 컴퓨터공학부 이 이섭.
관계형 데이타 모델 관계형 데이타베이스 관계 대수
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
6 장. ER-관계 사상에 의한 관계 데이터베이스 설계
11. 데이타 종속성과 정규화.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
6장 그룹 함수.
ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts
2장. 관계 데이터 모델과 제약조건 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나 IBM 연구소에 근무하던 E.F. Codd가 1970년에 관계 데이터 모델을 제안함 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
2장. 관계 데이터 모델과 제약조건 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나 IBM 연구소의 E.F. Codd가 1970년에 관계 데이터 모델을 제안함 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS 시제품은.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어 어느것을 기본으로 만들것인가
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
관계 대수.
5장. 관계대수와 관계 해석 관계 대수 릴레이션들을 다루는 연산들의 집합 검색 요구(질의)를 기술하는 데에 사용
08. 데이터 모델링.
1. 관계 데이터 언어 관계 대수 1) 관계대수 정의 ① 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 인 방법 ② 주어진 관계로 부터 원하는 관계를 얻기 위해 연산자와 연산 규칙을 제공하는 언어 ③ 릴레이션 조작을 위한 연산의 집합으로 피연산자와 결과가.
5. 관계대수와 관계해석 ( Relational Operations: 관계연산)- 9장
데이터베이스 (Databases) 관계 데이터베이스의 함수적 종속성과 정규화 문양세 강원대학교 IT대학 컴퓨터과학전공.
01 데이타베이스 개론 데이타베이스의 등장 배경 데이타베이스의 발전 과정 데이타베이스의 정의 데이타베이스의 특징
5. 관계대수와 관계해석 관계자료 연산(operation)
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
제 4 장 관계 데이터 연산 1. 개요 2. 관계 대수 3. 관계 해석.
함수적 종속과 정규화 함수적 종속 데이터 중복의 문제점 정규형.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
27장. 모듈화 프로그래밍.
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
Visual Basic .NET MDI 만들기.
4. 관계 데이터베이스 (Relational Database)- 7, 8장
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
관계 데이터 모델과 관계 데이터베이스 제약 조건
ER-관계 사상에 의한 관계 데이터베이스 설계
4. 관계 데이터 모델.
Chapter 03. 관계 데이터베이스 설계.
05. Relational DBMS 명지대학교 ICT 융합대학 김정호.
MovieStory 작성자 홍성혁 소속 전자전기컴퓨터공학부 학번
Database Management System
7장. 릴레이션 정규화 릴레이션 정규화 부주의한 데이터베이스 설계는 제어할 수 없는 데이터 중복을 야기하여 여러 가지 갱신 이상(update anomaly)을 유발함 어떻게 좋은 데이터베이스 설계를 할 것인가? 데이터베이스에 어떤 릴레이션들을 생성할 것인가? 각 릴레이션에.
06. SQL 명지대학교 ICT 융합대학 김정호.
DB 개요 1. 데이터베이스 정의 데이터의 중복성을 최소화하면서 조직 또는 기업에서 필요로 하는 상호 연관 있는 데이터들의 체계적인 집합 통합된 데이터(Integrated Data) : 자료 중복 최소화 저장된 데이터(Stored Data) : 저장 매체에 저장 운영 데이터(Operational.
문성우 SQL 실습 Part Ⅰ 문성우.
Database Relational DML SQL.
제 3 장 관계 데이터 모델 1. 개요 2. 기본 개념 3. 관계 데이터 제약.
제 8 장 ER-관계 사상에 의한 관계 데이타베이스 설계
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
Chapter 10 데이터 검색1.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
07. DB 설계 명지대학교 ICT 융합대학 김정호.
Chapter 2: Intro to Relational Model
ER-관계 사상에 의한 관계 데이터베이스 설계
 6장. SQL 쿼리.
1. 데이타베이스의 개념.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
4장. 관계 대수와 SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
Report #2 (기한: 3/16) 데이터 구조 과목의 수강생이 50명이라고 가정한다. 이 학생(학번은 2016????으로 표현됨)들의 중간 시험(0~100), 기말 시험(0~100) 성적을 성적 파일에 작성하라(프로그램을 통해서 또는 수작업으로). 성적 파일을 읽어들여서.
데이터베이스 설계 데이터의 분석 개체 관계.
8장. 데이터베이스 설계 데이터베이스 설계 단계 요구 사항 분석 개념적 설계 논리적 설계 물리적 설계와 구현.
제1강 데이터베이스의 기본개념(3).
Presentation transcript:

관계 데이터 구조

 속성과 도메인 테이블 ≒ 릴레이션(relation) 도메인(domain) 속성(attribute) 속성이 취할 수 있는 값(value)들의 집합 같은 도메인의 값들끼리 비교가 허용됨 속성(attribute) 도메인의 역할 이름 속성 이름들은 모두 달라야 함 단순 도메인 (simple domain) → 단순 속성 : 원자값 복합 도메인 (composite domain) → 복합 속성 : 복합값 연, 월, 일 ⇒ 날짜:<연,월,일>

▶ 릴레이션(Relation) R ⅰ. 수학적 정의 ⅱ. 개념적 정의 릴레이션 R : 카티션 프러덕트의 부분집합 R ⊆ D1 × D2 ×...× Dn 즉 n-튜플 <v1, v2, ..., vn>의 집합 단 Di : i번째 도메인 vi ∈ Di, i = 1,2,..,n n : R의 차수(degree :일차, 이차, 삼차, ..., n차) 튜플의 수 : 카디널리티(cardinality) ⅱ. 개념적 정의 릴레이션 스키마 + 릴레이션 인스턴스 과목번호 (CNO) 학번 x 과목번호 (SNO x CNO) 학번 (SNO) <100,C412> <100,C123> <100,C312> <200,C412> <200,C123> <200,C312> C412 C123 C312 100 200

▶ 릴레이션 스키마 (relation schema) 릴레이션 내포 (Intension) 릴레이션 스키마 릴레이션 이름 + 속성 이름 R(A1, A2, ..., An), Ai ⇔ Di 정적 성질 : 시간에 무관

▶ 릴레이션 인스턴스 (relation instance) 릴레이션 외연 (Extension) 어느 한 시점에 릴레이션 R이 포함하고 있는 튜플들의 집합 < v1, v2, ..., vn > vi ∈ Di {(attr1=v1, attr2=v2, ···, attrn=vn )} 동적 성질 삽입, 삭제, 갱신 시간에 따라 변함

 릴레이션 속성 학생 릴레이션 스키마 학번 이름 학년 학과 릴레이션 100 나연묵 4 컴퓨터 200 이찬영 3 전기 릴레이션 인스턴스 300 정기태 1 컴퓨터 400 송병호 4 컴퓨터 500 박종화 2 산공 튜플 도메인 integer DSNO integer DYEAR char(6) NAME char(10) DEPT

 릴레이션의 특성 (1) ⅰ. 튜플의 유일성 ⅱ. 튜플들의 무순서 ⅲ. 속성들의 무순서 릴레이션 = 서로 다른 튜플들의 "집합" ⅱ. 튜플들의 무순서 릴레이션 : 추상적 개념(abstract concept) 테이블 : 구체적 표현(concrete representation) ⅲ. 속성들의 무순서 릴레이션 스키마 → 속성들의 "집합" 튜플 : <attr:value>쌍의 집합

 릴레이션의 특성 (2) ⅳ. 속성의 원자값(atomic value) (분해 불가능) 정규화 관계 (normalized relation) 비정규화 관계는 분해로 정규화 동등한 의미 유지 널값은 원자값 (null value ; unknown, inapplicable) 단순 도메인 복합 도메인 : 값을 하나의 단위로 취급

 관계 데이터베이스 관계 데이터베이스 관계 데이터베이스 스키마 = 릴레이션 스키마 집합 데이터베이스를 시간에 따라 그 내용(상태)이 변할 수 있는 테이블 형태로 표현 관계 데이터베이스 스키마 = 릴레이션 스키마 집합 관계 데이터 모델 ⇔ 프로그래밍 시스템 릴레이션 ⇔ 화일 튜플 ⇔ 레코드 (어커런스) 속성 ⇔ 필드

 example 대학(University) 관계 데이터베이스 학번 (SNO) 이름 (SNANE) 학년 (YEAR) 학과 (DEPT) 100 나 연 묵 4 컴퓨터 200 이 찬 영 3 전기 300 정 기 태 1 400 송 병 호 500 박 종 화 2 산공 학생 (STUDENT) 과목번호 (CNO) 과목이름 (CNANE) 학점 (CREDIT) 학과 (DEPT) C123 프로그래밍 3 컴퓨터 C312 자료 구조 C324 파일 처리 C413 데이터 베이스 C412 반 도 체 전자 담당교수 (PRNAME) 김성기 황수찬 이규철 이석호 홍봉희 과목 (COURSE)

 example 대학(University) 관계 데이터베이스(cont’d) 100 200 300 400 500 C413 학번 (SNO) 100 200 300 400 500 과목번호 (CNO) C413 E412 C123 C312 C324 성적 (GRADE) A B C 중간성적 (MIDTERM) 90 95 85 75 80 65 기말성적 (FINAL) 등록 (ENROL)

관계 데이터 제약

 기본키(Primary key) 키(key) 후보키(candidate key) 튜플을 유일하게 식별할 수 있는 속성 집합 릴레이션 R(A1, A2, ..., An)에 대한 속성 집합 A = { A1, A2, ..., An }, K = { Ai , Aj , ..., Ak }에 대하여, K  A 인 K가 아래 성질을 만족하면 후보키이다. 유일성(uniqueness) K (= { Ai , Aj , ..., Ak }) 의 값(< Vi , Vj , ..., Vk >)은 유일하다. 최소성(minimality) K는 튜플을 유일하게 식별하기 위해 필요한 최소의 속성으로 구성 된다.

 기본키 (2) 슈퍼키 (super key) 기본키 (primary key) 대체키 (alternate key) 유일성(uniqueness)은 만족하지만 최소성(minimality)을 보장하지는 않는 속성의 집합 기본키 (primary key) 후보키(candidate key)중 데이터베이스 설계자가 선정하는 하나의 키 대체키 (alternate key) 후보키중에 기본키를 제외한 나머지 후보키

 외래키(Foreign key) 외래키(foreign key) 릴레이션 R1에 속한 속성 FK가 릴레이션 R2의 기본키일 때 FK는 R1의 외래키이다. (FK의 도메인) = (R2의 기본키의 도메인) FK의 값은 R2에 존재하는 값이거나 null이다. R1과 R2가 반드시 다른 릴레이션일 필요는 없다. R1을 참조 릴레이션(referencing relation), R2를 참조된 릴레이션(referenced relation)이라 한다.

 외래키 (2) R1  R2인 경우 R1 = R2인 경우 교수 (교수번호,교수이름,학과번호,직급) 학과 (학과번호,학과이름,학과장교수번호,학생수) PK FK 학생 (학번,이름,학년,학과) 과목 (과목번호,과목이름,학점,학과,담당교수) 등록 (학번,과목번호,성적) FK FK R1 = R2인 경우 교수1 (교수번호,교수이름,학과번호,학과장교수번호) PK FK

 무결성 제약 null 값 개체 무결성(entity integrity) 참조 무결성(referential integrity) 모르는 값(unknown value) 해당 없음(inapplicable) 무결성 제약에서는 공백도 null로 해석 개체 무결성(entity integrity) 기본 키는 null값을 가질 수 없다. 참조 무결성(referential integrity) 외래키의 값은 참조된 릴레이션의 기본키 값과 같거나 null이다.

 무결성 제약 (2) 데이터베이스의 상태 (database state) 어느 시점에 데이터베이스에 저장된 데이터를 의미 DBMS는 데이터베이스 상태의 변화에도 항상 무결성 제약을 만족 시켜야 한다.

관계 데이터 연산

 관계 데이터 연산(시스템) 관계 데이터 언어(사용자) 관계 해석과 관계 대수는 표현이나 기능면에서 동등 ⅰ. 관계 대수(relational algebra) 절차식언어 : how, what ⅱ. 관계해석(relational calculus) 비절차식언어 : what 튜플 관계해석 도메인 관계해석 관계 해석과 관계 대수는 표현이나 기능면에서 동등

 관계대수(Relational Algebra) 릴레이션 조작을 위한 연산의 집합 폐쇄성질 (closure property) 피연산자와 연산 결과가 모두 릴레이션 중첩(nested)된 수식의 표현이 가능 구성 릴레이션 : 튜플의 집합 일반 집합 연산자 : 합집합 교집합 차집합 카티션 프로덕트 순수 관계 연산자 : 실렉트 프로젝트 조인 디비젼

▶ 일반 집합 연산자(1) ⅰ. 합집합 (union,∪) ⅱ. 교집합 (intersection,∩) R∪S = { t | t∈R ∨ t∈S } |R∪S| ≤ |R| + |S| ⅱ. 교집합 (intersection,∩) R∩S = { t | t∈R ∧ t∈S } |R∩S| ≤ min{ |R|, |S| } ⅲ. 차집합 (difference,-) R­S = { t | t∈R ∧ t  S } |R­S| ≤ |R| ⅳ. 카티션 프로덕트 (cartesian product,×) R×S = { r·s | r∈R ∧ s∈S } |R×S| = |R|×|S| 차수(degree) = R의 차수 + S의 차수 · : 접속(concatenation)

▶ 일반 집합 연산자(2) Note 합병가능(union-compatible)한 릴레이션 ∪, ∩, - 연산의 피연산자들은 ⅰ. 차수가 같아야 함 ⅱ. 대응 속성별로 도메인이 같아야 함 ∪, ∩, × 연산은 결합적(associative)임 A∪B∪C = (A∪B)∪C = A∪(B∪C) ∪, ∩, × 연산은 교환적(commutative)임 A∪B = B∪A

▶ 순수 관계 연산자 릴레이션 : R(X) = R(A1, ... , An) R의 튜플 : r = <a1, ... , an> ∈ R 튜플 r에 대한 속성 Ai의 값 r.Ai 또는 ai r.Ai = r[Ai] = ai

실렉트 (SELECT, )(1) A, B가 릴레이션 R의 속성일 때, Av(R) = { r | r∈R ∧ r.Aθv } AB(R) = { r | r∈R ∧ r.Aθr.B } 조건식(predicate) 단, θ(theta) = { <, >, ≤, ≥, =, ≠ } v : 상수 선택 조건을 만족하는 릴레이션의 수평적 부분집합 (horizontal subset)

실렉트 (2) example 조건2(조건1(R)) = 조건1(조건2(R)) = 조건1  조건2 (R) 학과 = '컴퓨터' (학생) 학번 = 300  과목번호='C312'(등록) 중간성적<기말성적 (등록) 조건2(조건1(R)) = 조건1(조건2(R)) = 조건1  조건2 (R)

프로젝트 (PROJECT, ) 릴레이션 R(X)에서 Y={B1,B2, … ,Bm}이고 Y⊆X 이면, Y(R)={ <r.B1, ... , r.Bm> | r∈R } example 학생(학번,이름,학년,학과)에서 이름,학과(학생) 릴레이션의 수직적 부분집합(vertical subset) 생성된 중복 튜플은 제거

조인 (JOIN, )(1) 세타조인 (theta-join) example 동등조인 (equi-join) R(X), S(Y), A∈X, B∈Y 에 대하여 R AθB S = { r · s | r∈R ∧ s∈S ∧ ( r.Aθs.B) } 결과 차수 = R의 차수 + S의 차수 example 학생 학번=학번 등록 동등조인 (equi-join) 세타조인에서 θ가 "="인 경우 R A=BS = { r·s | r∈R ∧ s∈S ∧ ( r.A=s.B ) }

조인 (2) 자연조인 (natural join, N) R(X), S(Y)의 조인 속성 Z(=X∩Y)라 하면 R NS = {<r · s>[X∪Y] | r∈R∧s∈S∧r[Z]=s[Z] } = X∪Y(Z=Z (R×S)) = X∪Y(R Z=ZS) 즉 동등조인의 결과 릴레이션에서 속성의 중복 제거함

디비젼 (DIVISION, ÷)(1) 릴레이션 R(X), S(Y) 에 대하여 Y  X이고 X-Y=Z이면 R(X)=R(Z,Y) R÷S ={ t | t∈ Z(R) ∧ t · s∈R for all s∈S }

디비젼(2) example 학과목(SC) 과목1(C1) 과목2(C2) 과목3(C3) 학번 (SNO) 과목번호 (CNO) 100 200 C123 300 C312 C324 400 500 과목번호 (CNO) C413 C312 C413 과목번호 (CNO) 과목번호 (CNO) C312 C413 E412 SC ÷ C1 SC ÷ C2 SC ÷ C3 학번 (SNO) 100 300 400 학번 (SNO) 300 400 학번 (SNO) 400

작명 연산 (RENAME, ρ) 중간 결과 릴레이션에 이름을 붙이거나 속성 이름을 변경할 때 사용 ρS(E) ρS(B1,B2, … ,Bm )(E) 관계 대수식 E의 결과 릴레이션의 이름을 S로 하면서 속성 이름을 B1,B2, … ,Bm 으로 지정

▶ 근원 연산과 복합 연산 근원연산 (primitive operations) 복합연산 (composite operations) 합집합, 차집합, 카티션 프로덕트, 프로젝트, 실렉트 복합연산 (composite operations) 교집합, 조인, 디비젼 R∩S = R ­ (R­S) = S ­ (S­R) = (R∪S) ­ ( (R­S) ∪ (S­R) ) R AθB S = AθB (R×S) R(Z,Y)÷S(Y)= R[Z] - ((R[Z]×S) - R)[Z]

▶ 관계 대수의 확장(1) ⅰ. 세미조인 (Semijoin, ) R(X), S(Y)의 조인 어트리뷰트를 X∩Y라 하면 R S = R N(X∩Y(S)) =X(R NS) S와 자연조인을 할 수 있는 R의 튜플 특징 R S ≠ S R R NS = (R S) NS = (S R) N R

 자연조인과 세미조인 R S X∩Y(S) A B C B C D B C a1 b1 c1 b1 c1 d1 b1 c1 a2 b1 N R S N N R S A B C D A B C a1 b1 c1 d1 N a1 b1 c1 a1 b1 c1 d2 a2 b1 c1 a2 b1 c1 d1 a4 b2 c3 a2 b1 c1 d2 (세미조인) a4 b2 c3 d3 (자연조인)

▶ 관계대수의 확장(2) ⅱ. 외부조인 (Outerjoin, +) 조인시 한 릴레이션에 있는 튜플이 조인할 상대 릴레이션에 대응되는 튜플이 없을 경우, 상대를 널(null) 튜플로 만들어 결과 릴레이션에 포함 두 조인 릴레이션의 모든 튜플들이 결과 릴레이션에 포함됨

 자연조인과 외부조인 R S A B C B C D a1 b1 c1 b1 c1 d1 a2 b1 c1 b1 c1 d2 a3 b1 + R S + N A B C D R S N a1 b1 c1 d1 A B C D a1 b1 c1 d2 a1 b1 c1 d1 a2 b1 c1 d1 a1 b1 c1 d2 a2 b1 c1 d2 a2 b1 c1 d1 a3 b1 c2 a2 b1 c1 d2 a4 b2 c3 d3 a4 b2 c3 d3 b3 c3 d3 (자연조인) (외부조인)

▶ 관계대수의 확장(3) ⅲ. 외부 합집합 (Outer-union, ∪+) 합병가능하지 않은(부분적으로 합병 가능한) 두 릴레이션을 차수를 확장시켜 합집합으로 만듬

 외부 합집합 R S A B C B C D a1 b1 c1 b1 c1 d1 a2 b1 c1 b1 c1 d2 a3 b1 c2 + U A B C D a1 b1 c1 a2 b1 c1 a3 b1 c2 a4 b2 c3 b1 c1 d1 b1 c1 d2 b2 c2 d3

▶ 관계대수의 확장(4) ⅳ. 집단 연산 AVG성적(등록) 등록 릴레이션에 있는 성적 속성 값들에 대해 평균값 계산 GROUP학년(학생) 학생 릴레이션의 튜플들을 학년 값에 따라 그룹 짓게 함 일반 형식 : GAFB(E) E : 관계 대수식 F : 집단 함수 ( SUM, AVG, MAX, MIN, COUNT) B : 집단 함수의 적용 대상 속성 A : 그룹 함수가 적용될 속성

▶ 관계대수의 질의문 표현(1) 모든 학생의 이름과 학과를 보여라. 이름,학과 (학생) 과목번호가 C413인 과목에 등록한 학생의 이름과 성적은 무엇인가? 이름,성적(과목번호='C413' (학생 N등록)) ‘파일처리' 과목을 가르치는 교수의 이름은? 담당교수(과목이름=‘파일처리'(과목))

▶ 관계대수의 질의문 표현(2) 모든 과목에 수강하고 있는 학생의 학번, 이름은? 학번,이름((학번,과목번호(등록) ÷ 과목번호(과목)) N학생) 학번이 600, 이름이 '김명호', 학년이 4, 학과가 컴퓨터인 학생을 삽입하라. 학생∪{<600, ‘김명호’, 4, ‘컴퓨터’>} 과목 '데이터베이스'를 삭제하라. 과목 - (과목이름='데이터베이스'(과목))

데이터 종속성과 정규화

 데이터의 논리적 표현 관계 스키마(relational schema)의 설계 관계 모델을 이용하여 어떻게 실세계를 정확히 표현할 것인가? i. 속성, 개체, 관계를 파악 ⅱ. 관련된 속성들을 릴레이션으로 묶음 데이터 종속성 : 속성들간의 관계 효율적인 데이터 조작 데이터의 중복성 iii. 변칙적 성질의 예방 이상(anomaly)

▶ 이상 (anomaly) example : 수강 릴레이션 기본키 : 학번, 과목 번호 학번 과목번호 성적 학년 100 C413 A 4 E412 200 C123 B 3 300 C312 1 C324 C 400 C412 500 2 수강 기본키 : 학번, 과목 번호

▶ 이상(2) 삭제이상(deletion anomaly) 삽입이상(insertion anomaly) 200번 학생이 'C123'의 등록을 취소 ⇒ 3학년이라는 정보도 함께 삭제됨 연쇄 삭제(triggered deletion)에 의한 정보의 손실(loss of information) 삽입이상(insertion anomaly) 600번 학생이 2학년이라는 사실을 삽입 ⇒ 어떤 과목을 등록하지 않는 한 삽입이 불가능 (∵ 과목 번호가 기본 키) 원하지 않는 정보의 강제 삽입 갱신이상(update anomaly) 400번 학생의 학년을 4에서 3으로 변경 ⇒ 학번이 400인 4개의 튜플 모두를 갱신시켜야 함 중복데이터의 일부 갱신으로 정보의 모순성(inconsistency) 발생

▶ 이상의 원인과 해결책 이상의 원인 이상의 해결 속성들 간에 존재하는 여러 종속관계를 하나의 릴레이션에 표현 속성들 간의 종속관계를 분석하여 여러개의 릴레이션으로 분해(decomposition) ⇒ 정규화(normalization)

▶ 스키마 설계와 변환 스키마 설계 : 데이터베이스의 논리적 설계 스키마 변환의 원리 ① 속성들과 이들의 제약 조건 (종속성)들을 수집 ② 수집된 결과를 명시된 제약 조건에 따라 여러 개의 릴레이션으로 분할 ⇒ 스키마 변환 (schema transformation) 스키마 변환의 원리 ① 정보의 무손실 ② 데이터의 중복성 감소 ③ 분리의 원칙

 함수 종속(FD) 정의 어떤 릴레이션 R에서, 속성 X의 값 각각에 대해 속성 Y의 값이 하나만 연관  속성 Y는 속성 X에 함수 종속 X  Y 속성 X는 Y를 (함수적으로) 결정 즉, X는 Y의 결정자(determinant) X, Y는 복합 속성일 수 있음

 함수 종속 다이어그램 수강 릴레이션 ( 기본키: 학번, 과목번호) 학년 학번 성적 과목번호 (학번, 과목번호)  성적 학번  학년

▶ 완전 함수 종속과 부분 함수 종속 복합 속성 X에 대하여 X  Y가 성립할 때 완전 함수 종속 (full functional dependency) X’  X 이고 X’  Y 를 만족하는 속성 X'이 존재하지 않음 부분 함수 종속 (partial functional dependency) X’  X 이고 X’  Y 를 만족하는 속성 X'이 존재함

▶ 완전 함수 종속과 부분 함수 종속(2) 예: 수강 릴레이션의 함수 종속 학번  학년 (학번,과목번호)  성적 (학년)은 (학번)에 완전 함수 종속, 그러나 (학번,과목번호)에는 부분 함수 종속, (성적)은 (학번,과목번호)에 완전 함수 종속

 기본 정규형 정규형(Normal Form) 정규화(Normalization)의 원칙 어떤 일련의 제약 조건을 만족하는 릴레이션 정규화(Normalization)의 원칙 정규화 = 스키마 변환 (S  S') ① 무손실 표현 같은 의미의 정보 유지 그러나 더 바람직한 구조 ② 데이터의 중복성 감소 ③ 분리의 원칙 릴레이션 각각에 대해 독립적 조작이 가능

▶ 제1정규형 (1NF) 정의 예 : 수강지도 릴레이션 모든 도메인이 원자값(atomic value)만으로 된 릴레이션 예 : 수강지도 릴레이션 수강지도 (학번,지도교수,학과,과목번호,성적) 기본키 : (학번,과목번호) 함수 종속 : (학번,과목번호)  성적 학번  지도교수 학번  학과 지도교수  학과 학번 과목번호 성적 학과 지도교수

▶ 제1정규형(2) 학번 과목번호 성적 학과 100 C413 A 컴퓨터 E412 200 C123 B 전기 300 C312 400 C412 수강 지도 지도교수 P1 P2 P3

▶ 제1정규형(3) 1NF에서의 이상 ① 삽입이상 500번 학생의 지도교수가 P4라는 사실의 삽입 => 어떤 교과목을 등록하지 않는 한 삽입 불가능 ② 삭제이상 200번 학생이 C123의 등록을 취소하여 이 튜플을 삭제할 경우 지도교수가 P2라는 정보까지 손실됨 ③ 갱신이상 400번 학생의 지도교수를 P1에서 P3로 변경할 경우 학번이 400인 4개 튜플의 지도교수 값을 P3로 변경해야 함

▶ 제1정규형(4) 1NF 이상의 원인 1NF 이상의 해결 기본키에 부분 함수 종속된 속성이 존재 프로젝션으로 릴레이션을 분해(부분 함수 종속을 제거) ⇒ 2NF

▶ 제2정규형 (2NF) 정의 무손실 분해(nonloss decomposition) 1NF 2NF 프로젝션 조인 프로젝션하여 분해된 릴레이션들은 자연 죠인을 통해 원래의 릴레이션으로 복귀 가능 원래의 릴레이션에서 얻을 수 있는 정보는 분해된 릴레이션들로 부터도 얻을 수 있음 그러나, 그 역은 성립하지 않음 (500번 학생의 지도교수가 P4라는 정보는 원래의 릴레이션에서 표현할 수 없음) 1NF 2NF 프로젝션 조인

▶ 제2정규형(3) 예 : 수강지도 ⇒ 지도, 수강 릴레이션 지도 (학번,지도교수,학과) 학번  지도교수 학번  학과 예 : 수강지도 ⇒ 지도, 수강 릴레이션 지도 (학번,지도교수,학과) 학번  지도교수 학번  학과 지도교수  학과 수강 (학번,과목번호,성적) (학번,과목번호)  성적 학번 과목번호 학과 지도교수 성적

▶ 제2정규형(4) 학번 학과 100 컴퓨터 200 전기 300 400 지도 지도교수 P1 P2 P3 과목번호 성적 C413 A E412 C123 B C312 C324 C C412 학번 100 200 300 400 수강

▶ 제2정규형(5) 2NF(지도 릴레이션)에서의 이상 2NF 이상의 원인 ① 삽입이상 어떤 지도교수가 특정 학과에 속한다는 사실의 삽입 불가능 ② 삭제이상 300번 학생의 튜플을 삭제하면 지도교수 P3가 컴퓨터공학과에 속한다는 정보 손실 ③ 갱신이상 지도교수 P1의 소속이 컴퓨터공학과에서 전자과로 변경된다면 100과 400번 학생의 튜플을 모두 변경하여야 함 2NF 이상의 원인 이행적 함수 종속이 존재

▶ 제2정규형(6) ☞ Note : 2NF 이상의 해결 이행적 함수 종속 (TD, Transitive Dependency) A  B와 B  C ⇒ A  C (즉, 속성 C는 속성 A에 이행적 함수 종속) 2NF 이상의 해결 프로젝션으로 릴레이션 분해(이행적 함수 종속을 제거) ⇒ 3NF

▶ 제3정규형 (3NF) 정의(3NF) 무손실 분해 2NF이고, 키가 아닌 모든 속성들은 기본키에 이행적 함수 종속되지 않음 원래의 릴레이션에서 얻을 수 있는 정보는 분해된 릴레이션들로부터도 얻을 수 있으나 그 역은 성립하지 않음 (지도교수 P4가 수학과에 속한다는 정보의 표현) 2NF 3NF 프로젝션 조인

▶ 제3정규형(2) 예 : 지도 ⇒ 학생지도, 지도교수학과 릴레이션 학생지도 (학번,지도교수) 학번  지도교수 예 : 지도 ⇒ 학생지도, 지도교수학과 릴레이션 학생지도 (학번,지도교수) 학번  지도교수 지도교수학과 (지도교수,학과) 지도교수  학과 지도교수 학과 학번 학번 100 200 300 400 학생지도 지도교수 P1 P2 P3 학과 컴퓨터 전기 지도교수 P1 P2 P3 지도교수학과

 정규형들 간의 관계 비정규 릴레이션 원자값이 아닌 도메인을 분해 1NF 부분 함수종속 제거 2NF 이행 함수 종속 제거