관계 데이터 모델
모델; 데이터베이스가 구축되는 구조, 형태 추상화하여 보여줌
형태 → 종류가 달라개념적, 추상적 모델 (물리적x) 계층; 트리/ 네트워크; 그래프
관계; relation 집합 모형/ 추상화 → 어떤 형태로 설명; 직관적으로 테이블 형태와 비슷
-관계 데이터 모델(relational data model)의 탄생
- 1970년에 IBM의 E.F.Codd에 의해 제안
-관계 데이터 모델의 특성
- 수학에서의 릴레이션(relation)과 집합(set) 이론에 기초
- 일반 사용자는 테이블(table) 형태로 생각관계 데이터 모델의 직관적인 이해에 도움
≒ 관계 데이터 모델의 애트리뷰트(attribute) 학생, 이름, 학년, 학과 → 애트리뷰트
≒ 관계 데이터 모델의 투플(tuple) 100, 나수영, 4, 컴퓨터 → 인스턴스
테이블의 행(row) = 레코드(record)
테이블의 열(column) = 필드(field) 혹은 아이템(item)
통상적인 테이블의 개념과는 다름
-학생(STUDENT) 테이블: 릴레이션
투플의 집합
관계 데이터 모델 → 학생 테이블
수학적 → 집합
개체의 스키마
애트리뷰트와 도메인
테이블(table) ≒ 릴레이션(relation)
도메인(domain)
학번; 정수형/ 이름; 문자열/ 학년; 정수형/ 학과; 문자열
애트리뷰트가 취할 수 있는 값(value)들의 집합
-단순 도메인(simple domain) → 단순 애트리뷰트: 원자 값 도메인을 더이상 나눌 수 없는 상태
-복합 도메인(composite domain) → 복합 애트리뷰트: 복합 값/ 연, 월, 일 ⇒ 날짜: <연, 월, 일>
ㄴ나누어질 수 있는 여지가 있음/ ex. 8자리 데이터타입: 20220329 → 년, 월, 일 나누기 가능
애트리뷰트(attribute)
학번, 이름, 학년, 학과
- 도메인의 역할(role) 이름
- 한 릴레이션 내에서 애트리뷰트 이름들은 모두 달라야 함
*Note
-애트리뷰트 이름과 도메인 이름은 같을 수도 있음 → STUDENT 릴레이션 정의
- 역할 이름을 도메인 이름으로 지정
릴레이션의 개념
-STUDENT 릴레이션의 정의
사용자 정의 도메인
-도메인 명세가 생략된 STUDENT 릴레이션 정의
(6장) 더 자주 쓰이는 형태
-STUDENT 릴레이션 예
도메인 범주 안에서 실제 값들 삽입(정의)
하나의 투플(인스턴스, 레코드) 생성 ⇒ 학생 릴레이션; 스키마와 인스턴스들의 집합
릴레이션 스키마(relatioin schema)
릴레이션 내포(relation intension) OR 릴레이션 스킴(relation schema)
-릴레이션 이름 + 애트리뷰트 이름
- $R(A_1,A_2,...,A_n), A_i ⇔ D_i ≡ R((A_1,A_2,...,A_n))$
학생(학번, 이름, 학년, 학과)
-정적 성질
- 시간에 무관_시간에 따라 거의 변경x
- 릴레이션 타입과 같은 의미
릴레이션 인스턴스(relation instance)
릴레이션 외연(relation extension)이라고도 함인
-릴레이션 R의 인스턴스
- 어느 한 시점에 릴레이션 R이 포함하고 있는 투플들의 집합
$(<V_1,V_2,...,V_n>), V_i ∈ D_i$
{<100, 나수영, 4, 컴퓨터>} 100 ∈ int, 나수형 ∈ char
새로운 튜플 생성될 때 DBMS은 도메인 타입에 적합한 value 삽입되는지 확인
- 릴레이션의 내용, 상태, snapshot
-투플: $((attr_1=V_1, attr_2=V_2, ..., attr_n=V_n))$}
{(학번 = 100, 이름 = 나수영, 학년 = 4, 학과 = 컴퓨터)}
-동적 성질
- 삽입, 삭제, 갱신으로 시간에 따라 변함
- 릴레이션 값(보통 릴레이션)
릴레이션 (R, relation)
-수학적 정의
릴레이션 R: 카티션 프로덕트(Cartesian product)의 부분집합
릴레이션 하나를 정의할 때 모든 가능한 조합들의 부분집합
하나의 값들의 조합 → 투플 , 투플 집합 → 릴레이션
$R ⊆ D_1 × D_2 × ... × D_n, 단 D_i: i번째 도메인$
즉, n-투플, $<d_1, d_2, ...,d_n>$의 집합
$d_i ∈ D_i, i = 1, 2, ...,n$
n: R의 차수(degree: 1차, 2차, 3차, ..., n차)
ㄴ차수; 속성(도메인)의 개수
투플의 수: 카디널리티(cardinality)
학생 릴레이션; 차수: 4, 카디널리티: 5
학번; 정수형/ 과목번호; 문자열 → 조합의 형태 ⇒ 수강의 의미
모든 가능한 카티션 프로덕트 중에 일부분집합, 관계를 갖는 것끼리 조합
-개념적 정의
- 릴레이션 스키마 + 릴레이션 인스턴스
릴레이션 특성
투플의 유일성(uniqueness of tuples)
릴레이션 = 투플들의 “집합(set)”
투플; 하나처럼 취급 → dbms가 중복 파악o/ ex. 1, 2, 3, 1 ⇒ {1, 2, 3} 중복 제거
투플의 무순서성(no ordering of tuples)
순서 의미x 물리적개념x
릴레이션: 추상적 개념 ← 투플들의 집합(set)/ ex. {1, 2, 3, 4, 5} = {1, 3, 2, 4, 5}
테이블: 구체적 개념
애트리뷰트의 무순서성(no ordering of attributes)
100 나수영 4 컴퓨터 ← 순서x
릴레이션 스키마 → 애트리뷰트들의 “집합”
투플: <attribute: value> 쌍의 집합
애트리뷰트의 원자성(atomicity)
-애트리뷰트 값은 원자 값(atomic value) must
- 논리적으로 분해 불가능
-정규화 릴레이션(normalized relation)
- 애트리뷰트 값으로 원자 값만 허용되는 릴레이션
- 비정규화 릴레이션은 분해(decomposition) ~> 정규화
날짜 → 년, 월, 일 구별(분해)해서 애트리뷰트 정의(애트리뷰트 값; 원자 값)
- 동등한 의미를 유지
-널 값(null value)도 원자 값으로 취급
- null: unknown(아직 모름), inapplicable(해당사항 없음)
-도메인
- 단순 도메인
- 복합 도메인: 값을 하나의 단위로 취급 or 분해 ⇒ 원자 값이여야 한다는 명제 만족
릴레이션의 정규화
애트리뷰트: 학번, 과목성적 / 학번, 과목번호, 성적
관계 데이터베이스 개념
데이터베이스: 개체와 관계들의 집합
네트워크; 그래프 노드 집합
-관계 데이터베이스(relational database)
- 테이블들의 집합(릴레이션들의 집합)
- 데이터베이스를 시간에 따라 그 내용(상태)이 변할 수 있는 테이블 형태로 표현
ㄴ투플 개수, 내용 변화
관계 데이터베이스 스키마(relational database schema) = {릴레이션 스키마} + {무결성 제약조건}
-관계 데이터 모델 ⇔ 프로그래밍 시스템
- 릴레이션 ⇔ 화일
- 투플 ⇔ 레코드(레코드 어커런스)
- 애트리뷰트 ⇔ 필드(필드 타입)
*Notes
관계 데이터베이스라고 할 때 데이터가 물리적 테이블 형태로 저장된다는 것을 의미하지x
Example
학생 릴레이션: 학번, 이름, 학년, 학과 (차수: 4개, 5개 투플)
과목 릴레이션: 과목번호, 과목이름, 학점, 학과, 담당교수(차수: 5개)
등록 릴레이션: (카디럴리티: 11개)
데이터베이스 키(key)
-키(key)
각 투플을 유일하게 식별할 수 있는 애트리뷰트 집합(set of attributes) → 하나가 될 수도 o
후보 키(candidate key)
릴레이션 $R(A_1,A_2,...,An)$에 대한 애트리뷰트 집합, $K((A_i,A_j,...,A_k))$로서 다음 두 성질 만족
1. 유일성(uniqueness)
학번 100을 알면 나수영 4 컴퓨터 알 수 o
각 투플에 대해 $K((A_i,A_j,...,A_k))$의 값$(<V_i,V_j,...,V_k>)$은 유일
2. 최소성(minimality)
K는 각 투플을 유일하게 식별하는데 필요한 애트리뷰트만 포함
학생 릴레이션 → 학번, 이름일 경우 최소성 만족x
슈퍼 키(super key)
유일성은 만족하지만 최소성은 만족하지 않는 애트리뷰트의 집합
학생 릴레이션 슈퍼키: 학번, 이름
기본 키(primary key, PK)
-후보 키(candidate key) 중에서 지정된 하나의 키
- 데이터베이스 설계자(DBA)가 지정
-각 투플에 대한 기본 키 값은 항상 유효한 값이어야 함
- null 값이 허용x
대체 키(alternate key)
후보 키 중에서 기본 키를 제외한 나머지 후보 키
후보 키: 학번, 이름/ 기본 키: 학번/ 대체 키: 이름
외래 키(Foreign key, FK)
현재 릴레이션에서는 기본 키가 아니지만 다른 릴레이션에서는 기본 키
릴레이션 R의 애트리뷰트 집합 FK가 릴레이션 S의 기본 키일 때 이 FK는 R의 외래 키이다.
(FK의 도메인) = (S의 기본 키의 도메인)
FK의 값은 S의 존재하는 값이거나 null
R과 S가 같은 릴레이션일 수도 있음
-R을 참조 릴레이션(referencing relation), S를 피참조 릴레이션(reference relation)이라 함
- 릴레이션 R은 FK ~> 릴레이션 S 참조
학과 외래 키 ~> 교수 릴레이션 참조
등록 릴레이션: 학번, 과목번호 ⇒ 기본 키 but, 각각은 외래 키
무결성 제약(Integrity Constraints)
개체 무결성(entity integrity)
기본 키(PK) 값은 언제 어느 때고 null 값 가질 수x
*Notes: null 값 (식별될 수x 값)
-정보 부재를 명시적으로 표현하는 특수한 데이터 값
- 알려지지 않은 값(unknown value)
- 해당 없음(inapplicable)
참조 무결성(referential integrity)
외래 키 값은 반드시 피참조 릴레이션의 기본 키 값이거나 null이다.
무결성 제약조건은 데이터베이스 상태(database state)가 항상 만족시켜야 할 제약조건
-데이터베이스 상태(database state)
- 어느 한 시점에 데이터베이스에 저장되어 있는 모든 데이터 값(투플)
- 데이터베이스 인스턴스(database instance)
- 데이터베이스 스키마에 포함되어 있는 모든 릴레이션들의 인스턴스 집합
- 데이터베이스 상태의 계속적인 변화
- 삽입,삭제, 변경 연산
DBMS는 데이터베이스 상태의 변화에도 항상 무결성 제약을 만족시키도록 해야 함
'Computer Science > 데이터베이스' 카테고리의 다른 글
[데이타베이스론] CH6. SQL (0) | 2022.05.20 |
---|---|
[데이타베이스론] CH5. 관계 대수와 관계 해석 (0) | 2022.05.20 |
[데이타베이스론] CH3. DBS 구성 (0) | 2022.05.20 |
[데이타베이스론] CH2. 데이타베이스 관리시스템 (0) | 2022.05.20 |
[데이타베이스론] CH1. 데이타베이스 환경 (0) | 2022.05.20 |