• 검색 결과가 없습니다.

관계 데이터 모델과 관계 데이터베이스 제약 조건

N/A
N/A
Protected

Academic year: 2021

Share "관계 데이터 모델과 관계 데이터베이스 제약 조건"

Copied!
37
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

데이터베이스 (Databases)

관계 데이터 모델과

관계 데이터베이스 제약 조건

문양세

강원대학교 IT 대학 컴퓨터공학과

(2)

Database by Yang-Sae Moon Page 2

강의 내용

. 관계 모델의 개념

관계 모델 제약조건과 관계형 데이터베이스 스키마 갱신 연산과 제약 조건의 위반 처리

관계 데이터 모델

(3)

관계 데이터 모델 & 관계 데이터베이스

1970 년 IBM 연구소의

Ted Codd

가 처음 소개 대표적 관계 DMBS

IBM 의 DB2

Informix 의 Dynamic Server

Oracle 의 Oracle, Rdb

Microsoft 의 SQL Server, Access

Legacy 시스템

새롭게 구축되는 시스템과 구별하여 이전부터 사용되어 온 시스템을 지칭하는 용어

관계 데이터 모델

(4)

Database by Yang-Sae Moon Page 4

관계 모델의 개념 (1/3)

관계 데이터 모델

테이블  릴레이션 행  투플

열  애트리뷰트

(5)

관계 모델의 개념 (2/3)

관계모델 용어

행 → 투플

열 → 애트리뷰트

테이블 → 릴레이션

관계모델의 구성

관계모델에서 데이터베이스는 릴레이션 ( 테이블 ) 들의 모임으로 표현됨

릴레이션은 투플 ( 행 , 레코드 ) 들의 집합으로 표현됨

투플은 애트리뷰트 ( 컬럼 , 필드 , 혹은 속성 ) 들로 구성됨

ER 모델과의 비교 ( 일반적으로 ER 모델링 이후에 관계 모델로 변환 )

테이블 : 엔티티 타입 ( 혹은 다치 애트리뷰트 또는 관계 타입 )

행 : 엔티티 혹은 관계에 해당하는 사실 ( 인스턴스 ) 을 표현함

관계 데이터 모델

(6)

Database by Yang-Sae Moon Page 6

관계 모델의 개념 (3/3)

관계 데이터 모델

(7)

관계 모델의 용어 (1/3)

도메인 (domain)

( 애트리뷰트가 가질 수 있는 ) 원자값 (atomic value) 들의 집합

도메인의 예

USA_phone_numbers: 미국에서 사용하는 10 자리 전화번호들의 집합

Names: 개인의 이름들의 집합

Employee_ages: 15~80 사이의 사원들의 나이

각 도메인을 위해 데이터 타입 또는 포맷을 명시하기도 함

( 예 : USA_phone_numbers 도메인을 위한 데이터 타입은 (ddd)ddd-dddd 로 명시 )

데이터 타입

도메인은 실제 데이터 타입으로 명시함

데이터 타입의 예 : string, integer, real

포맷이나 범위를 명시하는 예 :

USA_phone_numbers: (ddd) ddd-dddd, 여기서 d 는 한 자리 숫자

Employee_ages: 15 와 80 사이의 정수

관계 데이터 모델

(8)

Database by Yang-Sae Moon Page 8

관계 모델의 용어 (2/3)

릴레이션 스키마 (relation schema)

릴레이션 이름 R 과 애트리뷰트 Ai 들의 집합으로 R(A1, A2, ..., An) 로 표기함

릴레이션의 차수 (degree): 릴레이션의 애트리뷰트 갯수

예 : STUDENT(Name, SSN, BirthDate, Address) 릴레이션의 차수 = 4

도메인의 표현 : dom(Ai) = integer, dom(Name) = Names

릴레이션 스키마 R(A1, A2, ..., An) 의 투플 t

 n-

투플

(n 개의 애트리뷰트로 구성된 투플 ) 이라 부름

n- 투플 t: 값들의 ( 순서화된 ) 집합 t = <v1, v2, ..., vn>, 값 vi 는 dom(Ai) 의 한 원 소임

관계 데이터 모델

(9)

관계 모델의 용어 (3/3)

릴레이션 스키마 R 에 대한 릴레이션 혹은 릴레이션 인스턴스 (relation instance) r 또는 r(R)

투플의 집합 : r = r(R) = {t1, t2, ..., tm}

r(R) 은 R 을 정의하는 m 개의 도메인들에 대한 카티션 프로덕트의 부분집합

r(R) ⊆ dom(A1)×dom(A2) × ... × dom(An)

최대 가능 투플수 : |dom(A1)| × |dom(A2)| × ... × |dom(An)|

r(R) 은 실세계의 특정 상태를 반영

관계 데이터 모델

(10)

Database by Yang-Sae Moon Page 10

실제 예를 통한 관계 모델의 용어

관계 데이터 모델

(11)

릴레이션의 특성들 (1/4)

릴레이션에서 투플의 순서

릴레이션은 투플들의 집합으로 정의됨

집합에서 원소의 순서가 무의미한 것과 마찬가지로 투플의 순서 역시 의미가 없음

관계 데이터 모델

Basic Property of Sets (from Discrete Mathematics)

Sets are inherently unordered: (

순서가 중요치 않다 !)

 No matter what objects a, b, and c denote,

{a, b, c} = {a, c, b} = {b, a, c} = {b, c, a} = {c, a, b} = {c, b, a}.

All elements are distinct (unequal); multiple listings make no difference!

( 중복은 의미가 없다 !)

 If a=b, then {a, b, c} = {a, c} = {b, c} = {a, a, b, a, b, c, c, c, c}.

 This set contains at most two elements!

(12)

Database by Yang-Sae Moon Page 12

릴레이션의 특성들 (2/4)

관계 데이터 모델

투플의 순서 상이 → 동일한 릴레이션

(13)

릴레이션의 특성들 (3/4)

투플 내에서 값들의 순서와 릴레이션의 또 다른 정의

n- 투플은 n 개 값의 순서 리스트 (ordered list) 이며 , 한 투플 내에서 값들의 순서는 중 요함

( 리스트에서 원소의 순서는 중요한 의미를 가짐 ) → 앞으로 이 정의를 이용

반면에 , 각 애트리뷰트와 값이 서로 대응될 수 있다면 애트리뷰트 값들의 순서는 중요하 지 않을 수 있음

 하나의 투플을 (< 애트리뷰트 >, < 값 >) 쌍들의 집합으로 간주하면 애트리뷰트와 값 은 서로 대응될 수 있으며 , 값의 순서는 중요하지 않음 → 보다 일반적인 투플의 정의

관계 데이터 모델

(14)

Database by Yang-Sae Moon Page 14

릴레이션의 특성들 (4/4)

투플 내에서의 값들과 널

투플 내의 각 값은 더 이상 나눌 수 없는 원자값 (atomic value) 들임

ER 모델에서의 다치 애트리뷰트나 복합 애트리뷰트는 관계모델에서는 허용되지 않음

 다치 애트리뷰트나 복합 애트리뷰트는 별도의 릴레이션으로 표현되어야 함

값을 알 수 없거나 해당되는 값이 없을 때에는 null 이라는 특수 값을 사용함

릴레이션의 해석 ( 의미 )

릴레이션 스키마는 일종의 선언 (declaration) 또는 주장 (assertion) 으로 해석할 수 있 음 :

STUDENT 스키마는 일반적으로 학생 개체가 Name, SSN, Home-Phone, Address, ... 을 갖는다고 선언

릴레이션내 각 투플은 선언 / 주장에 대한 사실 또는 인스턴스로 해석할

수 있음 : 다음 투플은 이름이 “ Benjamin Bayer”, SSN 이 “ 305-61-2435”

등등의 사실을 나타냄

관계 데이터 모델

(15)

관계 모델의 표기법 (1/2)

차수가 n 인 릴레이션 스키마 R 은

R(A1, A2, ..., An)

으로 표기

릴레이션 r(R) 의 n- 투플 t

t = <v1, v2, ..., vn>

으로 표기 , 여기서 v

i

는 애트리뷰트 A

i

의 값

t[Ai] 와 t.Ai 는 t 에서 애트리뷰트 Ai의 값 vi를 나타냄 , 투플 t 의 구성 요소 값 (component value) 을 t[Ai] = vi ( 투플 t 에 대한 애트리뷰트 Ai의 값 ) 로 표기

t[Au, Av, ..., Aw] 는 애트리뷰트 Au, Av, ..., Aw 의 값을 포함하는 부 (sub)- 투플을 가리킴

대문자 Q, R, S 등은 릴레이션 스키마를 나타냄

소문자 q, r, s 등은 (Q, R, S 등에 대응하는 ) 릴레이션 상태를 나타냄 소문자 t, u, v 등은 투플을 나타냄

관계 데이터 모델

(16)

Database by Yang-Sae Moon Page 16

관계 모델의 표기법 (2/2)

일반적으로 , STUDENT 처럼 릴레이션 스키마의 이름은 릴레이션의 현재 투플들 의 집합 , 즉 현재의 릴레이션 상태를 가리키고 , 반면에 STUDENT(Name, SSN, ...) 는 릴레이션 스키마를 가리킴

서로 다른 릴레이션에서 동일한 이름의 애트리뷰트를 사용할 수 있으며 , 이 경우 애트리뷰트 이름 앞에 릴레이션 이름을 붙여서 서로를 구분함

STUDENT.Name, Faculty.Name, Employee.Name

관계 데이터 모델

(17)

강의 내용

. 관계 모델의 개념

관계 모델 제약조건과 관계형 데이터베이스 스키마 갱신 연산과 제약 조건의 위반 처리

관계 데이터 모델

(18)

Database by Yang-Sae Moon Page 18

관계 모델 제약 조건 (constraint)

제약조건은 모든 릴레이션 인스턴스들이 만족해야 하는 조건임

스키마 기반 제약조건 : 데이터 모델 스키마에서 DDL 을 통해 직접 표현 가능한 조건

(1) 도메인 제약 조건 (domain constraints) (2) 키 제약조건 (key constraints)

(3) 널에 대한 제약조건 (constraints on nulls)

(4) 엔티티 무결성 제약조건 (entity integrity constraints) (5) 참조 무결성 제약조건 (referential integrity constraints)

관계 데이터 모델

(19)

도메인 제약 조건

도메인 제약조건 - ①

각 애트리뷰트 A 의 값은 반드시 A 의 도메인 dom(A) 에 속하는 원자값이어야 함

도메인과 관련된 데이터 타입

정수 , 실수와 같은 표준 숫자형

문자 , 고정길이 문자열 , 가변길이 문자열

날짜 , 시간

타임스탬프

화폐단위 등

관계 데이터 모델

(20)

Database by Yang-Sae Moon Page 20

키 제약조건 (1/3)

키 제약조건 - ②

릴레이션은 투플의 집합으로 정의되므로 , 모든 원소는 중복되어서는 안됨

어떤 두 투플도 릴레이션의 모든 애트리뷰트에 대해 같은 값들의 조합을 가질 수 없음

R 의 슈퍼키 (superkey)

R의 애트리뷰트 집합 SK 로서 다음의 성질을 만족해야 함

모든 유효한 릴레이션 인스턴스 r(R) 에서 어떠한 두 투플도 동일한 SK 값을 갖지 않아 야 함  즉 , r(R) 내의 임의의 서로 다른 두 투플 t1 과 t2 에 대해 t1[SK] ≠ t2[SK] 이어 야 함

R 의 키 (key)

“ 최소” 슈퍼키  즉 , 슈퍼키들 중에서 슈퍼키 K 를 구성하는 어느 한 애트리뷰트라도 빠지면 슈퍼키가 될 수 없는 슈퍼키 K 를 의미함

키 애트리뷰트의 값은 릴레이션내 각 투플을 유일하게 식별하는데 이용할 수 있음

관계 데이터 모델

(21)

키 제약조건 (2/3)

관계 데이터 모델

슈퍼키 슈퍼키

슈퍼키최소

(22)

Database by Yang-Sae Moon Page 22

키 제약조건 (3/3)

기본키 (primary key)

일반적으로 릴레이션은 여러 키를 가질 수 있는데 , 이들을 후보키 (candidate key) 라 함

릴레이션이 여러 후보키를 가지면 이중 하나를 임의로 선택하여 기본키로 지정함

기본키를 구성하는 애트리뷰트는 밑줄로 표시함

( 기본키에 대해서는 물리적 인덱스 등을 구성하여 , 접근 속도를 향상시킴 )

관계 데이터 모델

후보키 후보키&

기본키

(23)

널에 대한 제약조건

널에 대한 제약조건 - ③

애트리뷰트 값으로 널을 허용하지 않는 경우 , 애트리뷰트는 널을 가질 수 없음

예 : DEPARTMENT 테이블의 Name 필드는 NOT NULL 로 제한함

관계 데이터 모델

CREATE TABLE DEPARTMENT

( DNAME VARCHAR(15) NOT NULL, DNUMBER INT NOT NULL,

MGRSSN CHAR(9) NOT NULL, MGRSTARTDATE DATE,

PRIMARY KEY (DNUMBER), UNIQUE (DNAME),

FOREIGN KEY (MGRSSN) REFERENCE EMPLOYEE (SSN)) ;

(24)

Database by Yang-Sae Moon Page 24

관계 데이터베이스와 스키마 (1/3)

관계 데이터베이스 스키마 = S + IC (Schema + Integrity Constraint)

데이터베이스에 속하는 릴레이션 스키마들의 집합 S 와 무결성 제약조건 IC(Integrity Constraint) 의 집합으로 정의됨

S = {R1, R2, ..., Rn} + IC

데이터베이스 스키마 S 의 관계 데이터베이스 상태 ( 혹은 인스턴스 )

릴레이션 상태 집합 DB 를 데이터베이스 상태라고 정의함

DB = {r1, r2, ..., rn} 여기서 ri는 IC 를 만족함

데이터 정의어

관계 스키마를 정의하기 위한 언어 : DDL(Data Definition Language)

관계 데이터 모델

(25)

관계 데이터베이스와 스키마 (2/3)

Company = {Employee, Department, Dept_locations, Projects, Works_On, Dependent}

관계 데이터 모델

릴레이션 스키마 관계 데이터베이스 스키마

(26)

Database by Yang-Sae Moon Page 26

관계 데이터베이스와 스키마 (3/3)

COMPANY 관계 데이터베이스 스키마에 대응하는 관계 데이터베이스 상태

관계 데이터 모델

참조무결성제약조건

PK

FK

릴레이션 상태

(27)

무결성 제약조건이 뭐야 ?

관계 데이터베이스 스키마 = S(Schema) + IC(Integrity Constraint) 라는 데 ,

도대체 무결성 제약조건이 뭐야 ?

관계 데이터 모델

앞서의 세 가지 제약조건 +

엔티티 무결성 제약조건 +

참조 무결성 제약조건

(28)

Database by Yang-Sae Moon Page 28

엔티티 무결성 제약조건

엔티티 무결성 제약 조건 - ④

기본키가 각 투플들을 식별하는 데 이용되기 때문에 어떠한 기본 키 값도 널 값을 가질 수 없다는 제약 조건임 , 기본키 → 릴레이션의 속성을 정의할 때 not null 임을 명시

기본키에 속하지 않는 애트리뷰트들도 null 값을 가질 수 없도록 제한할 수는 있음

관계 데이터 모델

CREATE TABLE DEPARTMENT

( DNAME VARCHAR(15) NOT NULL, DNUMBER INT NOT NULL,

MGRSSN CHAR(9) NOT NULL, MGRSTARTDATE DATE,

PRIMARY KEY (DNUMBER), UNIQUE (DNAME),

FOREIGN KEY (MGRSSN) REFERENCE EMPLOYEE (SSN)) ;

(29)

참조 무결성 제약조건 (1/2)

참조 무결성 제약 조건 - ⑤

한 릴레이션에 있는 투플이 다른 릴레이션에 있는 투플을 참조하려면 반드시 참조되는 투플이 그 릴레이션 내에 존재해야 함

하나의 릴레이션 R 에서 속성 F 의 값으로 다른 릴레이션 S 의 기본키 P 값을 참조하는 경우에 R과 S 는 참조 무결성 제약 조건을 가진다고 함 (F 는 null 을 가질 수 있음 )

t1[F] = t2[P] 이면 R 의 투플 t1 이 S 의 투플 t2 를 참조 (reference) 한다고 하며 , F 를 외래키 (foreign key) 라고 부름

 R 을 참조한 (referencing) 릴레이션 , S 를 참조된 (referenced) 릴레이션이라고 부 름

다른 제약조건과 달리 참조 무결성은 두 릴레이션에 대한 제약조건임

관계 데이터 모델

(30)

Database by Yang-Sae Moon Page 30

엔티티 무결성과 참조 무결성 제약조건 (2/2)

관계 데이터 모델

관계형 데이터베이스 스키마에서

참조 무결성 제약조건은 R1.FK 에서 R2.PK로의 화살표로 표시함

외래키는 동일한 릴레이션의 애트리뷰트를 참조할 수도 있음

두 릴레이션의 JOIN 시 이용

(31)

강의 내용

. 관계 모델의 개념

관계 모델 제약조건과 관계형 데이터베이스 스키마 갱신 연산과 제약 조건의 위반 처리

관계 데이터 모델

(32)

Database by Yang-Sae Moon Page 32

관계 모델의 갱신 연산

관계모델의 연산의 종류

추출 (retrieval) – Read

갱신 (update) - Write

릴레이션에 대한 기본 갱신 연산

삽입 : 새로운 투플의 삽입

삭제 : 기존 투플의 삭제

수정 : 기존 투플의 애트리뷰트 값의 변경

갱신 ( 삽입 , 삭제 , 수정 ) 연산을 실행하는 경우 스키마에 정의된 ( 무결성 ) 제약 조건 을

위반하지 않아야 함

관계 데이터 모델

(33)

삽입 연산

삽입 연산

네 가지 종류의 제약 조건을 위반할 수 있음

도메인 제약조건 : 삽입되는 투플 t 에서 애트리뷰트의 값이 도메인에 없는 경우

키 제약 조건 : t 에서 기본키의 값이 다른 투플에서 이미 존재하는 경우

엔티티 제약 조건 : t 에서 기본키의 값이 널인 경우

참조 무결성 제약 조건 : t 에서 외래키의 값이 참조되는 릴레이션의 기본키 값으로 존재하지 않는 경우

널에 대한 제약 조건  엔티티 제약 조건에 포함된다고 볼 수 있음

제약 조건을 위반하면 그 삽입을 거부하거나 , 그 위반 사실을 사용자에 게 알려 정정하도록 해야 함

관계 데이터 모델

(34)

Database by Yang-Sae Moon Page 34

관계 데이터베이스와 스키마 – 참고

COMPANY 관계 데이터베이스 스키마에 대응하는 관계 데이터베이스 상태

관계 데이터 모델

참조무결성제약조건

PK

FK

릴레이션 상태

(35)

삭제 연산

삭제 연산

참조 ( 무결성 ) 제약 조건 : 삭제하려는 투플을 다른 투플에서 참조하고 있는 경우

참조 ( 무결성 ) 제약 조건의 유지 : 투플이 삭제되는 경우 다른 투플에서 참조하고 있는 지 검사하여 그렇지 않는 경우에만 삭제함

삭제 연산이 참조 무결성 제약 조건을 위반하는 경우 취할 수 있는 세 가지 옵션

삭제를 거부

삭제되는 투플을 참조하는 투플들까지 모두 삭제 ( 연쇄 삭제 )

삭제되는 투플을 참조하는 투플에서 외래키 값을 널로 바꾸거나 다른 유효한 투플을 참조하도록 변경

위의 세 가지 옵션 중 사용자가 응용의 특성에 적합한 것을 선택하도록

관계 데이터 모델

(36)

Database by Yang-Sae Moon Page 36

수정 연산

수정 연산

수정 연산은 기본적으로 “삭제 후 삽입” 연산으로 간주할 수 있으므로 삽입과 삭제시의 문 제점이 모두 나타남

기본 키나 외래키가 아닌 애트리뷰트 값의 변경은 큰 문제가 없음

→ 도메인 제약조건의 위반 여부만을 확인하면 됨

관계 데이터 모델

(37)

요약

관계 모델의 개념

용어 정의 ( 릴레이션 , 투플 , 애트리뷰트 등 )

관계 제약조건과 관계형 데이타베이스 스키마

도메인 제약 조건 , 키 제약조건 , 엔티티 무결성 제약조건 , 참조 무결성 제약조건

스키마는 릴레이션의 집합과 ( 무결성 ) 제약 조건 집합으로 구성됨

갱신 연산과 제약조건의 위반 처리

릴레이션에 투플을 삽입하거나 삭제 변경할 때 제약조건을 만족하는지 검사

관계 데이터 모델

참조

관련 문서

• 임의의 자연수 x에 대해

} 릴레이션 스키마 (RELATION SCHEMA)와 릴레이션 인스턴스(REALTION INSTANCE)로 구성된 서로 다른 이름을 가진 릴레이션 (RELATION)들의 집합..

후보 키가 아닌 모든 속성들이 후보 키에 함수 종속된다. 모든

② 고구려어와 퉁구스어와의 관계 &gt; 신라어와 퉁구스어와의 관계 (고구려어는 퉁구스와 신라어 중간 정도 위치)... 학교문법에서는 이 견해를

• 객체관계형 데이터베이스 관리시스템 : 객체지향형 데이터베이스 관리시스템에 구조적 자료의 관계형 데이터베이스 관리시스템을

– 자연 조인에서는 조인 애트리뷰트들이 양쪽의 릴레이션에서 동일한 이름을 가져야 하며, 그렇지 않는 경우 조인 속성의 이름을 먼저 동일하게 변경해야 함.. –

보안에 대한 Microsoft의 포괄적인 접근 방식은 데이터 센터, 휴대폰, 데스크톱의 데이터 또는 인터넷을 통해 전송 중인 데이터를 포함하여 위치에

언어와 사고의 관계...