1. RDBMS의 정의
a. RDBMS (Relational DataBase Management System)란?
RDB를 관리하는 DBMS
b. DBMS란?
데이터베이스들의 데이터를 CRUD하는, 그 중에서도 Retrieve(read)에 최적화 된 시스템
c. RDB (Relational DataBase)란?
관계형 데이터 모델에 기초를 둔 데이터 베이스
d. 데이터베이스란?
여러 개의 테이블을 묶어서 관리되는 데이터 집합
2. RDBMS에서의 관계란?
RDBMS는 테이블 기반(Table based)으로 데이터를 저장, 관리하는 시스템인데, 일반 DBMS와는 구별하는 특징으론 개체에 특성에 따라 각 테이블(Relation)을 나누고 나눈 테이블 간의 관계를 정의하는 방식의 DBMS이다.
여기서 관계(Relation)는 동일한 구조로 이루어진 튜플(레코드)의 집합으로, 테이블과 유사하다. 하지만 일반적인 테이블들 중에서도, 모든 열이 그 개체들의 특성에 대한 데이터를 저장할 때 이를 Relation이라고 표현한다.
이렇게 나눈 Relation간의 관계를 나타내기 위해서 외래키라는 공통 컬럼을 갖는다.
3. 외래키
a. 외래키의 정의
테이블간의 연결을 정의하는 키로, 다른 테이블의 기본키가 해당 테이블에 존재할 때 그 컬럼을 외래키라고 한다.
FK가 PK인 경우를 식별관계(Identifying Relationship)이라고 부르고, FK가 일반 컬럼인 경우를 비식별관계(Non-Identifying Relationship)이라고 부른다.
이렇게 정의된 관계를 이용하여 테이블 간 조인(Join)을 할 수 있다,
b. 외래키를 활용한 조인
테이블이 여러개로 나누어진 상태에서 원하는 데이터를 찾으려면 두가지 방식이 있다.
1. 하나의 테이블에서 원하는 레코드를 검색하고, 그 레코드를 참조하여 다른 레코드를 검색하여 최종 결과를 산출하는 방식
2. 테이블간의 병합으로, 원하는 레코드를 한번에 찾는 방식
후자의 경우가 더 효율적이라고 한다.
주의해야할 점은 이 조인은 레코드 단위 연산이 아닌 테이블 단위 연산이라는 점이다. 즉, 1개를 찾고싶다고 해서 각 테이블에서 레코드를 하나씩 빼와서 조인할 수 없다는 얘기이다.
이 조인 과정에서는 테이블 간의 공통컬럼이 존재해야하는데, 이 공통컬럼이 위에서 확인한 외래키인것이다.
3. RDBMS의 스키마 정의
그렇다면 이 구조를 어떻게 정의할까?
모델링으로 DB스키마를 만들고 정규화로 업데이트 시켜준다.
모델링 : DB스키마를 만드는 작업으로 개념모델링/논리모델링/물리 모델링으로 나뉜다.
정규화 : DB스키마는 가변적이다. CUD과정에서 발생할 수 있는 이상현상을 제거하기 위해 설계를 재구성할때 사용하는 방식
어떠한 이상현상이 존재할까?
1. Insert : 만약 학생이 아무 과목도 수강하지 않는다고 하면, Subject_opted 컬럼에는 NULL이 들어갈 것입니다.
2. Update : Adam의 Address가 변경되었을 때, 여러줄의 데이터를 갱신해야합니다. 이로인해 데이터의 불일치(inconsistency)가 발생할 수 있습니다.
3. Deletion : 만약 Alex 학생이 과목 수강을 취소한다면 Alex의 레코드가 아예 테이블에서 지워져버립니다.
이러한 이상현상을 제거하기 위해서 1,2,3차 정규화, BCNF, 4,5차 정규화로 나눌 수 있는데 결과적으로는 테이블이 여러개로 나누어지고 나누어진 테이블에 관계를 정의해주어 이런 이상현상을 제거할 수 있다.
간단하게 각 스텝에 대해서 정리해보면
1차에는 모든 레코드에 대해서 각 컬럼엔 하나의 값만 갖게 하고, 2차에선 테이블을 나누어 모든 컬럼이 완전 함수적 종속을 만족시키게 하고, 3차에선 테이블을 나누어 컬럼 간 종속을 없애고, BCNF에서는 테이블을 나누어 일반 컬럼이 후보키를 결정하는 경우를 없앤다.
자세한 내용은 아래를 참고, 정규화에 대한 내용이 정말 잘 설명되어 있는것 같으니 참고하자!
한줄로 정리해보자면 불필요한 데이터를 삭제하고 이상현상을 제거하며 논리적인 데이터 저장구조를 가지도록 명확히 스키마를 정의하는것이 정규화인 것이다.
'학교 공부 > 데이터베이스' 카테고리의 다른 글
오라클의 조인 타입 / 표준 조인과 비표준 조인의 차이점 (0) | 2021.05.05 |
---|---|
1.트랜잭션의 4대 특징, ACID (2) | 2021.05.05 |
DB 인덱스와 Join (0) | 2021.04.15 |
RDBMS의 연산과 키 (0) | 2021.04.15 |
정형 / 반정형 / 비정형 데이터란? (0) | 2021.04.14 |