관계 데이터 모델

Download Report

Transcript 관계 데이터 모델

Chapter
2. 관계 데이터 모델
소단원 소단원
:
학습목표
학습목표
본 장은 데이터베이스를 구성하는 개체, 속성, 관계 등을 다룬다. 특
별히 데이터베이스의 구조를 테이블에 기초하여 조직하는 관계 데이
터 모델은 개체(entity)와 관계(relationship) 들이 테이블의 집합 형
태로 되어 간단하고 이해하기 쉬우며 사용자는 개체들 간의 관계의
유형이나 관계의 방향성 등을 알 필요 없이 데이터에 접근이 용이하
다. 본 장은 관계 데이터 모델에 대해 자세히 소개하고 관계 데이터
모델을 다루기 위한 관계 대수의 여러 가지 연산 등을 다루고 있다.
Chapter
소단원 소단원
:
2. 관계 데이터 모델
1. 데이터 모델
개체-관계 데이터 모델(entity- relationship data model)
• 실존 개체
• 개체를 구성하는 속성
망 데이터 모델
• 개체 들간의 관계
• 관계의 유형
표현방식
에 따라
계층 데이터 모델
• 연산
• 무결성 원칙
관계 데이터 모델
관계 데이터 모델(relational data model)
• 데이터베이스의 구조를 테이블에 기초
• 개체(entity), 관계(relationship) 모두를 테이블의 집합 형태로 표현
• 간단, 이해하기 쉽다.
• 관계의 유형, 관계의 방향성에 무관하게 데이터에 접근이 용이하다.
데이터 모델
Chapter
소단원 소단원
:
2. 관계 데이터 모델
데이터 모델
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)
• 개체와 개체 사이의 상관 관계
• 통합 저장된 데이터베이스의 특성 상 관계 또한 하나의 중요한 정보로 취급
아이디
성명
전화
주소
Wow
이창수
123-4567
부산 남구 대연3동 115
Joyful20
김학수
123-5555
부산 영도구 봉래동 890
Tiger78
최민
888-8888
서울 강남구 보길동
rulru
이정상
431-4321
전남 나주시 연희동 345
<고객-> 개체>
<주문-> 관계>
상품코드
품명
가격
P1
바지
55000
아이디
상품코드
P2
점퍼
58000
Tiger78
P1
P3
니트
53000
Wow
P2
P4
셔츠
30000
<상품-> 개체>
Chapter
소단원 소단원
:
2. 관계 데이터 모델
1.3 관계의 유형
관계의 유형 종류
•
일 대 일 (1 : 1) ex) 남편과 아내
•
일 대 다 (1 : N) ex) 부모와 자녀들
•
다 대 다 (N : M) ex) 학생과 교과목
남편
아내
1:1
부모
자녀1
자녀2
자녀n
1:N
학생1
학생2
학생n
과목1
과목2
과목n
N:M
E-R Diagram
• 개체, 속성, 관계 등의 정보를 표현하는 시각적 도구
데이터 모델
Chapter
소단원 소단원
:
2. 관계 데이터 모델
릴레이션
2. 관계 데이터 모델과 릴레이션
2.1 릴레이션의 개념
• 릴레이션은 관계 데이터 모델에서 데이터 집합을 의미함.
• 릴레이션은 테이블의 형태로 표현됨.
• 테이블은 행(row) 과 열(column) 로 구성됨.
<용어 비교>
구분
의미
용어
파일 시스템
행
레코드
열
필드
행
투플
열
어트리뷰트
릴레이션
• 릴레이션은 릴레이션 스키마(구조)와 릴레이션 인스턴스(data set)로 구성
• 도메인은 어트리뷰트가 가질 수 있는 값을 말함.
Chapter
2. 관계 데이터 모델
<<릴레이션에서 사용되는 용어>>
소단원 소단원
:
릴레이션
Chapter
2. 관계 데이터 모델
소단원 소단원
:
릴레이션
2.2 릴레이션의 특성
릴레이션은 테이블과는 다른 특징이 있으며 집합의 개념으로 해석
• 릴레이션에 포함된 모든 투플은 유일하게 식별 가능하다.
• 같은 릴레이션 내의 투플들의 순서는 의미가 없다.
• 같은 릴레이션 내의 어트리뷰트의 순서는 의미가 없다.
• 어트리뷰트의 값은 원자 값이다.
Chapter
2. 관계 데이터 모델
소단원 소단원
:
릴레이션
2.3 릴레이션의 제약조건
• 도메인 제약 조건 : 릴레이션의 어트리뷰트는 지정된 도메인에 의한 값만을
가진다.
• 개체 무결성 : 기본 키에 속하는 어트리뷰트는 널(NULL) 값을 가질 수 없다.
• 참조 무결성 : 릴레이션의 외래키는 참조 할 수 없는 값을 가질 수 없다.
<용어>
• 기본키 : 릴레이션에서 투플들을 유일하게 식별할 수 있는 어트리뷰트 들
중에 선택된 하나.
• 외래키 : 개체와 개체 사이를 연결해 주는 어트리뷰트
Chapter
소단원 소단원
:
2. 관계 데이터 모델
<<기본 키, 외래 키, 후보 키>>
<고객-> 개체>
아이디
성명
전화
주소
Wow
이창수
123- ****
부산 남구 대연3동 115
Joyful20
이학수
458- ****
부산 영도구 봉래동 890
Tiger78
최민
888- ****
서울 강남구 보길동
rulru
이정상
431- ****
전남 나주시 연희동 345
<상품-> 개체>
<주문-> 관계>
상품코드
품명
가격
아이디
상품코드
P1
바지
55000
Tiger78
P1
P2
점퍼
58000
Wow
P2
P3
니트
55000
P4
셔츠
30000
기본키
외래키
외래키
릴레이션
Chapter
소단원 소단원
:
2. 관계 데이터 모델
릴레이션
<<제약조건 위배 사례>>
<도메인 제약 조건 위배>
예)전화는 char(15) 인데 가질 수 없는 값(문자 15자 이상)이 입력됨.
아이디
성명
전화
주소
Wow
이창수
(82)051-323- **** -23
부산 남구 대연3동 115
Joyful20
이학수
458- ****
부산 영도구 봉래동 890
Tiger78
최민
888- ****
서울 강남구 보길동
rulru
이정상
431- ****
전남 나주시 연희동 345
<개체 무결성 제약조건 위배>
<참조 무결성 제약조건 위배>
예) 상품코드가 기본 키인데 null 임.
예) 아이디 chili77 는 고객 릴
레이션에 없는 아이디이다.
상품코드
품명
가격
P1
바지
55000
아이디
상품코드
점퍼
58000
Tiger78
P1
P3
니트
55000
chili77
P2
P4
셔츠
30000
상품 릴레이션의 기본키
고객 릴레이션을 참조하는 외래키
Chapter
소단원 소단원
:
2. 관계 데이터 모델
3. 데이터 조작을 위한 관계 대수의 연산
• 릴레이션을 조작하기 위한 연산은 관계대수와 관계해석이 있다.
• 관계 대수 :상용 DBMS의 언어인 SQL의 이론적인 기초
<연산자 들의 종류와 기호>
종류
순수
관계
연산
집합
연산
확장
관계
연산
연산자
기호
비고
실렉트(select)
σ
기본연산
프로젝트(project)
∏
기본연산
조인(join)
⋈
복합연산
디비전(division)
÷
복합연산
합집합(union)
∪
기본연산
교집합(intersect)
∩
복합연산
차집합(difference)
−
기본연산
카티션프로덕트(cartesian product)
x
기본연산
세미조인(semi join)
⋉
복합연산
외부조인(outer join)
⋈+
복합연산
외부합집합(outer union)
∪+
기본연산
관계 대수의 연산
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.1 셀렉트(SELECT)
• 하나의 릴레이션에 주어진 조건에 만족하는 투플들만 걸러내는 연산
• 결과 릴레이션은 입력 릴레이션과 어트리뷰트 수는 같으며 투플의 수는 같거나 적게 나옴.
• 실습예제 : ‘고객’ 릴레이션에서 등급이 ‘silver’ 인 고객을 찾아라.
• 명령 : σ 등급 = ‘silver’(고객)
아이디
성명
전화
주소
등급
Wow
W12345
이창수
부산 남구 대연3동 115
Silver
Joyful20
J4545
김학수
부산 영도구 봉래동 890
Gold
Tiger78
T8712
최민
서울 강남구 보길동
Gold
rulru
r6781
이정상
전남 나주시 연희동 345
silver
아이디
성명
전화
주소
등급
Wow
W12345
이창수
부산 남구 대연3동 115
Silver
rulru
r6781
이정상
전남 나주시 연희동 345
silver
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.2 프로젝트(PROJECT)
• 하나의 릴레이션에 원하는 어트리뷰트들만 걸러내는 연산
• 결과 릴레이션은 입력 릴레이션과 어트리뷰트 수는 적고 투플의 수는 같다.
• 실습예제 : ‘상품’ 릴레이션에서 종류와 가격을 나타내어라.
• 명령 : ∏ 종류, 가격(상품)
상품코드
종류
색상
가격
업체코드
P1
바지
베이지
30000
COM01
P2
바지
불루
30000
COM01
P3
점퍼
그린
85000
COM02
P4
점퍼
불루
85000
COM02
종류
가격
바지
30000
점퍼
85000
(릴레이션의 특성 상 동일한 투플은 제거된다. )
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.3 조인(JOIN)
• 두 개 이상의 릴레이션에서 원하는 투플들만 걸러내는 연산
• 두 릴레이션을 곱한 후 실렉트 한 것과 같다.
• 조인의 종류 : 세타조인, 외부조인, 자연조인, 동등조인, 세미조인
조인 종류
연산자
동등조인
⋈
자연조인
⋈N
조인에 사용된 어트리뷰트 중 중복된 것은 결
과에서 제거
외부조인
⋈+
조인에 사용되지 않은 어트리뷰트를 NULL 값
을 사용해 결과에 포함.
기준 릴레이션이 왼(오른)쪽이면
LEFT(RIGHT) OUTER JOIN이라고 함.
세미조인
⋉
세타조인
=, >, >=, <,
<=, <>
의미
‘= ‘연산자와 같은 의미, 조인에 사용된 모든
어트리뷰트를 결과에 포함
조인에 사용된 어트리뷰트만 결과에 포함
조인 조건에 관계연산자 사용한 것으로 특별
히 ‘=‘ 를 사용하면 동등조인이라 함
Chapter
소단원 소단원
:
2. 관계 데이터 모델
3.3 조인(JOIN) - 동등조인
• 실습예제 : ‘상품’ 릴레이션과 ‘납품업체’ 릴레이션을 동등 조인 하라.
• 명령 : 상품
⋈
업체코드 = 업체코드 업체
상품코드
품명
가격
업체코드
P1
바지
30000
COM01
업체코드
업체명
전화
P2
점퍼
85000
COM01
COM01
㈜ 협성실업
123-1222
P3
니트
55000
COM02
COM02
에드원상사
567-5543
P4
셔츠
20000
COM02
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)-자연조인
• 실습예제 : ‘상품’ 릴레이션과 ‘납품업체’ 릴레이션을 자연 조인 하라.
• 명령 : 상품
⋈N 업체코드 = 업체코드 업체
상품코드
품명
가격
업체코드
P1
바지
30000
COM01
업체코드
업체명
전화
P2
점퍼
85000
COM01
COM01
㈜ 협성실업
123-1222
P3
니트
55000
COM02
COM02
에드원상사
567-5543
P4
셔츠
20000
COM02
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)-세미조인
• 실습예제 : ‘상품’ 릴레이션과 ‘납품업체’ 릴레이션을 세미 조인 하라.
• 명령 : 상품
⋉
상품코드
품명
가격
업체코드
P1
바지
30000
COM01
업체코드
업체명
전화
P2
점퍼
85000
COM01
COM01
㈜ 협성실업
123-1222
P3
니트
55000
COM02
COM02
에드원상사
567-5543
P4
셔츠
20000
COM05
COM03
㈜삼성물산
345-5454
업체코드 = 업체코드 업체
1 단계 : ∏ 업체코드(업체)
상품코드
품명
가격
업체코드
P1
바지
30000
COM01
업체코드
P2
점퍼
85000
COM01
COM01
P3
니트
55000
COM02
COM02
COM03
< 2 단계 : 세미 조인 결과>
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.3 조인(JOIN)-외부조인
• 실습예제 : ‘상품’ 릴레이션과 ‘납품업체’ 릴레이션을 외부 조인 하라.
• 명령 : 상품
⋈+
상품코드
품명
가격
업체코드
P1
바지
30000
COM01
업체코드
업체명
전화
P2
점퍼
85000
COM01
COM01
㈜ 협성실업
123-1222
P3
니트
55000
COM02
COM02
에드원상사
567-5543
P4
셔츠
20000
COM05
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)
• 공통된 어트리뷰트를 가지는 두 릴레이션을 이용해 나누는 것
• 실습예제 : ‘주문’ 릴레이션을 ‘상품그룹’ 릴레이션으로 디비전 하라.
• 명령 : 주문 ÷ 상품 그룹
아이디
상품코드
수량
Tiger78
P1
1
Wow
P2
1
Tiger78
P4
2
상품코드
rulru
P1
1
P1
아이디
수량
Tiger78
1
rulru
1
<디비전 결과>
관계 대수의 연산
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.5 합집합(UNION)
• 어트리뷰트의 개수와 대응되는 도메인이 같은 두 릴레이션을 합하는 것
• 실습예제 : 아이디가 ‘WOW’인 고객이 주문한 상품코드와
상품명이 ‘니트’인 상품코드를 합집합(UNION)을 구하라.
• 명령 : ∏ 상품코드(σ 아이디= 'wow' (주문)) ∪∏ 상품코드(σ 품명= '니트' (상품))
아이디
상품코드
수량
상품코드
품명
가격
업체코드
Tiger78
P1
1
P1
바지
30000
COM01
Wow
P2
1
P2
점퍼
85000
COM01
Tiger78
P4
2
P3
니트
55000
COM02
rulru
P1
1
P4
셔츠
20000
COM02
상품코드
P2
상품코드
상품코드
P2
P3
<합(UNION) 결과>
P3
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.5 합집합-외부합집합(OUTER UNION)
• 어트리뷰트의 개수가 다르지만 동일한 어트리뷰트를 가지고 있는 두 릴레이션을 합하
는것
• 실습예제 : ‘주문’ 릴레이션과 ‘상품’ 릴레이션의 외부합집합(OUTER UNION) 을 구하라.
• 명령 : 주문
∪+
상품
아이디
상품코드
수량
아이디
상품코드
수량
품명
가격
Tiger78
P1
1
Tiger78
P1
1
√
√
Wow
P2
1
Wow
P2
1
√
√
Tiger78
P4
2
Tiger78
P4
2
rulru
P1
1
√
√
rulru
P1
1
√
√
상품코드
품명
가격
P1
30000
바지
30000
√
바지
P1
√
85000
85000
√
점퍼
점퍼
√
P2
P2
P3
니트
55000
√
P3
√
니트
55000
P4
셔츠
20000
√
P4
√
셔츠
20000
<외부 합(OUTER UNION) 결과>
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.6 교집합 (INTERSECT)
• 두 릴레이션의 공통 어트리뷰트를 이용하여 공통 투플만 구하는 것
• 실습예제 : ‘주문’ 릴레이션과 ‘상품’ 릴레이션의 교집합(INTERSECT)을 구하라.
• 명령 : 주문
∩
상품
아이디
상품코드
수량
Tiger78
P1
1
Wow
P2
1
Tiger78
P4
2
rulru
P1
1
상품코드
품명
가격
P2
P1
바지
30000
P4
P2
점퍼
85000
P3
니트
55000
P4
셔츠
20000
상품코드
P1
<교집합(INTERSECT) 결과>
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.7 차집합 (DIFFERENCE)
• 릴레이션 A에는 속하지만 릴레이션 B에는 속하지 않는 투플을 구하는 것
• 실습예제 : ‘상품’ 릴레이션과 ‘주문’ 릴레이션을 이용해 주문이 하나도 없는 상품을 구하라.
• 명령 : 상품
-
주문
상품코드
품명
가격
아이디
상품코드
수량
P1
바지
30000
Tiger78
P1
1
P2
점퍼
85000
Wow
P2
1
P3
니트
55000
Tiger78
P4
2
P4
셔츠
20000
rulru
P1
1
상품코드
품명
가격
P3
니트
55000
<차집합(DIFFERENCE) 결과>
Chapter
소단원 소단원
:
2. 관계 데이터 모델
관계 대수의 연산
3.8 카티션 프로덕트 (CARTESIAN PRODUCT)
• 두 릴레이션의 곱을 구하는 것
• 결과가 두 릴레이션의 모든 어트리뷰트, 모든 투플의 집합으로 나오므로 매우 신중해야
한다.
• 실습예제 : ‘상품’ 릴레이션과 ‘고객’ 릴레이션의 곱을 구하라.
• 명령 : 상품
x
주문
상품코드
품명
P1
바지
P2
점퍼
<상품 릴레이션>
아이디
성명
Tiger78
이창수
Wow
손정우
<고객 릴레이션>
상품코드
품명
아이디
성명
P1
바지
Tiger78
이창수
P1
바지
Wow
손정우
P2
점퍼
Tiger78
이창수
P2
점퍼
Wow
손정우
< 카티션 프로덕트 (CARTESIAN PRODUCT) 결과>
Chapter
2. 관계 데이터 모델
소단원 소단원
:
단원요약 1
★ 데이터 모델의 구성요소는 개체(entity), 개체를 구성하는
, 그리고 각 개체들 간의 관계(relationship) 이다.
?
또, 관계는 개체끼리 대응하는 형태에 따라 일대일, 일대다,
다대다의 형태로 구분된다. ‘학생’ 개체와 ‘교과목’ 개체 사이
에는
의 관계라고 할 수 있다.
?
답: 속성(attribute), 다 대 다
단원요약 2
★ 관계 데이터 모델의 릴레이션은 데이터 집합을 기초로 한
것인데 릴레이션은 행과 열을 가지는
형태로 표현된
?
다. 릴레이션은 릴레이션의 구조를 나타내는
와 릴레
?
이션의 데이터 값을 나타내는
로 구성된다.
?
답:테이블, 스키마, 인스턴스
단원 요약
Chapter
2. 관계 데이터 모델
소단원 소단원
:
단원 요약
단원요약 3
★ 관계 데이터 모델에서는 데이터의 무결성을 위해 도메인 제
약 조건, 기본키에 의한
, 외래키에 의한 참조무결성
?
이라는 제약 조건을 지원한다.
답: 개체 무결성
단원요약 4
★ 관계 데이터 모델의 조작을 위해서 사용하는 연산으로 관계
해석과
가 있다. 셀렉트, 프로젝트, 조인, 디비전,
?
카티션 프로덕트, union 등 다양한 연산이 존재한다. 이 연산들
은 상용 DBMS의 언어인
의 이론적인 기초가 된다.
?
답: 관계 대수, SQL