CS 개념 정리

[CS 개념 정리] 관계형 데이터베이스(RDBMS)

Squidward 2022. 11. 10. 03:46

관계형 데이터베이스

: 데이터를 테이블 형태로 저장, 각 테이블이 연결되는 관계를 맺는 DB

용어 정리
* 열(column) : 필드라고도 부르며, 항목의 속성(명칭)을 나타낸다.  필드 마다 각각 정수, 텍스트 같은 데이터 유형을 정할 수 있다. 

* 행(row) : 레코드(record) 라고도 부르며, 각 데이터 항목을 저장한다. 

* 스키마(schema) : 필드는 데이터 유형뿐만 아니라 제약사항도 지정할 수 있는데 이러한 제약사항을 스키마라고 부른다. 예를들어 필드는 중복 값을 해당 행에 저장할 수 없다거나, 반드시 값을 가져야 한다(not null)는 조건 등을 걸 수 있다.


데이터베이스를 사용하는 이유

: 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.

  • 원자성 (Atomicity) : 원자성이란 트랜잭션이 수행하는 연산들을 모두 정상적으로 처리하거나 모두 처리하지 않아야 한다는 all-or-nothing 방식을 의미한다. 

  • 일관성 (Consistency) : 일관성은 트랜잭션이 성공적으로 수행된 이후에도 데이터베이스의 데이터는 일관된 상태를 유지해야 한다는 의미이다.

  • 격리성 (Isolation) : 격리성은 하나의 트랜잭션이 완료될 때까지 다른 트랜잭션이 간섭하지 못하도록 하여 각각의 트랜잭션이 독립적으로 수행되어야 한다는 의미이다.

  • 지속성 (Durability) : 지속성은 트랜잭션이 성공적으로 완료된 이후에 데이터베이스의 데이터들이 영구적으로 보존되어야 한다는 의미이다. 

 

관계형 데이터베이스의 장단점

장점

1. 명확하게 정의 된 스키마
2. 데이터 무결성이 보장된다.
3. 데이터의 분류, 정렬, 탐색 속도가 빠르다.

 

단점

1. 기존에 작성된 스키마를 수정하기 어렵다.
2. 대량의 데이터를 다루는데 비효율적이다.

 

DDL(Data Definition Language, 데이터 정의어)

데이터베이스를 정의하는 언어이며, 데이터리를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어 입니다. 데이터베이스, 테이블등을 생성하는 역할을 합니다.

DML (Data Manipulation Language, 데이터 조작어)

정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어를 말합니다.

DCL(Data Control Language, 데이터 제어어)

COMMIT은 작업 결과를 물리적 디스크로 저장하고, 작업이 정상적으로 완료되었음을 관리자에게 알려주는 명령어 (사진에 잘못기재)

데이터를 제어하는 언어로 데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는데 사용합니다.

 

Key

1) 후보키 (Candidate Key)

* 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합을 의미합니다. 

모든 릴레이션은 반드시 하나 이상의 후보키를 가져야합니다.

* 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야합니다.

 

2) 기본키 (Primary Key)

* 후보키 중에서 선택한 주키(Main Key)

* 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성

Null 값을 가질 수 없습니다. (개체 무결성의 첫번째 조건)

* 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없습니다.(개체 무결성의 두번째 조건)

 

3) 대체키 (Alternate Key)

후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말합니다.

* 보조키라고도 합니다.

 

4) 슈퍼키 (Super Key)

슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않습니다. 

* 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못합니다.

 

5) 외래키 (Foreign Key)

* 관계(Relation)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성

* 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용됩니다.

Join

두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 말합니다.
조인이 필요한 이유는 정규화에서 출발합니다.
정규화란 불필요한 데이터의 정합성을 확보하고 이상현상 발생을 피하기 위해, 테이블을 분할하여 생성하는 것을 말합니다.
 

[DATABASE] 조인이란?

조인 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 말합니다.조인이 필요한 이유는 정규화에서 출발합니다.정규화란 불필요한 데이터의 정합성을 확보하고 이상현상

mozi.tistory.com

 

이상 현상과 정규화

정규화

Attribute 간의 종속성으로 인한 이상현상이 발생하는 릴레이션을 분해하여 재디자인함으로써 이상현상을 없애는 과정
데이터의 중복 방지, 무결성을 충족하기 위해 데이터베이스를 설계하는 방법

정규화 3가지 원칙

1. 정보의 무손실 : 분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함해야 한다.

2. 최소 데이터 중복 : 이상 현상을 제거, 데이터 중복을 최소화

3. 분리의 원칙 : 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리해서 표현

 

정규화의 장점

- 각종 이상 현상들을 해결할 수 있다. 

- 새로운 속성의 추가로 인해 DB 구조를 확장하는 경우, 구조의 변경을 최소화할 수 있다. 따라서 DB와 연동된 응용프로그램에 최소한의 영향만을 미쳐 응용프로그램의 생명을 연장시킨다. 

- 정규화된 릴레이션 간의 관계가 현실 세계에서의 개념들간의 관계를 잘 보여준다. 

 

반면, 릴레이션의 분해로 인해 릴레이션간의 연산이 많아져 응답 시간이 오히려 느려질 수도 있는 단점이 있다.

이러한 경우 반정규화(De-normalization)을 통해서 성능을 향상시킬 수 있다.

 

1NF

: 행과 열의 순서에 영향을 받지 않으며 (원래 DB 는 영향을 안받는다.), 모든 항목에 값이 있어야하며(NULL 허용안함), 중복 기능 열이 없어야 한다. 중복되는 항목이 없어야 한다 (도메인이 원자값만으로 되어 있어야 함)

2NF

: 이행적 함수 종속이 있을 경우, 그것을 쪼갬.(부분 함수적 종속 관계를 제거해야 함)

3NF

: 계산열 제거.( 이행적 함수 종속이 없는 것)이행 함수적 종속 (x -> y ->z) 제거

BCNF

: 결정자이면서 후보키가 아닌 것 제거

제4정규형

: 다치 종속 제거

제5정규형

: 조인 종속성 제거 (조인했다가 다시 합치며 필요없는 데이터가 생겨나는 것 - 조인종속성)

 

 

정규화(Normalization) - 1차 2차 3차 BCNF

정규화 데이터베이스의 설계를 재구성하는 테크닉. 불필요한 데이터(redundancy)제거. 삽입/갱신/삭제 시 발생할 수 있는 각종 이상현상(Anamolies)들을 방지. "논리적"로 데이터를 저장 - 데이터 테이

jiyoungtt.tistory.com

이상 현상의 종류

1. 삽입 이상 

데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제

 

2. 갱신 이상

중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 문제

 

3. 삭제 이상

튜플을 삭제하면 꼭 필요한 데이터까지 같이 삭제되는 데이터 손실 문제

728x90