관계형 데이터 모델
IT 위키
- Relational Data Model
관계형 데이터베이스의 기초가 되는 수학적 모델
역사[편집 | 원본 편집]
관계형 데이터 모델은 기본적으로 집합론에 기반한다. 수학에서 집합은 고유한 객체들의 모음인데, 이와 비슷하게 데이터베이스의 관계(또는 표)는 튜플(행)의 집합으로 볼 수 있으며, 각 튜플은 속성(열)과 값으로 구성된다. 관계형 데이터 모델은 E.F. 코드 박사(Dr. E.F. Codd)가 1970년에 발표한 논문 “A Relational Model for Large Shared Data Banks”에서 처음 제안되었다. 이 논문은 데이터베이스 분야의 혁신을 가져왔으며, 코드 박사는 이 공로로 ACM 튜링 상을 수상했다.
이 형식적 관계 모델은 향후 실제 구현된 DBMS가 출시되고, SQL 표준이 제정되면서 실용적인 현대의 관계형 데이터베이스로 발전하였다.
관계형 데이터 용어[편집 | 원본 편집]
스키마 (Schema)[편집 | 원본 편집]
릴레이션의 구조(The Schema (or description) of a Relation)
- R(A1, A2, .....An)과 같이 표현된다.
- R = 릴레이션의 이름
- 주로 대문자 Q, R, S를 사용한다.
- A1, A2, ... An은 릴레이션의 속성들
- 각각의 속성은, 각 속성에 포함될 수 있는 값의 집합인 도메인(Domain)을 가진다.
예시
- 고객(고객ID, 고객명, 휴대폰번호)
- 고객 휴대폰번호의 도메인 = 010으로 시작하는 11자리 숫자
튜플 (Tuple)[편집 | 원본 편집]
순서가 있는 값의 집합�
- n-튜플은 n개의 순서가 있는 값의 집합이다.
- r(R) = {t1, t2, ..., tn} where each ti is an n-tuple
- < ... > 와 같이 표현되며, 주로 소문자 t, u, v을 사용한다.
- ti = <v1, v2, ..., vn> where each vj element-of dom(Aj)
- 각 값은 속성의 도메인에 맞게 들어갈 수 있다.
- 튜플의 집합은 릴레이션이다.
- 튜플의 수를 카디날리티(Cardinality)라고 한다.
예시
- 고객 릴레이션의 튜플은 아래와 같을 수 있다.
- ti = < C123, 홍길동, 01012345678 >
도메인 (Domain)[편집 | 원본 편집]
속성이 취할 수 있는 원자값들의 집합
- 도메인은 속성들의 취할 수 있는 값들의 논리적인 정의를 가질 수 있다.
- 예시) 휴대폰 번호는 국내에서 개통된 번호를 의미함
- 도메인은 속성들의 데이터 타입 및 표현 형태를 가질 수 있다.
- 예시) 휴대폰 번호는 "XXX-XXXX-XXXX" 형태로 표현함
- 속성 이름은 관계에서 도메인이 수행하는 역할을 지정한다.
- 예시) "가입일자"와 "탈퇴일자"는 모두 "날짜"라는 도메인을 가지지만 각각 다른 의미의 날짜를 가리킨다.
관계 상태 (State of Relation)[편집 | 원본 편집]
속성의 도메인들의 곱집합(cartesian product)의 부분 집합(subset)으로, 특정 시점에 테이블(관계)에 저장된 데이터
- 도메인에 따라 저장될 수 있는 모든 값들 중, 현재 릴레이션 상에 존재하는 값들을 말한다.
- 즉 현재 저장된 데이터를 의미한다.
- 주로 소문자 q, r, s 등으로 표현한다.
- 예시) r(고객)은 고객 릴레이션의 r 상태를 의미함
- r(R) ⊂ dom (A1) X dom (A2) X ....X dom(An)
주장 (Assertion)[편집 | 원본 편집]
데이터베이스에서 표현하는 사실이나 규칙
- 특정 튜플이 데이터베이스의 스키마에 정의된 규칙을 충족하고 있음을 주장
- 데이터베이스의 무결성을 유지하고 데이터가 특정 규칙이나 조건을 따르도록 보장하는 데 사용
- 예시) 특정 테이블에서
EmployeeID
가 고유해야 한다는 규칙
- 예시) 특정 테이블에서
술어 (Predicate)[편집 | 원본 편집]
튜플의 값들이 충족해야 하는 조건을 정의하는 논리적 표현
- 데이터베이스 쿼리에서 사용되는 조건절(WHERE 절)과 비슷한 개념
- 특정 조건을 만족하는 튜플을 선택하거나 필터링하는 데 사용
- 예시)
Age > 18
이라는 predicate는 나이가 18세 이상인 튜플만 선택함
- 예시)
속성(Attribute)[편집 | 원본 편집]
- 릴레이션을 구성하는 각 열
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조의 데이터 필드
- 속성의 수 = 디그리(Degree)
- n의 디그리를 가진 릴레이션 R은 R(A1, A2, A3, ..., An)으로 표현된다.
인스턴스(Instance)[편집 | 원본 편집]
- 속성들에 값이 부여되어 튜플을 이룬 형태
- 릴레이션에 존재하는 데이터를 지칭
(참고) 실용적 용어[편집 | 원본 편집]
현대 DBMS 및 SQL 표준에서 사용하는 용어는 각각 아래와 같다.
이론적 용어 | 실용적 용어 |
---|---|
Relation | 테이블(Table) |
Attribute | 칼럼 헤더(Column Header) |
Domain | 칼럼이 가질 수 있는 값들(All possible Column Values) |
Tuple | 행(Row) |
Schema of a Relation | 테이블 정의(Table Definition) |
State of the Relation | 데이터가 삽입된 테이블(Populated Table) |
릴레이션의 특징[편집 | 원본 편집]
- 모든 튜플은 서로 다른 값을 가진다.
- 동일한 값이 저장될 수 있으나 별개의 값으로 해석된다.
- 하나의 릴레이션에서 튜플의 순서는 무의미하다.
- 실무적으로 삽입된 순서이지만, 이는 보장되지 않는 것으로 본다.
- 각 속성은 릴레이션 내에서 유일한 이름을 가진다.
- 각 속성은 순서를 가질 수 있지만 순서는 중요한 의미를 갖지 않는다.
- 관리적 용도로 순서를 정해놓을 수 있지만 데이터의 논리적 성격과 무관하다.
- 각 튜플의 값들의 의미를 파악하기 위해 각 튜플의 값들은 릴레이션의 속성과 순서가 일치해야 한다는 측면에서 의미를 가질 수 있지만, 이는 데이터의 논리적 성격과는 무관하다. 아래와 같은 self-describing 표현에서는 순서는 무시될 수 있다.
- t= { <name, “John” >, <SSN, 123456789> }
- 모든 속성 값은 원자 값(atomic value)을 가진다.
데이터베이스 키[편집 | 원본 편집]
- 슈퍼 키(Super Key)
- 어떤 릴레이션의 어떠한 튜플들도 같은 값을 가지지 않는 속성, 또는 속성들의 조합
- 유일성 O / 최소성 X
- 후보 키(Candidate Key)
- Tuple을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 유일성 O / 최소성 O
- 기본 키(Primary Key)
- 후보키 중 선정된 Key
- 중복된 값 X / Not Null / 유일성 O / 최소성 O
- 대체 키(Alternate Key)
- 후보 키 중 선정된 기본 키를 뺀 나머지 키들
- 유일성 O / 최소성 O
- 외부 키(Foreign Key)
- 다른 릴레이션의 Primary Key를 참조하는 속성
- 중복된 값 X / Not Null / 유일성 O / 최소성 O
무결성 제약 조건[편집 | 원본 편집]
- Integrity Constraint
- 도메인 제약조건(Domain constraints)
- 각 속성은 반드시 각 속성의 도메인에 속하는 원자값(atom value)이어야 한다.
- 각 칼럼은 그 칼럼의 데이터 타입, 범위에 만족하는 값이어야 한다.
- NULL 제약조건(Constraints on NULLS)
- 각 칼럼은 일반적으론 NULL값을 가질 수 있다.
- NOT NULL로 설정되어 있다면 NULL값을 가질 수 없다.
- 키 제약조건(Key constraints)
- 기본 키(Primary key)나 unique 칼럼은 유일성을 가지고 있어야 한다.
- 개체 무결성 제약조건(Entity integrity constraints)
- 기본 키(Primary key)는 NULL일 수 없다.
- unique칼럼은 중복되지 않거나, NULL이거나 둘 중 하나이다.
- 참조 무결성 제약조건(Referential integrity constraints)
- 참조하는 릴레이션의 튜플들의 외부 키(Foreign key) 속성값은 참조되는 릴레이션 튜플의 기본 키(Primary key) 속성값과 일치하거나 NULL 값을 가져야 한다.
데이터베이스 정규화[편집 | 원본 편집]
- 비정규형 : 아래 모든 경우를 만족하지 않는 경우
- 1NF : 모든 도메인이 원자값. 한 에트리뷰트에는 하나의 값만 들어가야 한다.
- 2NF : 부분적 함수 종속을 제거해야 한다. 즉, 완전 함수적 종속 관계를 만족한다.
- 3NF : 이행적 종속 관계를 제거 해야 한다.
- BCNF : 결정자가 모두 후보키인 경우. 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다.
- 4NF : 다치 종속성이 제거 되어야 한다.
- 5NF : 조인 종속성이 만족 되어야 한다.