관계형 데이터 모델: Difference between revisions
From IT위키
(새 문서: ;Relational Data Model 관계형 데이터베이스의 기초가 되는 수학적 모델 ==역사== 관계형 데이터 모델은 기본적으로 집합론에 기반한다. 수학에서 집합은 고유한 객체들의 모음인데, 이와 비슷하게 데이터베이스의 관계(또는 표)는 튜플(행)의 집합으로 볼 수 있으며, 각 튜플은 속성(열)과 값으로 구성된다. 관계형 데이터 모델은 '''E.F. 코드 박사'''(Dr. E.F. Codd)가 1970년에...) |
No edit summary |
||
Line 7: | Line 7: | ||
이 형식적 관계 모델은 향후 실제 구현된 DBMS가 출시되고, SQL 표준이 제정되면서 실용적인 현대의 관계형 데이터베이스로 발전하였다. | 이 형식적 관계 모델은 향후 실제 구현된 DBMS가 출시되고, SQL 표준이 제정되면서 실용적인 현대의 관계형 데이터베이스로 발전하였다. | ||
==관계형 데이터 용어== | ==관계형 데이터 용어== | ||
[[파일:관계형 데이터 모델 용어 정의.png|600x600픽셀]] | |||
=== 스키마 (Schema) === | === 스키마 (Schema) === | ||
Line 55: | Line 56: | ||
* r(R) ⊂ dom (A1) X dom (A2) X ....X dom(An) | * r(R) ⊂ dom (A1) X dom (A2) X ....X dom(An) | ||
=== | === 주장 (Assertion) === | ||
데이터베이스에서 표현하는 사실이나 규칙 | 데이터베이스에서 표현하는 사실이나 규칙 | ||
Line 81: | Line 82: | ||
*속성들에 값이 부여되어 튜플을 이룬 형태 | *속성들에 값이 부여되어 튜플을 이룬 형태 | ||
*릴레이션에 존재하는 데이터를 지칭 | *릴레이션에 존재하는 데이터를 지칭 | ||
===실용적 용어 | ===(참고) 실용적 용어=== | ||
현대 DBMS 및 SQL 표준에서 사용하는 용어는 각각 아래와 같다. | |||
{| class="wikitable" | {| class="wikitable" | ||
!이론적 용어 | !이론적 용어 | ||
Line 104: | Line 106: | ||
|데이터가 삽입된 테이블(Populated Table) | |데이터가 삽입된 테이블(Populated Table) | ||
|} | |} | ||
==릴레이션의 특징== | ==릴레이션의 특징== | ||
*모든 튜플은 서로 다른 값을 가진다. | *모든 튜플은 서로 다른 값을 가진다. | ||
**동일한 값이 저장될 수 있으나 별개의 값으로 | **동일한 값이 저장될 수 있으나 별개의 값으로 해석된다. | ||
*하나의 릴레이션에서 튜플의 순서는 무의미하다. | *하나의 릴레이션에서 튜플의 순서는 무의미하다. | ||
**실무적으로 삽입된 순서이지만, 이는 보장되지 | **실무적으로 삽입된 순서이지만, 이는 보장되지 않는 것으로 본다. | ||
*각 속성은 릴레이션 내에서 유일한 이름을 가진다. | *각 속성은 릴레이션 내에서 유일한 이름을 가진다. | ||
*각 속성은 순서를 가질 수 있지만 순서는 중요한 의미를 갖지 않는다. | *각 속성은 순서를 가질 수 있지만 순서는 중요한 의미를 갖지 않는다. | ||
**관리적 용도로 순서를 정해놓을 수 있지만 데이터의 논리적 성격과 | **관리적 용도로 순서를 정해놓을 수 있지만 데이터의 논리적 성격과 무관하다. | ||
**각 튜플의 값들의 의미를 파악하기 위해 각 튜플의 값들은 릴레이션의 속성과 순서가 일치해야 한다는 측면에서 의미를 가질 수 있지만, 이는 데이터의 논리적 성격과는 무관하다. 아래와 같은 self-describing 표현에서는 순서는 무시될 수 있다. | |||
***t= { <name, “John” >, <SSN, 123456789> } | |||
*모든 속성 값은 원자 값(atomic value)을 가진다. | *모든 속성 값은 원자 값(atomic value)을 가진다. | ||
==[[데이터베이스 키]]== | ==[[데이터베이스 키]]== |
Latest revision as of 07:33, 15 September 2024
- Relational Data Model
관계형 데이터베이스의 기초가 되는 수학적 모델
역사[edit | edit source]
관계형 데이터 모델은 기본적으로 집합론에 기반한다. 수학에서 집합은 고유한 객체들의 모음인데, 이와 비슷하게 데이터베이스의 관계(또는 표)는 튜플(행)의 집합으로 볼 수 있으며, 각 튜플은 속성(열)과 값으로 구성된다. 관계형 데이터 모델은 E.F. 코드 박사(Dr. E.F. Codd)가 1970년에 발표한 논문 “A Relational Model for Large Shared Data Banks”에서 처음 제안되었다. 이 논문은 데이터베이스 분야의 혁신을 가져왔으며, 코드 박사는 이 공로로 ACM 튜링 상을 수상했다.
이 형식적 관계 모델은 향후 실제 구현된 DBMS가 출시되고, SQL 표준이 제정되면서 실용적인 현대의 관계형 데이터베이스로 발전하였다.
관계형 데이터 용어[edit | edit source]
스키마 (Schema)[edit | edit source]
릴레이션의 구조(The Schema (or description) of a Relation)
- R(A1, A2, .....An)과 같이 표현된다.
- R = 릴레이션의 이름
- 주로 대문자 Q, R, S를 사용한다.
- A1, A2, ... An은 릴레이션의 속성들
- 각각의 속성은, 각 속성에 포함될 수 있는 값의 집합인 도메인(Domain)을 가진다.
예시
- 고객(고객ID, 고객명, 휴대폰번호)
- 고객 휴대폰번호의 도메인 = 010으로 시작하는 11자리 숫자
튜플 (Tuple)[edit | edit source]
순서가 있는 값의 집합�
- 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)[edit | edit source]
속성이 취할 수 있는 원자값들의 집합
- 도메인은 속성들의 취할 수 있는 값들의 논리적인 정의를 가질 수 있다.
- 예시) 휴대폰 번호는 국내에서 개통된 번호를 의미함
- 도메인은 속성들의 데이터 타입 및 표현 형태를 가질 수 있다.
- 예시) 휴대폰 번호는 "XXX-XXXX-XXXX" 형태로 표현함
- 속성 이름은 관계에서 도메인이 수행하는 역할을 지정한다.
- 예시) "가입일자"와 "탈퇴일자"는 모두 "날짜"라는 도메인을 가지지만 각각 다른 의미의 날짜를 가리킨다.
관계 상태 (State of Relation)[edit | edit source]
속성의 도메인들의 곱집합(cartesian product)의 부분 집합(subset)으로, 특정 시점에 테이블(관계)에 저장된 데이터
- 도메인에 따라 저장될 수 있는 모든 값들 중, 현재 릴레이션 상에 존재하는 값들을 말한다.
- 즉 현재 저장된 데이터를 의미한다.
- 주로 소문자 q, r, s 등으로 표현한다.
- 예시) r(고객)은 고객 릴레이션의 r 상태를 의미함
- r(R) ⊂ dom (A1) X dom (A2) X ....X dom(An)
주장 (Assertion)[edit | edit source]
데이터베이스에서 표현하는 사실이나 규칙
- 특정 튜플이 데이터베이스의 스키마에 정의된 규칙을 충족하고 있음을 주장
- 데이터베이스의 무결성을 유지하고 데이터가 특정 규칙이나 조건을 따르도록 보장하는 데 사용
- 예시) 특정 테이블에서
EmployeeID
가 고유해야 한다는 규칙
- 예시) 특정 테이블에서
술어 (Predicate)[edit | edit source]
튜플의 값들이 충족해야 하는 조건을 정의하는 논리적 표현
- 데이터베이스 쿼리에서 사용되는 조건절(WHERE 절)과 비슷한 개념
- 특정 조건을 만족하는 튜플을 선택하거나 필터링하는 데 사용
- 예시)
Age > 18
이라는 predicate는 나이가 18세 이상인 튜플만 선택함
- 예시)
속성(Attribute)[edit | edit source]
- 릴레이션을 구성하는 각 열
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조의 데이터 필드
- 속성의 수 = 디그리(Degree)
- n의 디그리를 가진 릴레이션 R은 R(A1, A2, A3, ..., An)으로 표현된다.
인스턴스(Instance)[edit | edit source]
- 속성들에 값이 부여되어 튜플을 이룬 형태
- 릴레이션에 존재하는 데이터를 지칭
(참고) 실용적 용어[edit | edit source]
현대 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) |
릴레이션의 특징[edit | edit source]
- 모든 튜플은 서로 다른 값을 가진다.
- 동일한 값이 저장될 수 있으나 별개의 값으로 해석된다.
- 하나의 릴레이션에서 튜플의 순서는 무의미하다.
- 실무적으로 삽입된 순서이지만, 이는 보장되지 않는 것으로 본다.
- 각 속성은 릴레이션 내에서 유일한 이름을 가진다.
- 각 속성은 순서를 가질 수 있지만 순서는 중요한 의미를 갖지 않는다.
- 관리적 용도로 순서를 정해놓을 수 있지만 데이터의 논리적 성격과 무관하다.
- 각 튜플의 값들의 의미를 파악하기 위해 각 튜플의 값들은 릴레이션의 속성과 순서가 일치해야 한다는 측면에서 의미를 가질 수 있지만, 이는 데이터의 논리적 성격과는 무관하다. 아래와 같은 self-describing 표현에서는 순서는 무시될 수 있다.
- t= { <name, “John” >, <SSN, 123456789> }
- 모든 속성 값은 원자 값(atomic value)을 가진다.
데이터베이스 키[edit | edit source]
- 슈퍼 키(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
무결성 제약 조건[edit | edit source]
- 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 값을 가져야 한다.
데이터베이스 정규화[edit | edit source]
- 비정규형 : 아래 모든 경우를 만족하지 않는 경우
- 1NF : 모든 도메인이 원자값. 한 에트리뷰트에는 하나의 값만 들어가야 한다.
- 2NF : 부분적 함수 종속을 제거해야 한다. 즉, 완전 함수적 종속 관계를 만족한다.
- 3NF : 이행적 종속 관계를 제거 해야 한다.
- BCNF : 결정자가 모두 후보키인 경우. 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다.
- 4NF : 다치 종속성이 제거 되어야 한다.
- 5NF : 조인 종속성이 만족 되어야 한다.