학습목표

27
소소소 Chapter 2. 관관 관관관 관관 소소소 : 소 소소 소소소소소소소 소소소소 소소 , 소소 , 소소 소소 소소소 . 소소소 소소소소소소소 소소소 소소소소 소소소소 소소소소 소소 소소소 소소소 소소 (entity) 소 소소 (relationship) 소소 소소소소 소소 소소소 소소 소소소소 소소소소 소소소 소소소소 소소소 소소 소소소 소소소소 소소소 소소소 소소 소 소소 소소 소소소소 소소소 소소소소 . 소 소소 소소 소소소 소소소 소소 소소소 소소소소 소소 소소소 소소소 소소소 소소 소소 소소소 소소 소소 소소 소소 소소소 소소 . 소소소소 소소소소

Upload: shad-gonzales

Post on 30-Dec-2015

52 views

Category:

Documents


1 download

DESCRIPTION

학습목표. 학습목표. - PowerPoint PPT Presentation

TRANSCRIPT

소단원 Chapter 2. 관계 데이터 모델 소단원 :

본 장은 데이터베이스를 구성하는 개체 , 속성 , 관계 등을 다룬다 .

특별히 데이터베이스의 구조를 테이블에 기초하여 조직하는 관계 데이터 모델은 개체 (entity) 와 관계 (relationship) 들이 테이블의 집합 형태로 되어 간단하고 이해하기 쉬우며 사용자는 개체들 간의 관계의 유형이나 관계의 방향성 등을 알 필요 없이 데이터에 접근이 용이하다 .

본 장은 관계 데이터 모델에 대해 자세히 소개하고 관계 데이터 모델을 다루기 위한 관계 대수의 여러 가지 연산 등을 다루고 있다 .

학습목표 학습목표

학습목표

소단원 Chapter 2. 관계 데이터 모델 소단원 :

개체 - 관계 데이터 모델 (entity- relationship data model)• 실존 개체

• 개체를 구성하는 속성

• 개체 들간의 관계

• 관계의 유형

• 연산

• 무결성 원칙

관계 데이터 모델 (relational data model)• 데이터베이스의 구조를 테이블에 기초

• 개체 (entity), 관계 (relationship) 모두를 테이블의 집합 형태로 표현

• 간단 , 이해하기 쉽다 .

• 관계의 유형 , 관계의 방향성에 무관하게 데이터에 접근이 용이하다 .

1. 데이터 모델 1. 데이터 모델

데이터 모델

표현방식에 따라

망 데이터 모델

계층 데이터 모델

관계 데이터 모델

소단원 Chapter 2. 관계 데이터 모델 소단원 :

1.1 개체 (entity) 1.1 개체 (entity)

• 실존하거나 의미 있는 정보 단위를 말함 .

• 하나의 개체 단위 별로 데이터베이스 내에서 관리됨 .

• 서로 관련 있는 속성 (attribute) 들로 이루어짐 .

• 개체 타입 (type) 과 개체 인스턴스 (instance) 로 구성됨 .

데이터 모델

아이디 패스워드 성명 나이 생일 주소

< ‘ 고객’ 개체 타입 (type) >

Wow W12345

이창수 37 1967-12-01 부산 남구 대연 3 동 115

Joyful20 J4545 김학수 44 1960-04-02 부산 영도구 봉래동 890

Tiger78 T8712 최민 24 1980-05-05 서울 강남구 보길동

rulru r6781 이정상 27 1977-09-15 전남 나주시 연희동 345< ‘ 고객’ 개체 인스턴스 (instance) 의 집합 >

속성들

소단원 Chapter 2. 관계 데이터 모델 소단원 :

1.2 관계 (relationship) 1.2 관계 (relationship)

• 개체와 개체 사이의 상관 관계

• 통합 저장된 데이터베이스의 특성 상 관계 또한 하나의 중요한 정보로 취급

아이디 성명 전화 주소Wow 이창수 123-4567 부산 남구 대연 3 동 115

Joyful20 김학수 123-5555 부산 영도구 봉래동 890

Tiger78 최민 888-8888 서울 강남구 보길동

rulru 이정상 431-4321 전남 나주시 연희동 345

상품코드 품명 가격P1 바지 55000

P2 점퍼 58000

P3 니트 53000

P4 셔츠 30000

< 고객 -> 개체 >

< 상품 -> 개체 >

아이디 상품코드Tiger78 P1

Wow P2

< 주문 -> 관계 >

데이터 모델

소단원 Chapter 2. 관계 데이터 모델 소단원 :

1.3 관계의 유형 1.3 관계의 유형

관계의 유형 종류• 일 대 일 (1 : 1) ex) 남편과 아내• 일 대 다 (1 : N) ex) 부모와 자녀들• 다 대 다 (N : M) ex) 학생과 교과목

남편 아내

1 : 1

부모자녀 1

1 : N

자녀 2자녀 n

과목 1

N : M

과목 2과목 n

학생 1학생 2학생 n

데이터 모델

E-R Diagram• 개체 , 속성 , 관계 등의 정보를 표현하는 시각적 도구

소단원 Chapter 2. 관계 데이터 모델 소단원 :

2. 관계 데이터 모델과 릴레이션2. 관계 데이터 모델과 릴레이션

• 릴레이션은 관계 데이터 모델에서 데이터 집합을 의미함 .

• 릴레이션은 테이블의 형태로 표현됨 .

• 테이블은 행 (row) 과 열 (column) 로 구성됨 .

< 용어 비교 >

• 릴레이션은 릴레이션 스키마 ( 구조 ) 와 릴레이션 인스턴스 (data set) 로

구성

• 도메인은 어트리뷰트가 가질 수 있는 값을 말함 .

릴레이션

구분 의미 용어

파일 시스템 행 레코드

열 필드

릴레이션 행 투플

열 어트리뷰트

2.1 릴레이션의 개념 2.1 릴레이션의 개념

소단원 Chapter 2. 관계 데이터 모델 소단원 :

<< 릴레이션에서 사용되는 용어 >>

릴레이션

소단원 Chapter 2. 관계 데이터 모델 소단원 : 릴레이션

2.2 릴레이션의 특성 2.2 릴레이션의 특성

릴레이션은 테이블과는 다른 특징이 있으며 집합의 개념으로 해석

• 릴레이션에 포함된 모든 투플은 유일하게 식별 가능하다 .

• 같은 릴레이션 내의 투플들의 순서는 의미가 없다 .

• 같은 릴레이션 내의 어트리뷰트의 순서는 의미가 없다 .

• 어트리뷰트의 값은 원자 값이다 .

소단원 Chapter 2. 관계 데이터 모델 소단원 : 릴레이션

2.3 릴레이션의 제약조건 2.3 릴레이션의 제약조건

• 도메인 제약 조건 : 릴레이션의 어트리뷰트는 지정된 도메인에 의한 값만을 가진다 .

• 개체 무결성 : 기본 키에 속하는 어트리뷰트는 널 (NULL) 값을 가질 수 없다 .

• 참조 무결성 : 릴레이션의 외래키는 참조 할 수 없는 값을 가질 수 없다 .

< 용어 >

• 기본키 : 릴레이션에서 투플들을 유일하게 식별할 수 있는 어트리뷰트 들 중에 선택된 하나 .

• 외래키 : 개체와 개체 사이를 연결해 주는 어트리뷰트

소단원 Chapter 2. 관계 데이터 모델 소단원 : 릴레이션

<< 기본 키 , 외래 키 , 후보 키 >>

아이디 성명 전화 주소Wow 이창수 123- **** 부산 남구 대연 3 동 115

Joyful20 이학수 458- **** 부산 영도구 봉래동 890

Tiger78 최민 888- **** 서울 강남구 보길동

rulru 이정상 431- **** 전남 나주시 연희동 345

상품코드 품명 가격P1 바지 55000

P2 점퍼 58000

P3 니트 55000

P4 셔츠 30000

< 고객 -> 개체 >

< 상품 -> 개체 >

아이디 상품코드Tiger78 P1

Wow P2

< 주문 -> 관계 >

기본키

외래키외래키

소단원 Chapter 2. 관계 데이터 모델 소단원 : 릴레이션

<< 제약조건 위배 사례 >>

아이디 성명 전화 주소Wow 이창수 (82)051-323- **** -23 부산 남구 대연 3 동 115

Joyful20 이학수 458- **** 부산 영도구 봉래동 890

Tiger78 최민 888- **** 서울 강남구 보길동

rulru 이정상 431- **** 전남 나주시 연희동 345

상품코드 품명 가격P1 바지 55000

점퍼 58000

P3 니트 55000

P4 셔츠 30000

< 도메인 제약 조건 위배 >

예 ) 전화는 char(15) 인데 가질 수 없는 값 ( 문자 15 자 이상 ) 이 입력됨 .

< 개체 무결성 제약조건 위배 >

예 ) 상품코드가 기본 키인데 null 임 .

아이디 상품코드Tiger78 P1

chili77 P2

< 참조 무결성 제약조건 위배 >

예 ) 아이디 chili77 는 고객 릴레이션에 없는 아이디이다 .

고객 릴레이션을 참조하는 외래키상품 릴레이션의 기본키

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3. 데이터 조작을 위한 관계 대수의 연산3. 데이터 조작을 위한 관계 대수의 연산

관계 대수의 연산

• 릴레이션을 조작하기 위한 연산은 관계대수와 관계해석이 있다 .

• 관계 대수 : 상용 DBMS 의 언어인 SQL 의 이론적인 기초

< 연산자 들의 종류와 기호 >

종류 연산자 기호 비고

순수관계연산

실렉트 (select) σ 기본연산

프로젝트 (project) ∏ 기본연산

조인 (join) ⋈ 복합연산

디비전 (division) ÷ 복합연산

집합연산

합집합 (union) ∪ 기본연산

교집합 (intersect) ∩ 복합연산

차집합 (difference) − 기본연산

카티션프로덕트 (cartesian product) x 기본연산

확장관계연산

세미조인 (semi join) ⋉ 복합연산

외부조인 (outer join) ⋈+ 복합연산

외부합집합 (outer union) ∪+ 기본연산

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.1 셀렉트 (SELECT)3.1 셀렉트 (SELECT)

관계 대수의 연산

• 하나의 릴레이션에 주어진 조건에 만족하는 투플들만 걸러내는 연산

• 결과 릴레이션은 입력 릴레이션과 어트리뷰트 수는 같으며 투플의 수는 같거나 적게 나옴 .

• 실습예제 : ‘ 고객’ 릴레이션에서 등급이 ‘ silver’ 인 고객을 찾아라 .

• 명령 : σ 등급 = ‘silver’( 고객 )

아이디 성명 전화 주소 등급Wow W1234

5이창수 부산 남구 대연 3 동 115 Silver

Joyful20 J4545 김학수 부산 영도구 봉래동 890 Gold

Tiger78 T8712 최민 서울 강남구 보길동 Gold

rulru r6781 이정상 전남 나주시 연희동 345 silver

아이디 성명 전화 주소 등급Wow W1234

5이창수 부산 남구 대연 3 동 115 Silver

rulru r6781 이정상 전남 나주시 연희동 345 silver

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.2 프로젝트 (PROJECT)3.2 프로젝트 (PROJECT)

관계 대수의 연산

• 하나의 릴레이션에 원하는 어트리뷰트들만 걸러내는 연산

• 결과 릴레이션은 입력 릴레이션과 어트리뷰트 수는 적고 투플의 수는 같다 .

• 실습예제 : ‘ 상품’ 릴레이션에서 종류와 가격을 나타내어라 .

• 명령 : ∏ 종류 , 가격 ( 상품 )상품코드 종류 색상 가격 업체코드

P1 바지 베이지 30000 COM01

P2 바지 불루 30000 COM01

P3 점퍼 그린 85000 COM02

P4 점퍼 불루 85000 COM02

종류 가격바지 30000

점퍼 85000

( 릴레이션의 특성 상 동일한 투플은 제거된다 . )

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.3 조인 (JOIN)3.3 조인 (JOIN)

관계 대수의 연산

• 두 개 이상의 릴레이션에서 원하는 투플들만 걸러내는 연산

• 두 릴레이션을 곱한 후 실렉트 한 것과 같다 .

• 조인의 종류 : 세타조인 , 외부조인 , 자연조인 , 동등조인 , 세미조인

조인 종류 연산자 의미동등조인 ⋈ ‘= ‘ 연산자와 같은 의미 , 조인에 사용된 모든

어트리뷰트를 결과에 포함

자연조인 ⋈N조인에 사용된 어트리뷰트 중 중복된 것은 결과에서 제거

외부조인 ⋈+ 조인에 사용되지 않은 어트리뷰트를 NULL 값을 사용해 결과에 포함 .기준 릴레이션이 왼 ( 오른 ) 쪽이면 LEFT(RIGHT) OUTER JOIN 이라고 함 .

세미조인 ⋉ 조인에 사용된 어트리뷰트만 결과에 포함

세타조인 =, >, >=, <, <=, <>

조인 조건에 관계연산자 사용한 것으로 특별히 ‘ =‘ 를 사용하면 동등조인이라 함

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.3 조인 (JOIN) - 동등조인3.3 조인 (JOIN) - 동등조인

관계 대수의 연산

• 실습예제 : ‘ 상품’ 릴레이션과 ‘납품업체’ 릴레이션을 동등 조인 하라 .

• 명령 : 상품 ⋈ 업체코드 = 업체코드 업체

상품코드 품명 가격 업체코드

P1 바지 30000 COM01

P2 점퍼 85000 COM01

P3 니트 55000 COM02

P4 셔츠 20000 COM02

업체코드 업체명 전화

COM01 ㈜ 협성실업 123-1222

COM02 에드원상사 567-5543

COM03 ㈜삼성물산 345-5454

상품코드 품명 가격 업체코드 업체코드 업체명 전화

P1 바지 30000

COM01 COM01 ㈜ 협성실업 123-1222

P2 점퍼 85000

COM01 COM01 ㈜ 협성실업 123-1222

P3 니트 55000

COM02 COM02 에드원상사 567-5543

P4 셔츠 20000

COM02 COM02 에드원상사 567-5543

< 동등 조인 결과 >

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.3 조인 (JOIN)- 자연조인3.3 조인 (JOIN)- 자연조인

관계 대수의 연산

• 실습예제 : ‘ 상품’ 릴레이션과 ‘납품업체’ 릴레이션을 자연 조인 하라 .

• 명령 : 상품 ⋈ N 업체코드 = 업체코드 업체 상품코드 품명 가격 업체코드

P1 바지 30000 COM01

P2 점퍼 85000 COM01

P3 니트 55000 COM02

P4 셔츠 20000 COM02

업체코드 업체명 전화

COM01 ㈜ 협성실업 123-1222

COM02 에드원상사 567-5543

COM03 ㈜삼성물산 345-5454

상품코드 품명 가격 업체코드 업체명 전화

P1 바지 30000

COM01 ㈜ 협성실업 123-1222

P2 점퍼 85000

COM01 ㈜ 협성실업 123-1222

P3 니트 55000

COM02 에드원상사 567-5543

P4 셔츠 20000

COM02 에드원상사 567-5543

< 자연 조인 결과 >

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.3 조인 (JOIN)- 세미조인3.3 조인 (JOIN)- 세미조인

관계 대수의 연산

• 실습예제 : ‘ 상품’ 릴레이션과 ‘납품업체’ 릴레이션을 세미 조인 하라 .

• 명령 : 상품 ⋉ 업체코드 = 업체코드 업체

상품코드 품명 가격 업체코드

P1 바지 30000 COM01

P2 점퍼 85000 COM01

P3 니트 55000 COM02

P4 셔츠 20000 COM05

업체코드 업체명 전화

COM01 ㈜ 협성실업 123-1222

COM02 에드원상사 567-5543

COM03 ㈜삼성물산 345-5454

상품코드 품명 가격 업체코드

P1 바지 30000

COM01

P2 점퍼 85000

COM01

P3 니트 55000

COM02

< 2 단계 : 세미 조인 결과 >

1 단계 : ∏ 업체코드 (업체 )

업체코드

COM01

COM02

COM03

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.3 조인 (JOIN)- 외부조인3.3 조인 (JOIN)- 외부조인

관계 대수의 연산

• 실습예제 : ‘ 상품’ 릴레이션과 ‘납품업체’ 릴레이션을 외부 조인 하라 .

• 명령 : 상품 ⋈ + 업체코드 = 업체코드 업체

상품코드 품명 가격 업체코드

P1 바지 30000 COM01

P2 점퍼 85000 COM01

P3 니트 55000 COM02

P4 셔츠 20000 COM05

업체코드 업체명 전화

COM01 ㈜ 협성실업 123-1222

COM02 에드원상사 567-5543

COM03 ㈜삼성물산 345-5454

상품코드 품명 가격 업체코드 업체명 전화

P1 바지 30000

COM01 ㈜ 협성실업 123-1222

P2 점퍼 85000

COM01 ㈜ 협성실업 123-1222

P3 니트 55000

COM02 에드원상사 567-5543

P4 셔츠 20000

COM05 √ √

√ √ √ COM03 ㈜삼성물산 345-5454< 외부 조인 결과 >

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.4 디비전 (DIVISION)3.4 디비전 (DIVISION)

관계 대수의 연산

• 공통된 어트리뷰트를 가지는 두 릴레이션을 이용해 나누는 것

• 실습예제 : ‘ 주문’ 릴레이션을 ‘상품그룹’ 릴레이션으로 디비전 하라 .

• 명령 : 주문 ÷ 상품 그룹

아이디 상품코드 수량

Tiger78 P1 1

Wow P2 1

Tiger78 P4 2

rulru P1 1

상품코드

P1

< 디비전 결과 >

아이디 수량

Tiger78 1

rulru 1

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.5 합집합 (UNION)3.5 합집합 (UNION)

관계 대수의 연산

• 어트리뷰트의 개수와 대응되는 도메인이 같은 두 릴레이션을 합하는 것

• 실습예제 : 아이디가 ‘WOW’ 인 고객이 주문한 상품코드와

상품명이 ‘니트’인 상품코드를 합집합 (UNION) 을 구하라 .

• 명령 : ∏ 상품코드 (σ 아이디 = 'wow' ( 주문 )) ∪∏ 상품코드 (σ 품명 = ' 니트 ' (상품 ))

아이디 상품코드 수량

Tiger78 P1 1

Wow P2 1

Tiger78 P4 2

rulru P1 1

< 합 (UNION) 결과 >

상품코드

P2

P3

상품코드 품명 가격 업체코드

P1 바지 30000 COM01

P2 점퍼 85000 COM01

P3 니트 55000 COM02

P4 셔츠 20000 COM02

상품코드

P2

상품코드

P3

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.5 합집합 - 외부합집합 (OUTER UNION)3.5 합집합 - 외부합집합 (OUTER UNION)

관계 대수의 연산

• 어트리뷰트의 개수가 다르지만 동일한 어트리뷰트를 가지고 있는 두 릴레이션을 합하는 것

• 실습예제 : ‘ 주문’ 릴레이션과 ‘상품’ 릴레이션의 외부합집합 (OUTER UNION) 을 구하라 .

• 명령 : 주문 ∪ + 상품

아이디 상품코드 수량

Tiger78 P1 1

Wow P2 1

Tiger78 P4 2

rulru P1 1

< 외부 합 (OUTER UNION) 결과 >

상품코드 품명 가격

P1 바지 30000

P2 점퍼 85000

P3 니트 55000

P4 셔츠 20000

아이디 상품코드 수량 품명 가격

Tiger78 P1 1 √ √Wow P2 1 √ √

Tiger78 P4 2 √ √rulru P1 1 √ √

√ P1 √ 바지 30000

√ P2 √ 점퍼 85000

√ P3 √ 니트 55000

√ P4 √ 셔츠 20000

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.6 교집합 (INTERSECT)3.6 교집합 (INTERSECT)

관계 대수의 연산

• 두 릴레이션의 공통 어트리뷰트를 이용하여 공통 투플만 구하는 것

• 실습예제 : ‘ 주문’ 릴레이션과 ‘상품’ 릴레이션의 교집합 (INTERSECT) 을 구하라 .

• 명령 : 주문 ∩ 상품

아이디 상품코드 수량

Tiger78 P1 1

Wow P2 1

Tiger78 P4 2

rulru P1 1

< 교집합 (INTERSECT) 결과 >

상품코드 품명 가격

P1 바지 30000

P2 점퍼 85000

P3 니트 55000

P4 셔츠 20000

상품코드

P1

P2

P4

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.7 차집합 (DIFFERENCE)3.7 차집합 (DIFFERENCE)

관계 대수의 연산

• 릴레이션 A에는 속하지만 릴레이션 B 에는 속하지 않는 투플을 구하는 것

• 실습예제 : ‘ 상품’ 릴레이션과 ‘주문’ 릴레이션을 이용해 주문이 하나도 없는 상품을 구하라 .

• 명령 : 상품 - 주문

아이디 상품코드 수량

Tiger78 P1 1

Wow P2 1

Tiger78 P4 2

rulru P1 1

< 차집합 (DIFFERENCE) 결과 >

상품코드 품명 가격

P1 바지 30000

P2 점퍼 85000

P3 니트 55000

P4 셔츠 20000

상품코드 품명 가격

P3 니트 55000

소단원 Chapter 2. 관계 데이터 모델 소단원 :

3.8 카티션 프로덕트 (CARTESIAN PRODUCT)3.8 카티션 프로덕트 (CARTESIAN PRODUCT)

관계 대수의 연산

• 두 릴레이션의 곱을 구하는 것

• 결과가 두 릴레이션의 모든 어트리뷰트 , 모든 투플의 집합으로 나오므로 매우 신중해야 한다 .

• 실습예제 : ‘ 상품’ 릴레이션과 ‘고객’ 릴레이션의 곱을 구하라 .

• 명령 : 상품 x 주문

아이디 성명

Tiger78 이창수

Wow 손정우< 카티션 프로덕트 (CARTESIAN PRODUCT) 결과 >

상품코드 품명

P1 바지

P2 점퍼상품코드 품명 아이디 성명

P1 바지 Tiger78 이창수

P1 바지 Wow 손정우

P2 점퍼 Tiger78 이창수

P2 점퍼 Wow 손정우

< 상품 릴레이션 >

< 고객 릴레이션 >

소단원 Chapter 2. 관계 데이터 모델 소단원 :

단원요약 1 단원요약 1

단원 요약

단원요약 2 단원요약 2

★ 관계 데이터 모델의 릴레이션은 데이터 집합을 기초로 한 것인데 릴레이션은 행과 열을 가지는 형태로 표현된다 . 릴레이션은 릴레이션의 구조를 나타내는 와 릴레이션의 데이터 값을 나타내는 로 구성된다 .

★ 데이터 모델의 구성요소는 개체 (entity), 개체를 구성하는 , 그리고 각 개체들 간의 관계 (relationship) 이다 .또 , 관계는 개체끼리 대응하는 형태에 따라 일대일 , 일대다 , 다대다의 형태로 구분된다 . ‘학생’ 개체와 ‘교과목’ 개체 사이에는 의 관계라고 할 수 있다 . ?

?

?

??

답 : 속성 (attribute), 다 대 다

답 : 테이블 , 스키마 , 인스턴스

소단원 Chapter 2. 관계 데이터 모델 소단원 :

단원요약 3 단원요약 3

단원 요약

★ 관계 데이터 모델에서는 데이터의 무결성을 위해 도메인 제약 조건 , 기본키에 의한 , 외래키에 의한 참조무결성이라는 제약 조건을 지원한다 .

단원요약 4 단원요약 4

★ 관계 데이터 모델의 조작을 위해서 사용하는 연산으로 관계해석과 가 있다 . 셀렉트 , 프로젝트 , 조인 , 디비전 , 카티션 프로덕트 , union 등 다양한 연산이 존재한다 . 이 연산들은 상용 DBMS 의 언어인 의 이론적인 기초가 된다 .

?

?

?

답 : 개체 무결성

답 : 관계 대수 , SQL