일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SW Expert Academy
- 그래프 탐색
- DFS
- BFS
- 깊이우선탐색
- 백준 알고리즘
- 완전탐색
- 파이썬
- 그래프 이론
- 프로그래머스
- 너비우선탐색
- DP
- 구현
- 백트래킹
- 다이나믹 프로그래밍
- 브루트포스 알고리즘
- 스택
- 그리디 알고리즘
- 브루트포스
- 데이터베이스
- 오라클
- oracle
- 백준알고리즘
- 다익스트라
- Python
- 너비 우선 탐색
- javascript
- SWEA
- 자바스크립트
- 문자열
- Today
- Total
민규의 흔적
[오라클 DB] 관계 데이터 모델의 개념과 용어 정리 본문
관계 데이터 모델
지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델 중 하나이다.
1980년대 후반부터 다양한 데이터 모델들이 새로 등장했지만, 관계 DBMS는 여전히 가장 널리 사용되는 DBMS이다.
IBM 연구소의 E.F. Codd가 1970년에 관계 데이터 모델을 제안하였으며, 4가지의 제안 목적을 지닌다.
Codd가 관계 데이터 모델을 제안한 4가지 목적
1. 데이터 독립성 향상 : 데이터베이스 관리의 논리적인 면과 물리적인 면을 명확하게 구분
2. 단순한 데이터 모델
3. 한 번에 다수의 레코드들의 집합을 조작할 수 있는 기능 제공
4. 데이터베이스 관리 분야에 튼튼한 이론적인 근거 제공
최초로 구현한 관계 DBMS 시제품은 1970년 대에 IBM 연구소에서 개발된 System R이다.
관계 데이터 모델이 성공을 거둔 요인
1. 바탕이 되는 데이터 구조로서 간단한 테이블(릴레이션)을 사용
2. 중첩된 복잡한 구조가 없음
3. 집합 위주로 데이터를 처리
4. 숙련되지 않은 사용자도 쉽게 이해할 수 있음
5. 표준 데이터베이스 응용에 대해 좋은 성능을 보임
6. 다른 데이터 모델에 비해 이론이 잘 정립되었음
7. 관계 데이터베이스 설계와 효율적인 질의 처리 면에서 뛰어난 장점을 가짐
-> 사용자는 원하는 데이터(what)만 명시하고, 어떻게 이 데이터를 찾을 것인가(how)는 명시할 필요가 없다.
관계 데이터 모델의 기본 용어
릴레이션(relation)
하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것으로, 파일 관리 시스템 관점에서 파일(file)에 대응된다.
튜플(tuple)
릴레이션의 행으로, 파일 시스템 관점에서는 레코드(record)에 대응된다.
위 릴레이션의 예에서 모든 튜플은 총 4개로 각각 다음과 같다.
4377 | 이성래 | 사장 | 5000000 | 2 |
1003 | 조민희 | 과장 | 3000000 | 2 |
2106 | 김창섭 | 대리 | 2500000 | 2 |
1365 | 김상원 | 사원 | 1500000 | 1 |
카디널리티(cardinality)
한 릴레이션에 들어 있는 튜플들의 수로, 릴레이션의 카디널리티는 시간에 지남에 따라 계속해서 변한다. (데이터가 새로 삽입되면 카디널리티가 증가하고, 반대로 기존의 데이터가 삭제되면 카디널리티가 감소하는 등 시간이 지남에 따라 동적으로 변함.)
유효한 릴레이션은 카디널리티의 값이 0일 수 있다. (튜플의 개수가 0이라는 의미는 릴레이션은 정의되어 있는 상태에서 데이터만 없다는 의미이므로 카디널리티가 0인 릴레이션은 유효한 릴레이션이다.)
위 릴레이션의 예에서 튜플의 수는 4개이며 이는 카디널리티가 4라는 의미와 같다.
애트리뷰트(attribute)
릴레이션의 열로, 파일 시스템 관점에서는 필드(field)에 대응된다.
위 릴레이션의 예에서 애트리뷰트는 총 5개로 EMPNO, EMPNAME, TITLE, SALARY, DNO가 존재한다.
차수(degree)
한 릴레이션에 들어 있는 애트리뷰트들의 수로, 릴레이션의 차수는 자주 바뀌지 않는다.
유효한 릴레이션의 최소 차수는 1이다. (차수가 0이면 애트리뷰트가 없다는 의미이므로 유효한 릴레이션의 가치를 지니지 않음)
위 릴레이션의 예에서 애트리뷰트의 수는 5개이며 이는 차수가 5라는 의미와 같다.
도메인(domain)
한 애트리뷰트가 가질 수 있는 모든 값들의 집합으로, 각 애트리뷰트의 도메인의 값들은 원자값이어야 한다.
프로그래밍 언어의 데이터 타입과 유사하며, 동일한 도메인이 여러 애트리뷰트에서 사용될 수 있다.
예를 들어 회원 정보의 나이(age) 애트리뷰트의 데이터 타입이 정수형이고 범위를 1~200으로 제한하였다면, 나이는 정의된 데이터 타입인 정수형의 모든 범위를 지니는 것이 아닌 일부분으로 한정되었으므로 사용자는 1~200의 범위를 해당 애트리뷰트의 도메인으로 정의해서 사용할 수 있다는 의미이다.
쉽게 말해 도메인이란, 특정 애트리뷰트의 속성값으로 저장될 데이터의 범위를 사용자가 정의하는 사용자 정의 데이터 타입이다.
복합 애트리뷰트나 다치 애트리뷰트는 허용되지 않는다.
복합 애트리뷰트 : 여러 애트리뷰트로 구성된 애트리뷰트
다치 애트리뷰트 : 한 번에 여러 개의 값을 가지는 애트리뷰트
도메인을 명시하는 이유는 다음과 같다.
1. 릴레이션들의 합집합, 교집합, 차집합 등을 제한하기 위함 (무의미한 애트리뷰트끼리의 집합 연산 수행 방지)
2. 의미 있는 연산들만 허용하기 위함 ( 비록 같은 자료형을 지닌 두 애트리뷰트끼리 연산을 수행하여도 의미가 없는 경우가 존재하기 때문에 사용자가 이런 연산을 수행하지 못하도록 막아야 한다.)
예) 부서번호와 나이는 같은 정수형을 가지지만 두 애트리뷰트가 시사하는 데이터의 의미가 다르므로 =, >, < 등의 연산을 수행하는 것에 대해 의미가 없다.
널값(null value)
알려지지 않음(unknown) 또는 적용되지 않음(not applicable)을 나타냄
예를 들어 사원 릴레이션에 새로운 사원에 관한 튜플을 입력하는데, 신입 사원의 부서번호가 결정되지 않았을 수도 있음.
널값은 숫자 도메인의 0이나 문자열 도메인의 공백 문자 또는 공백 문자열과는 별개의 개념이다.
DBMS들마다 널값을 나타내기 위해 서로 다른 기호를 사용한다.
릴레이션 스키마(relation schema)
내포(intension)라고 한다.
릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합으로 릴레이션을 위한 틀(framework)이다.
표기법은 다음과 같다.
릴레이션이름(애트리뷰트1, 애트리뷰트2, ... , 애트리뷰트N)
기본 키 애트리뷰트는 밑줄로 표시한다.
릴레이션 인스턴스(relation instance)
외연(extension)이라고 한다.
릴레이션에 어느 시점에 들어 있는 튜플들의 집합으로 시간의 흐름에 따라 계속 변화한다.
일반적으로 릴레이션에는 현재의 인스턴스만 저장된다.(릴레이션을 보았을 때에는 그 시점의 데이터들만 존재한다는 의미)
관계 데이터베이스 스키마
하나 이상의 릴레이션 스키마들로 이루어짐
DEPARTMENT(DEPTNO, DEPTNAME, FLOOR)
EMPLOYEE(EMPNO, EMPNAME, TITLE, DNO, SALARY)
관계 데이터베이스 인스턴스
릴레이션 인스턴스들의 모임으로 구성됨
관계 데이터 모델의 용어들 정리 및 비교
릴레이션 용어 | 일반적인 용어 | 파일 시스템 용어 |
릴레이션(relation) | 테이블(table) | 파일(file) |
스키마(schema) | 내포(intension) | 헤더(header) |
인스턴스(instance) | 외연(extension) | 데이터(data) |
튜플(tuple) | 행(row) | 레코드(record) |
속성(attribute) | 열(column) | 필드(field) |
'데이터베이스' 카테고리의 다른 글
[오라클 DB] 릴레이션의 키(키의 종류) (0) | 2023.10.18 |
---|---|
[오라클 DB] 릴레이션의 특성 (2) | 2023.10.17 |
[오라클 DB] 데이터 모델과 데이터 모델링 (0) | 2023.10.17 |
[오라클 DB] 데이터베이스 언어(데이터 정의어, 데이터 조작어, 데이터 제어어) (0) | 2023.10.17 |
[오라클 DB] 데이터베이스 구조 - ANSI/SPARC 아키텍쳐 (2) | 2023.10.17 |