데이터베이스 요약

21
데이터베이스 I. 데이터베이스란? A. 조직의 여러 응용(시스템)들이 공용하기 위해 통합, 저장한 운영 데이타 들의 집합 1. 통합 데이타 a) 최소의 중복 b) 통제된 중복 2. 저장 데이타 a) 컴퓨터가 접근 가능한 저장 매체에 저장 b) 디스크, 테이프, SSD 3. 운영 데이타 a) 조직의 고유 기능을 수행하기 위해 필요한 데이터 4. 공용 데이타 a) 조직의 여러 응용 시스템들이 공동으로 소유, 유지, 이용하는 데이타 II. 데이터베이스의 특성 A. 실시간 접근성 B. 계속적인 변화 C. 동시 공용 D. 내용에 의한 참조 1. 데이터의 위치나 주소가 아닌 내용에 따라 참조 III. 데이터베이스 구성요소 A. 논리적 구성요소 1. 사용자의 관점 2. 논리적, 개념적 요소 3. 데이타베이스 = {개체,관계} B. 물리적 구성요소 1. 시스템의 관점 2. 비트, 바잍, 블록, 실린더 저장장치의 물리적 구성 요소 IV. 데이터베이스의 개념적 구성요소 A. 개체 1. 객체

Transcript of 데이터베이스 요약

Page 1: 데이터베이스 요약

데이터베이스I. 데이터베이스란?

A.한 조직의 여러 응용(시스템)들이 공용하기 위해 통합, 저장한 운영 데이타 들의 집합

1. 통합 데이타a) 최소의 중복b) 통제된 중복

2. 저장 데이타a) 컴퓨터가 접근 가능한 저장 매체에 저장b) 디스크, 테이프, SSD

3. 운영 데이타a) 한 조직의 고유 기능을 수행하기 위해 필요한 데이터

4. 공용 데이타a) 한 조직의 여러 응용 시스템들이 공동으로 소유, 유지, 이용하는 데이타

II. 데이터베이스의 특성A.실시간 접근성B.계속적인 변화C.동시 공용D.내용에 의한 참조

1. 데이터의 위치나 주소가 아닌 내용에 따라 참조III. 데이터베이스 구성요소

A.논리적 구성요소1. 사용자의 관점2. 논리적, 개념적 요소3. 데이타베이스 = {개체,관계}

B.물리적 구성요소1. 시스템의 관점2. 비트, 바잍, 블록, 실린더 등 저장장치의 물리적 구성 요소

IV. 데이터베이스의 개념적 구성요소A.개체

1. 객체

Page 2: 데이터베이스 요약

2. 실세계의 개념3. 정보의 단위4. 하나 이상의 속성으로 구성

a) 데이타의 가장 작은 논리적 단위5. 개체 집합6. 일반 파일의 레코드와 대응7. 개체 타입, 개체 집합, 개체 인스턴스

B.관계1. 속성 관계

a) 개체를 기술하는 속성들 간 관계b) 개체 내 관계

2. 개체 관계a) 개체 간 관계

V. 데이터 베이스의 구조A.논리적 구조

1. 사용자의 관점에서 본 개념적 구조2. 데이타의 논리적 배치3. 논리적 레코드

B.물리적 구조1. 저장 관점에서 본 데이타의 물리적 배치2. 저장장치에 저장된 데이타의 실제 구조3. 추가 정보를 포함

a) 인덱스, 포인터 체인, 오버플로 구역 등4. 저장 레코드

VI. 파일 시스템의 문제점A.데이타 종속성B.데이타 중복성

VII.용어 및 개념A.논리적 화일 구조B.물리적 화일 구조C.논리적 데이터 구조D.물리적 데이터 구조E. 물리적 데이터 구조에 대한 접근 방법

Page 3: 데이터베이스 요약

F. 화일1. 레코드2. 필드(컬럼, 속성)

3.VIII. 화일 저장 방법

A.순차 방법1. 레코드들의 논리적 순서가 저장 순서와 동일

a) 히프 또는 파일(Pile) : 엔트리 순차 화일b) 일반적인 순차 화일 : 키 순차 화일

2. 레코드 접근 - 물리적 순서3. 화일 복사, 순차적 일괄 처리(batch processing) 응용

4.B.인덱스 방법

1. 인덱스를 통해 데이타 레코드 접근2. 인덱스된 화일의 구성

a) 인덱스 화일b) 데이타 화일

c)

Page 4: 데이터베이스 요약

C.인덱스된 순차 화일(Indexed Sequential File)1. 하나의 인덱스(기본 키) 사용2. 순차 접근과 직접 접근 지원3. 순차 데이타 화일

a) 레코드를 순차적으로 정렬(1) 레코드 집합 전체에 대한 순차 접근 요구를 지원하는데 사용

b) 순차 접근 방법4. 인덱스

a) 레코드들에 대한 포인터(1) 개별 레코드들에 대한 임의 접근 요구를 지원하는데 사용

b) 직접 접근 방법

5.IX. DBMS 발전 배경

A.화일 시스템에서 응용프로그램과 화일과의 관계1. 1:1 관계

B.화일 시스템 특성1. 응용프로그램은 논리적 화일 구조를 직접 물리적 화일 구조로 구현 : 모든 응용 프로그램-데이터 화일 : 하나의 화일은 하나의 응용 프로그램을 위해 존재

2. 응용 간의 데이타 공용이 불가능3. 문제점

a) 데이타 종속성(1) 응용 프로그램과 데이타 간의 상호 의존관계(2) 데이타의 구성 방법이나 접근 방법의 변경 시 관련 응용 프로그램도 동시에 변경해야 됨

(3) 응용 프로그램 관리가 곤란(4) 반대 개념 : 데이터 독립성(5) 예 : 인덱스된 순차 화일(Indexed Sequential File), 순차화일(Sequenced

File)b) 데이타 중복성

Page 5: 데이터베이스 요약

(1) 한 시스템 내에 같은 내용의 데이타가 여러 화일에 중복 저장되어 관리됨(2) 공동 접근 루틴(3) 문제점

(a) 일관성(b) 보안성(c) 경제성(d) 무결성

(4) 화일 관리 시스템

(a)(b) 기존 데이터와 응용 프로그램간의 1:1 관계를 개선

C. DBMS란?1. 응용프로그램과 데이타 사이의 중재자로서 모든 응용 프로그램(사용자)들이 데이터베이스를 공용할 수 있게 해주는 범용 소프트웨어 시스템

2. 물리적 측면을 고려하지 않아도 되게 개선

3.4. 장점

a) 데이타 중복의 최소화b) 데이타의 공용c) 데이타의 일관성 유지

Page 6: 데이터베이스 요약

(1) 실세계와 DB간의 일치성, 저장된 여러 데이터 간의 일치성d) 데이터 무결성 유지

(1) 결함이 없음( -1 학년인 학생이 존재하지 않게 관리함)e) 데이타 보안 보장f) 표준화g) 전체 데이타 요구의 조정

5. 단점a) 운영비의 증대b) 특정 응용 프로그램의 복잡화c) 복잡한 Backup과 Recoveryd) 시스템 취약성

6. 궁극적 목적은 데이타 독립성a) 사상(Mapping)b) 응용 프로그램과 논리적 데이타 구조에 영향을 주지 않고 물리적 데이타 구조의 변경이 가능

c) 저장 구조 및 접근 방법의 효율적 개발이 가능

X. DBMS의 필수기능A.정의 기능

1. 하나의 저장 구조로 여러 사용자의 요구를 지원할 수 있도록 데이터를 조직 하는 기능

2. 정의기능의 요건a) 데이타의 논리적 구조를 명세b) 데이타의 물리적 구조를 명세c) 물리적/논리적 사상(Mapping)을 명세

B.조작 기능1. 사용자와 데이타베이스 간의 Interface를 위해2. 체계적 데이타베이스 접근 및 조작

a) 검색(retrive)b) 갱신(update)c) 삽입(insert)d) 삭제(delete)

3. 데이타 언어로 표현a) 사용하기가 쉽고 자여스러운 언어b) 명확하고 완전: 원하는 연산의 완전한 명세 가능c) 효율적인 처리 : 언어의 관점 VS DBMS의 관점d) UPDATE student SET year=2 WHERE sno=300;e) INSERT INTO student VALUES (600,‘박상철’,1,‘컴퓨터’);f) DELETE FROM 테이블 [WHERE] 조건

Page 7: 데이터베이스 요약

C.제어 기능1. 데이터의 정확성과 보안성을 유지하는 기능2. 제어 기능의 요건

a) 갱신, 삽입, 삭제의 정확한 처리(1) 무결성 유지

b) 권한 검사, 보안 유지c) 트랜잭션 관리

(1) 여러 사용자의 동시 접근 : 병행수행 제어(2) 복구(3) 트랜잭션 : 원자성을 갖는 논리적 작업 단위

(a) 분리될 수 없는 연산 그룹(b) 예: 은행 송금

i) Fund Transfer(c) 원자성

i) 전부 또는 전무(d) 일관성

i) 트랜잭션 실행 후에도 일관성 유지(e) 격리성

i) 트랜잭션 실행 중 연산의 중간 결과에 다른 트랜잭션이 접근할 수 없음(f) 영속성

i) 트랜잭션이 일단 성공적으로 실행되면 그 결과는 영속적

XI. 스키마A. DB 의 구조와 제약조건에 대한 명세B.구성 요소

1. 개체2. 속성 : 개체의 특성3. 관계 : 개체 간에 존재하는 관계4. 제약조건

C.예1. 학생, 과목, 등록

D. 3단계 데이터 베이스 구조1. View

a) 외부 단계b) 개념 단계c) 내부 단계

2. 3-Level Schemaa) 3-Level DB구조에 기반

(1) 외부 스키마(a) VIEW(b) logical(c) 개개 사용자 관점에서 정의한 DB 스키마(d) 전체 DB 의 한 논리적인 부분(e) Subschema

Page 8: 데이터베이스 요약

(2) 개념 스키마(a) logical(b) 범 기관적인 관점에서 정의한 DB스키마(c) 모든 응용에 대한 전체적인 통합된 데이타 구조(d) Schema

(3) 내부 스키마(a) Physical(b) 저장장치 관점에서의 정의한 DB 스키마(c) 개념 스키마에 대한 저장구조를 정의(d) 레코드 형식, 인덱스 유무, 데이터 항목의 표현 방법, 레코드 순서

(4) 물리적 단계(a) 물리적 레코드, 블록, 페이지, 트랙, 실런더

b)E. 3단계 간의 사상(Mapping)

1. external/conceptual 단계 간의 사상a) 외부 스키마와 개념 스키마간의 대응 관계 정의b) 응용 인터페이스c) 개념 스키마의 변경 시 사상도 변경(응용 인터페이스)d) 논리적 데이타 독립성을 제공

2. conceptual/internal 단계 간의 사상a) 개념 스키마와 내부 스키마간의 대응 관계를 정의b) 저장 인터페이스c) 내부 스키마의 변경 시 사상(저장 인터페이스 Storage Interface)도 변경

d) 물리적 데이타 독립성 제공3. 구체적 데이타 독립성의 구현 방법, 스키마는 컴파일되어 카탈로그(Catalog) 즉, 데이타 사전Data Dictionary에 저장

Page 9: 데이터베이스 요약

4.

5.XII. DBMS의 구성요소

A. DBMS는 Database를 관리하고 사용자가 요구하는 모든 연산을 수행

1. 사용자의 접근 요구(Access request)를 접수/분석2. 시스템이 이해할 수 있는 형태로 사용자 요구를 변환

(transform)3. 외부/개념/내부/저장 구조간의 사상(Mapping)을 수행하여 저장 데이터를 접근

Page 10: 데이터베이스 요약

B.질의어 처리기(query processor)1. 일반 사용자의 질의어 : SQL2. 질의문을 Parsing, analysis, compile하여 DB를 접근하기 위한 Object Code를 생성

3. 런타임 데이타베이스 처리기로 보내 실행C. DML 예비 컴파일러

1. SQL만 추출해서 컴파일링2. 호스트 프로그래밍 언어로 작성된 응용 프로그램에 삽입된

DML을 추출하고 그 자리에 함수 호출문(Call Statement)을 삽입

3. 추출된 DML은 DML 컴파일러로 전달4. 수정된 응용 프로그램은 호스트 프로그램 언어의 컴파일러로 전달

D. DML 컴파일러E. DDL 컴파일러

1. DDL 처리기2. DDL로 명세된 스키마 정의를 내부 형태로 변환하여 카탈로그에 저장

3. 메타데이타 : 데이타의 데이터F. 런타임 데이타베이스 처리기

1. 실행 시간에 데이타베이스 접근 관리2. 검색, 갱신 등 DB연산을 저장 데이타 관리자를 통해서 수행

G.트랜잭션 관리자1. DB 접근 과정에서 무결성과 권한 제어2. 병행 제어Concurrency Control와 회복 작업3. 트랜잭션 단위로 작업을 수행

H.저장 데이타 관리자1. 디스크에 있는 사용자 DB나 카탈로그 접근을 제어

a) File Manager를 통해 화일의 페이지 결정b) Disk Manager가 디스크와 메모리 버퍼 간 데이타 전송을 수행c) 메모리 버퍼 내에서는 Buffer Manager가 관리

2. 기본 OS Module(File Manager, Disk Manager)에 해당I. 카탈로그

1. 시스템 내의 모든 객체들에 대한 정의나 명세에 대한 정보를 수록

Page 11: 데이터베이스 요약

2. 시스템 DB, 메타 데이타베이스J. 데이타 디렉토리

1. DB에 저장된 데이타를 참조(reference)하는데 필요한 정보를 수록

2. 시스템만 사용K.메타데이타

1. 테이블이 몇 개인지, 컬럼의 이름은 무엇인가 등L. ISQL ToolM.DB 응용 프로그래밍 환경

1. 호스트 프로그래밍 언어 : C, C++, JAVA2. 데이터 언어: SQL

XIII.데이타 언어A.데이타베이스를 정의, 조작, 제어하기 위한 시스템과의 통신 수단

B.데이타 정의어1. DDL: Data Definition Language2. 데이타베이스 구조를 정의하고 변경하는 데 사용3. 스키마를 DBMS가 이해하도록 기술4. 데이타 정의의 내용

a) 논리적 데이타 구조의 정의(1) 스키마, 외부 스키마 명세

b) 물리적 데이타 구조의 정의(1) 내부 스키마 명세(2) 데이타 저장 정의어(DSDL)

c) 논리적 데이타 구조와 물리적 데이타 구조 간의 사상을 정의C.데이타 조작어

1. DML : Data Manipulation Language2. 사용자(응용 프로그램)와 DBMS 사이의 통신 수단3. 데이타 처리 연산의 집합(데이타의 검색, 삽입, 삭제, 변경 연산)

4. 절차적 DMLa) 저급 데이타 언어b) What 과 How를 함께 명세c) 한번에 하나의 레코드만 처리d) 응용 프로그램 속에 삽입되어 사용e) DML 예비 컴파일러에 의해 처리

Page 12: 데이터베이스 요약

5. 비절차적 DMLa) 고급 데이타 언어b) What만 명세하고 How 는 시스템에 Delegate.

(1) 선언적 언어c) 한번에 여러 개의 레코드를 처리(set of records at a time)d) 질의어(Query Language)

(1) 독자적이고 대화식(2) 명령어 형태

6. 데이터 부속어a) host program 속에 삽입되어 사용되는 DMLb) 비절차적 또는 절차적 DML

7. 데이타 언어의 완전성a) 사용자가 원하는 어떤 객체도 추출할 수 있고, 관계도 표현할 수 있는 능력

8. SQL: 비절차적 질의어D.데이타 제어어

1. DCL: Data Control Language2. 공용 데이타베이스 관리를 위해 데이타 제어를 정의하고 기술

3. 데이타 제어 내용a) 데이타 보안Securityb) 데이타 무결성Integrity

(1) cf: Integrity Constraintc) 데이타 회복Recoveryd) 병행수행Concurrency

4. DB관리 목적으로 DBA가 사용XIV.사용자

A.데이터베이스를 이용하기 위해 접근하는 사람B.일반 사용자

1. 비절차적 DML을 통해서 데이타베이스를 접근2. 데이타 Insert, Delete, Update, Retrive3. Menu, forms, Graphics4. ISQL TOOL

C.응용 프로그래머1. 응용 프로그램(Host 언어+DML(DSL))을 통해서 DB를 접근2. Host 언어 : PL/I, COBOL, PASCAL, C, JAVA

a) 부언어 : SQL

Page 13: 데이터베이스 요약

D. DB관리자(DBA)1. DDL과 DCL을 통해 DB를 정의하고 제어하는 사람2. 시스템의 관리, 운영에 대한 모든 책임을 지는 사람3. DB 설계와 운영

a) DB 의 구성요소를 결정b) 스키마 정의c) 저장 구조와 접근 방법 결정d) 보안 정책 수립, 권한부여, 데이터 유효성 검사e) 백업, 회복 절차의 수립f) DB의 무결성 유지g) 성능 향상과 새로운 요구에 대한 DB의 재구성h) 시스템 CATALOG의 유지관리

4. 행정 및 불평 해결a) 데이타의 표현과 시스템 문서화에 표준 설정b) 사용자의 요구 및 불평 해결

5. 시스테의 감시 및 성능 분석a) 자원의 이용도, 병목현상, 장비 성능 등b) 시스템 성능의 감시c) 데이터 접근 방법/저장구조, 재구성 요인인 사용자 요구의 변화, 데이타 이용 추세, 각종 통계의 종합 분석

E. 최종 사용자 : 가장 많은 사용자1. 은행 단말의 직원 등2. 시스템, 전산, DB에 대한 지식과 역할에 따른 분류

XV.관계 데이타 모델A.수학에서의 릴레이션과 집합 이론에 기초B.일반 사용자는 테이블 형태로 생각

1. 열 = 필드, 아이템a) 관계 모델의 애트리뷰트

2. 행 = 레코드a) 관계 데이타 모델의 투플

3. 테이블 = 릴레이션4. 도메인

a) 애트리뷰트가 취할 수 있는 값 들의 집합b) 단순 도메인

(1) 단순 애트리뷰트 : 원자 값c) 복합 도메인

(1) 복합 애트리뷰트 : 복합 값

Page 14: 데이터베이스 요약

(a) 연, 월, 일 => 날짜<연, 월, 일>

5. 애트리뷰트의 이름과 도메인 이름은 같을 수도 있음a) 역할 이름을 도메인 이름으로 지정

6. EXa) 애트리뷰트 “학번”의 도메인 : 세자리 정수의 집합b) 애트리뷰트 “이름”의 도메인 : 열개의 문자로 된 문자열의 집합c) 도메인 : 테이블의 애트리뷰트에 나타날 수 있는 값을 제한d) 프로그래밍 언어의 데이터 타입과 변수 (Like int i)

C.

D.XVI.릴레이션 스키마

A.릴레이션 내포(relation intension) 또는 릴레이션 스킴1. 릴레이션 이름 + 애트리뷰트 이름

a) R(A1+a2+........) Ai <-> Di(1) ≡ R({A1, A2, ... , An})

2. 정적 성질a) 시간에 무관

Page 15: 데이터베이스 요약

(1) 시간에 따라 변경되지 않음b) 릴레이션 타입과 같은 의미

B.릴레이션 인스턴스1. 릴레이션 외연(Relation extension)이라고도 함2. 릴레이션 R의 인스턴스

a) 어느 한 시점에 릴레이션 R이 포함하고 있는 투플들의 집합b) {< V1, V2, ... , Vn >} Vi ∈ Dic) 릴레이션의 내용, 상태, Snapshot

3. 투플: {(attr1=V1, attr2=V2, ··· , attrn=Vn)}4. 동적 성질

a) 삽입, 삭제, 갱신으로 시간에 따라 변함b) 릴레이션 값(보통 릴레이션)

XVII.릴레이션 RA.수학적 정의

1. 릴레이션 R : 카테시안 프로덕트의 부분집합2. R ⊆ D1 × D2 × ... × Dn , 단 Di : i번째 도메인

a) 즉 n-투플, <d1, d2, ... , dn>의 집합b) di ∈ Di, i = 1,2, ... ,nc) n : R의 차수(degree :1차, 2차, 3차, ... , n차) d) 투플의 수 : 카디널리티(cardinality)

B.개념적 정의1. 릴레이션 스키마 + 릴레이션 인스턴스

2.

Page 16: 데이터베이스 요약

XVIII.카테시안 프로덕트

A.B.아래 예 : String 두 개를 Concatenate하는것 처럼 연산

1. 2-tuple * 3-tuple = > 5-tupleC.학생 릴레이션의 예

1.

Page 17: 데이터베이스 요약

2.D.릴레이션의 특성

1. 투플의 유일성a) 릴레이션 = 투플들의 “집합”

2. 투플의 무순서성a) 릴레이션: 추상적 개념 <- 투플들의 집합b) 테이블: 구체적 개념

3. 애트리뷰트의 무순서성a) 릴레이션 스키마 -> 애트리부트들의 집합b) 투플 : <attribute: value>쌍의 집합c) 원래 집합에는 “순서”의 개념이 없음.d) 애트리뷰트의 무순서성 : 필드에도 순서가 없음

4. 애트리뷰트의 원자성a) 애트리뷰트 값은 원자 값

(1) 논리적으로 분해 불가능(cf. 집합 값)b) 정규화 릴레이션

(1) 애트리뷰트 값으로 원자 값만 허용되는 릴레이션(2) 비정규화 릴레이션은 분해Decomposition를 통해 정규화(3) 동등한 의미를 유지

c) 널 값도 원자 값으로 취급(1) Unknown, Not applicable

d) 도메인(1) 단순도메인(2) 복합도메인 : 값을 하나의 단위로 취급

5. 릴레이션의 정규화a) 교차하는 지점에는 분해할 수 없는 값이 있어야 함.

(1) ex) 과목번호의 C324

Page 18: 데이터베이스 요약

(2)

XIX.관계 데이타베이스 개념A.관계 데이타베이스

1. 테이블들의 집합2. 데이타베이스를 시간에 따라 그 내용(상태)이 변할 수 있는 테이블 형태로 표현

B.관계 데이타베이스 스키마1. =릴레이션 스키마 + 무결성 제약조건

C.관계 데이타 모델 <-> 프로그래밍 시스템1. 릴레이션 <->화일2. 투플<->레코드(레코드 어커런스)3. 애트리뷰트<->필드(필드 타입)

D.관계 데이타베이스라고 할 때 데이타가 물리적 테이블 형태로 저장된다는 것을 의미하지는 않음

E. 데이타베이스 키1. 키

a) 각 투플을 유일하게 식별할 수 있는 애트리뷰트 집합b) 키를 구성하는 애트리뷰트 수, 합성키

2. 후보 키a) 릴레이션 R(A1, A2, ..., An)에 대한 애트리뷰트 집합,

K({Ai , Aj , ..., Ak})로서 다음 두 성질을 만족(1) 유일성

Page 19: 데이터베이스 요약

(a) 각 투플에 대해 K 의 값 <Vi....Vk>은 유일(2) 최소성

(a) K는 각 투플을 유일하게 식별하는데 필요한 애트리뷰트만 포함3. 슈퍼 키

a) 유일성은 만족하지만 최소성은 만족하지 않는 애트리뷰트의 집합

4. 기본 키(Primary Key)a) 후보키 중에서 지정된 하나의 키

(1) 데이타베이스 설계자가 지정b) 각 투플에 대한 기본 키 값은 항상 유효한 값이어야 함

(1) null값이 허용되지 않음c) 주 키

5. 대체 키(Alternative Key)a) 후보 키 중에서 기본 키를 제외한 나머지 후보 키

6. Quiz: Relation의 수학적 정의에 의하면 Primary key가 없는 Relation이 존재할 수 있는가?

a) 없다. 수학적 정의에 의해 존재해야 함.7. 외래 키(Foreign Key)

a) 릴레이션 R의 애트리뷰트 집합(=컬럼 여러개가 모여 외래키가 될 수 있음,NULL일 수 있음) FK가 릴레이션 S 의 기본키일 때 이 FK는 R 의 외래 키이다.

b) (FK의 도메인) = (S의 기본 키의 도메인)c) FK의 값은 S에 존재하는 값이거나 Nulld) R과 S가 같은 릴레이션일 수도 있음e) R을 참조 릴레이션, S를 피참조 릴레이션이라 함

(1) 릴레이션 R은 FK를 통해 릴레이션 S를 참조f) 릴레이션 R1은 릴레이션 R2의 기본키를 속성(들)으로 포함할 수 있다. R1은 그러한 속성(들)을 외래키라 부른다.

(1) R1 = 참조하는 릴레이션(2) R2 = 참조된 릴레이션

g) 외래키에 나타난 값은 반드시 그것이 참조하는 기본키에 존재해야 한다

(1) 그 반대는 성립할 필요 없음.h) 같은 릴레이션에 있는 키를 참조할 경우 외래키와 기본키의 이름은 달라야만 한다.

Page 20: 데이터베이스 요약

i) 외래키와 참조되는 기본키의 이름을 다르게 하는 것이 실세계에 대한 보다 적절한 표현일 경우가 있다.

j) 외래키는 기본키를 참조해야 한다.

k)(1) 기본키(2) 교수 : ID(3) 학생 : 학번(4) 과목 : 학수번호(5) 도서 : ISBN(6) 수강 : 학번+학수번호(7) 선수과목 : 선수과목학수번호+후수과목학수번호(8)(9) 외래키(10)학생 : 지도교수ID(11)과목 : 담당교수ID, ISBN(12)도서 : 참고도서ISBN(13)수강 : 학번,학수번호(14)선수과목 : 선수과목학수번호, 후수과목학수번호(15)(16)주민번호 : 고유 식별성은 있지만, 이미 수강 테이블에서 학번을 외래키로 참조하고 있으므로 학번을 기본키로 사용하는 것이 타당함

F. 무결성 제약1. 개체 무결성 제약

a) 기본 키 값은 언제 어느 때고 NULL값을 가질 수 없다.(1) Null 값 :

(a) 정보 부재를 명시적으로 표현하는 특수한 데이타 값i) 알려지지 않은 값 : Unknownii) 해당 없음 : Not Applicable

2. 참조 무결성 제약a) 외래 키 값은 반드시 피참조 릴레이션의 기본 키 값이거나

NULL이다.

Page 21: 데이터베이스 요약

3. 이상의 두 무결성 제약조건은 관계 데이타베이스 상태가 항상 만족시켜야 될 제약조건임

4. 데이타베이스 상태a) 어느 한 시점에 데이타베이스에 저장되어 있는 모든 데이타 값

(투플)b) 데이타베이스 인스턴스

(1) 데이타베이스 스키마에 포함되어 있는 모든 릴레이션들의 인스턴스 집합

c) 데이타베이스 상태의 계속적인 변화(1) 삽입, 삭제, 변경 연산

d) DBMS는 데이타베이스 상태의 변화에도 항상 무결성 제약을 만족시키도록 해야 함.

(1) 모든 명령은 무결성 제약을 위반하는 쪽으로 수행될 수 없음.DBMS는 항상 무결성을 지킬 수 있도록 보장해 줌.