데이터 모델

물리적 혹은 추상적으로 존재하는 현실세계를 단순화되고 정형화된 형태로 표현하는 방식 또는 규범.
실제 데이터가 갖는 특성을 살리면서 목적에 맞게 관심있는 정보만을 단순화하여 표현.

관계형 데이터 모델(Relational Data Model)

테이블 형식을 이용하여 데이터들을 정의하고 설명한 모델
실세계의 데이터를 누구나 직관적으로 이해할 수 있는 형태로 기술할 수 있는 간단한 방식을 제공
테이블 == 릴레이션(Relation)

데이터베이스 스키마(database schema) : 테이블 스키마의 집합
데이터베이스 인스턴스(database instance) : 테이블 스키마에 대한 테이블 인스턴스의 집합

릴레이션(Relation)

수학적으로, 두 개 이상의 집합으로부터 각 집합을 구성하는 원소들의 순서쌍에 대한 집합을 의미

속성(Attribute) - 필드, 열

튜플(Tuple) - 레코드, 행

도메인(Domain)

각 필드에 입력 가능한 값들의 범위, 즉 각 필드가 가질 수 있는 모든 값들의 집합
원자값(atomic value, 더 이상 분리되지 않는 값)이어야함

널(null)

특정 필드에 대한 값을 알지 못하거나 아직 정해지지 않아 입력하지 못한 경우의 필드 값
**0이나 공백 문자와는 다르다**

테이블 스키마(Table schema)

테이블 정의에 따라 만들어진 데이터 구조

차수(Degree)

테이블 스키마에 정의된 필드의 수

차수 = 1 : 단항 테이블(unary relation)
차수 = 2 : 이항 테이블(binary relation)
차수 = n : n항 테이블(n-ary relation)

테이블 인스턴스

테이블 스키마에 현실 세계의 데이터를 레코드로 저장한 형태
스키마는 한번 정의하면 거의 변함이 없지만 인스턴스는 수시로 바뀔 수 있음
	- 레코드의 삽입, 삭제, 수정 등
        

기수(Cardinality)

테이블 인스턴스의 레코드 수

테이블의 특성

중복된 레코드가 존재하지 않음
레코드간의 순서는 의미가 없음
레코드 내에서 필드의 순서는 의미가 없음
모든 필드는 원자값을 가짐

키(Key)

레코드간의 순서가 의미가 없으므로 구분하기 위하여 각 레코드 값을 이용
관계형 데이터 모델에서 특정 레코드를 구별하거나 탐색하기 위한 유일한 방법

필드들의 일부로 각 레코드들을 유일하게 식별해낼 수 있는 식별자(Identifier)
일반적으로 하나의 필드를 지정하여 키로 지정하나 여러개의 필드들로 키를 구성 가능 == 복합키(Composite key)

슈퍼키(super key)

아무런 제약 조건 없이 레코드들을 식별할 수 있는 필드들의 집합

후보키(candidate key)

최소한의 필드만으로 구성된 키

기본키(primary key)

후보키 중에서 식별자로 정의한 하나의 키
되도록 하나의 필드로 구성된 후보키를 선정하는 것이 유리
**NULL값을 가질 수 없음**

외래키(foreign key)

다른 테이블의 기본 키를 참조하는 필드 집합

질의어(query language)

삽입, 삭제, 수정, 검색 등의 데이터 조작을 위한 연산들을 표현하기 위한 언어

절차적 언어(procedural language)
- 사용자가 원하는 결과를 얻기 위해 수행되어야 할 일련의 절차를 명시해야 하는 언어
- 대부분의 프로그래밍 언어

비절차적 언어(non-procedural language)
- 수행 절차는 기술하지 않고, 사용자가 원하는 결과만을 형식적으로 명시하는 언어
- 실질적 수행절차는 시스템 내부적으로 결정

관계 대수(relational algebra)

관계형 데이터베이스의 대표적 질의어
절차적 언어
수학에서의 수식 구조와 유사
피연산자(operand) : 테이블
연산자(operator) : 단항 연산자(unary operator), 이항 연산자(binary operator)

관계 해석(relational calculus)

관계형 데이터베이스의 대표적 질의어
비절차적 언어

0개의 댓글