
전문 용어가 중요한 이유
전문 용어를 배우는 것이 중요한 세 가지 이유는 다음과 같다:
- 용어는 관계형 DB 모델에 대한 개념과 의견들을 정의하고 표현할 때 사용된다.
- 용어는 DB 설계 프로세스 자체를 정의하고 표현할 때 사용된다.
- 용어는 관계형 DB나 RDBMS에 대하여 이야기 할 때면 언제나 사용된다.
값 관련 용어
데이터 Data
- DB에 저장된 값
- 프로세스에 의해 바뀌기 전까지는 같은 상태를 유지해야 한다. 따라서 정적이다.
- 데이터 중에서, 일을 하거나 분석을 하기 위해 특정한 방법을 통해 의미 있고 실용적으로 재생성한 것
- 데이터를 몇 가지 방법으로 가공을 해서 의미 있는 결과로 바꿔야 정보이다.
- "데이터는 저장하는 것이고, 정보는 찾는 것이다."
널 Null
- 없거나 알려지지 않은 값. 0이나 공백 문자열이 아니다.
널값
- 누락값은 일반적으로 사람의 실수로 인해 발생한다.
- 알려지지 않은 값은 아직 값이 정의되지 않았거나, 정말로 알 수 없는 값이 저장된 경우이다.
널로 인한 문제
- 수학적 연산에 부정적인 영향을 미친다. null을 포함한 연산은 결과가 null이다.
- 값의 누락, 인식하지 못하는 값, 수학 연산식이나 집계 함수에 사용되는 값인지에 관련된 문제는 DB 설계 프로세스에서 고려되어야 한다.
구조 관련 용어
테이블 Table
- 관계형 DB의 데이터는 사용자가 테이블로 인식되는 관계에 저장된다.
- 각 관계는 튜플(레코드)과 속성(필드)으로 구성된다.
- 테이블은 데이터베이스의 주요 구조이며, 각 테이블은 항상 하나의 특정 주제를 나타낸다.
- 모든 테이블은 각 레코드에 유일한 값으로 구분되는 기본 키(Primary key) 필드를 적어도 하나 이상 포함해야 한다.
- 특정 테이블이 보여주는 대상은 객체가 될 수도 있고, 이벤트가 될 수도 있다.
- 정보를 만들 때 사용하는 데이터를 저장하는 테이블을 데이터 테이블이라고 한다.
- 수정, 삭제 등의 가공 작업을 할 수 있고, 특정한 형식의 정보로 전환할 수 있다.
- 데이터 무결성을 보장할 때 사용하는 데이터를 저장하는 테이블을 검증 테이블(룩업 테이블)이라고 한다.
필드 Field
- DB의 가장 작은 구조다.
- 테이블이 가지고 있는 대상의 특성을 표현한다.
- 데이터를 실질적으로 저장하는 구조다.
- 제대로 설계된 DB의 모든 필드는 단 하나의 값을 가지며, 이름으로 어떤 값을 갖고 있는지 알 수 있다.
- 잘못된 필드 설계는 다음과 같다:
- 둘 이상의 서로 다른 항목들을 값으로 갖는 다중 구성 필드
- 같은 종류의 값을 여러 번 갖고 있는 다중값 필드
- 연결된 문자값이나 수식의 결과 내용을 갖고 있는 계산된 필드
레코드 Record
- 테이블 대상에 대한 유일한 값을 표시한다.
- 테이블에 있는 필드 값들의 집합으로 구성된다.
- 각 레코드는 기본 키가 되는 필드의 고유값으로 DB에서 식별된다.
뷰 View
- DB의 하나 이상의 테이블에서 여러 필드들을 혼합하여 만든 가상 테이블이다.
- 뷰를 구성하는 테이블들을 기반 테이블이라고 한다.
- 뷰가 중요한 이유는 다음과 같다:
- 동시에 여러 테이블에 있는 데이터에 대한 작업을 수행할 수 있다.
- 사용자가 하나 혹은 여러 테이블에 있는 특정 필드를 보거나 조작하는 것을 방지하도록 해준다. 이는 보안에 도움이 된다.
- 데이터 무결성을 구현하는 데 도움이 된다.
키 Key
기본 키(Primary Key)와 외래 키(Foreign Key)가 있다.
기본 키
- 테이블의 각 레코드들을 식별할 수 있는 하나 혹은 여러개의 필드들로 구성된다.
- 여러 개의 필드로 구성된 기본 키는 복합 기본 키 라고 한다.
- 기본 키의 값은 전체 DB 중 특정 레코드를 식별한다.
- 기본 키의 필드는 전체 DB 중 특정 테이블을 식별한다.
- 기본 키는 테이블 수준의 무결성을 강제한다.
- 기본 키로 DB에 있는 다른 테이블과 관계를 설정할 수 있다.
외래 키
- 두 테이블 간 관계를 설정할 때, 한 테이블의 기본 키를 다른 테이블 구조에 포함하면 외래 키가 된다.
- 외래키는 관계 수준의 무결성을 보장하는 데 사용된다.
- 외래 키의 값이 반드시 참조하는 쪽의 기본 키로 존재하는 값과 일치해야 한다.
인덱스 Index
- RDBMS의 데이터 처리 속도를 향상시키기 위한 구조다.
- 논리적인 DB 구조상 절대적으로 필요한 것은 아니다.
- 데이터 처리 속도를 최적화 할 때 사용하는 물리적 구조이다.
- 반면 키(Key)는 테이블의 레코드를 식별할 때 사용하는 논리적인 구조이다.
관계 관련 용어
관계 Relation
- 두 테이블의 레코드 사이에 연관을 지을 수 있을 때 관계는 두 테이블 사이에 존재한다.
- 기본 키와 외래 키의 집합
- 연결 테이블(연관 테이블, linking table)
- 관계로 다중 테이블 뷰를 만들 수 있다.
- 관계는 불필요한 데이터를 줄이고, 중복 데이터를 제거한다. 이를 통해 데이터 무결성을 보장한다.
- 모든 관계는 세 가지 방법으로 특성화할 수 있다:
- 테이블들 간 존재하는 관계의 종류에 의해
- 각 테이블이 참여하는 방법에 의해
- 각 테이블이 참여하는 정도에 의해
관계의 유형
- 테이블 간 존재할 수 있는 기수(Cardinality)에는 1대1, 1대다, 다대다 관계가 있다.
1대1 관계
- 첫 테이블의 한 레코드가 두 번째 테이블의 한 레코드에만 연결되어있고, 반대에도 마찬가지일 때.
- 이 관계에서 첫 테이블을 "부모" 테이블이라고 하고, 두 번째 테이블을 "자식 테이블"이라고 한다.
- 두 개의 테이블이 같은 기본 키를 공유할 수 있는 유일한 관계다.
1대다 관계
- 첫 테이블의 한 레코드는 두 번째 테이블의 여러 레코드에 연결되지만, 두 번째 테이블의 한 레코드는 첫 테이블의 오직 하나의 레코드에만 연결할 수 있을 때.
- DB에서 테이블 사이에 존재하는 가장 일반적인 관계이다.
다대다 관계
- 첫 테이블의 한 레코드는 두 번째 테이블의 여러 레코드에 연결될 수 있고, 두 번째 테이블의 한 레코드도 첫 테이블의 여러 레코드에 연결 될 수 있을 때.
- 연결 테이블을 통해 설정한다.
참여의 유형
관계 안의 테이블의 참여는 필수적일 수도, 선택적일 수도 있다.
- 테이블 B에 레코드를 삽입하기 전 테이블 A에 적어도 하나의 레코드를 넣어야 한다면 테이블 A의 참여는 필수적이다.
- 만일 그렇지 않다면 테이블 A의 참여는 선택적이다.
참여의 정도
- 특정 테이블이 관련된 테이블에 있는 한 개의 레코드와 연결되어야 하는 최소/최대 레코드 개수를 결정한다.
- 테이블 A의 한 개의 레코드가 테이블 B의 레코드 중 최소 1개, 최대 10개와 연결될 수 있다면 테이블 B에 대한 참여의 정도는
1,10
이다.
무결성 관련 용어
필드 명세
- 도메인이라고도 한다.
- 필드의 모든 요소를 표시한다.
- 필드의 일반적인, 물리적인, 논리적인 유형의 요소들을 모두 포함한다.
- 일반적인 요소: 필드의 가장 기본적인 정보들.
- 물리적인 요소: 필드를 구성하는 방법과 사람들에게 표시하는 방법.
- 논리적인 요소: 필드에 저장되는 값.
데이터 무결성
DB 설계 프로세스를 진행하는 동안 구현해야 하는 데이터 무결성에는 네 가지 유형이 있다.
- 테이블 수준 무결성(엔티티 무결성)
- 테이블 내 중복된 레코드가 없으며, 테이블 내 각 레코드를 식별하는 필드가 유일한 값을 갖고, 그 값은 null이 아니다.
- 필드 수준 무결성(도메인 무결성)
- 모든 필드의 구조가 잘 되었음을 보장한다.
- 관계 수준 무결성(참조 무결성)
- 테이블 사이의 관계의 적절성
- 다른 테이블에서 데이터가 입력/수정/삭제될 때마다 레코드가 동기화된다.
- 업무 규칙
- 조직이 데이터를 인지하고 사용하는 방법에 따라 DB의 특정 측면에서 제약을 준다.