relation database management system 줄여서 RDMS는 데이터의 relational model이라는 이론에 근거를 두고 있다.
relational model은
1) 구조로서 데이터를 테이블로 제공
2) 제약조건으로 데이터 integrity를 만족
3) 테이블에 대한 연산 결과도 테이블로 유도하는 set 연산을 기반으로 함
즉 응용 프로그램에게 제공하는 API로서 추상화한 테이블을 제공하는 것이다.
이렇게 추상화된 테이블은 simple structure로서 simple interface를 제공한다.
(복잡한 구현은 DBMS가 담당한다.)
이와같이, 추상화된 simple structure로서 테이블들의 집합을 데이터베이스로 보는 것이 relational database system이다.
relational data model의 operator는 기존 테이블에 대하여 새로운 테이블을 결과로 return하는 연산자이다.
-select(또는 restrict)는 테이블에서 레코드들을 뽑아내는 연산자이다.
-project는 테이블의 column을 뽑아낸다.
-join은 두개의 테이블에 대하여 공통 column의 같은 값을 토대로 두 테이블의 레코드를 합치는 것이다.
위 함수의 결과들은 또 다른 테이블을 만들기 때문에 set(집합) 연산자에 기반을 둔다.
집합에 대한 연산 결과가 집합일 대 이를 닫혀(closed)있다라고 표현한다.
집합 연산자가 닫혀 있다는 말은 집합 연산자가 얼마든지 nesting(이것은 집합 연산자의 결과에 대하여 또 다시 집합 연산자를 적용하는 것을 말한다.)연산 표현이 가능하다는 말이다.
테이블에 대한 연산자도 닫혀 있으므로 테이블의 연산자들에 대하여 nesting 표현이 가능하므로 relational expression의 표현력이 무궁무진해지는 이점을 갖는다.
closure?
relational operator가 닫혀 있다는 표현 용어로서 closure를 사용한다.closure는 한 operator의 입력이 테이블이고 결과도 테이블이 되는 것을 말한다.이러한 closure 성질은 relational operator를 사용하여 nested expression이 가능하게 한다.nested expression의 예로서 project(join), join(project, project), restrict(project) 등으로 relational operator를 procedual 하게 표현할 수 있다.
relational 연산자는 set-at-a-time이지 row-at-a-time이 아니다. 이것을 set processing capability라 한다.select, project, join 등의 relational 연산자는 입력도 relation이고 출력도 relation인 것이while(), for() 문에 의한 개별 레코드를 처리하는 프로그래밍 언어와 가장 뚜렷한 차이를 보여주는 특징이다.
relational model에서 테이블은 logical 구조이지 physical 저장 구조를 나타내는 것은 아니다. 사용자에게 저장 레코드의 물리적 구조, 인덱스와 같은 접근 방법은 숨겨져 있는 구조이다.이 테이블에 저장되는 값은 explicit data values만 가능하다. explicit 값은 pointer값은 허용하지 않는다.한 테이블에서 다른 테이블을 연결할 때도 pointer를 사용하지 않는다. explicit값만 허용하는 이유는 set operation을 지원하기 위해서이다.이러한 배경에는 simple structure가 되어야 simple operator를 정의할 수 있기 때문이다. 또한, 모든 row-and-column의 값은 atomic이어야한다. 즉, 정확히 하나의 데이터 값을 표현해야 한다.(여러개의 값들의 그룹을 repeating group이라고 하고 각 row의 column 값이 repeating group을 갖지 않는 것을 atomic이라 한다.)repeating group을 테이블의 row-and-column에 포함하는 것을 unnormalzied relation이라 하고,repeating group이 없는 테이블을 normalized relation이라 한다.
relational 데이터베이스의 참조 integrity는 primary key와 foreign key로 표현된다.primary key는 각 row가 unique key값을 갖는 것을 말한다. 이것은 테이블이 set이기 때문에 중복이 없어야 한다는 성질을 구현하는 수단이다. foreign key는 다른 테이블의 primary key를 reference한다는 것을 말한다.
참고: 데이터베이스 SQL프로그래밍(MySQL실습), 홍봉희 편저, 부산대학교 출판문화원, 2022
'대학원 공부 > 데이터베이스' 카테고리의 다른 글
[DB] Relational 데이터 모델 (0) | 2022.11.04 |
---|---|
[DB] 분산 데이터베이스 처리 (0) | 2022.11.02 |
[DB] 데이터베이스 시스템 구조Ⅱ(Database System Architecture Ⅱ) (0) | 2022.11.02 |
[DB] 데이터베이스 시스템 구조(Database System Architecture) (0) | 2022.11.01 |
[DB] 데이터 독립성(Data Independence) (0) | 2022.10.31 |